Debian package

Cristian Ionescu-Idbohrn cristian.ionescu-idbohrn at axis.com
Wed Feb 20 10:21:07 PST 2013


On Wed, 20 Feb 2013, Pierre-Yves Chibon wrote:
> On Wed, 2013-02-20 at 09:07 -0800, Dirk Hohndel wrote:
> > Roland Dreier <roland.dreier at gmail.com> writes:
> >
> > > On Wed, Feb 20, 2013 at 7:41 AM, Dirk Hohndel <dirk at hohndel.org> wrote:
> > >> So we are calling v0.3 libdivecomputer1?
> > >
> > > I think it has to be libdivecomputer0, because the soname that the
> > > actual v0.3 release builds is 0.
> > >
> > > But yeah, if v0.4 is ABI incompatible with v0.3, then it should have
> > > soname 1 and be libdivecomputer1, etc.
> >
> > Or we link statically - like Linus suggests. That makes all this pain go
> > away.
>
> FIW, this is what I am doing in the Fedora package, that at least until
> libdivecomputer becomes more stable from an API/ABI pov.
> And yes, this means I have a strict dependency to a very specific
> version of libdivecomputer in subsurface.

FWIW.  Subsurface in the debian package with the same name _is_ staticaly
linked against libdivecomputer, as this shows:

$ readelf -a /usr/bin/subsurface | egrep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libxml2.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libxslt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libgtk-x11-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgdk-x11-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libatk-1.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgio-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libpangoft2-1.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libpangocairo-1.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgdk_pixbuf-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libcairo.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libpango-1.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libfreetype.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libfontconfig.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libgobject-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libglib-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgconf-2.so.4]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]

I have the subsurface package installed.  And I have no libdivecomputer*
installed.

But, according to policy (I guess), there must be a libdivecomputer0
(current) and it's pair libdivecomputer-dev which depends on a versioned
libdivecomputer0 (= 0.1.0-3).  It's a pitty that Khalid seems MIA.  He
could explain.

So, it seems to me that making a libdivecomputer1 and the
libdivecomputer-dev pair is the way to handle this.

Here's the package lists:

$ apt-file list libdivecomputer0 | sort
libdivecomputer0: /usr/bin/universal
libdivecomputer0: /usr/lib/x86_64-linux-gnu/libdivecomputer.so.0
libdivecomputer0: /usr/lib/x86_64-linux-gnu/libdivecomputer.so.0.0.0
libdivecomputer0: /usr/share/doc/libdivecomputer0/NEWS.gz
libdivecomputer0: /usr/share/doc/libdivecomputer0/README.Debian
libdivecomputer0: /usr/share/doc/libdivecomputer0/changelog.Debian.gz
libdivecomputer0: /usr/share/doc/libdivecomputer0/copyright
libdivecomputer0: /usr/share/lintian/overrides/libdivecomputer0
libdivecomputer0: /usr/share/man/man1/universal.1.gz

$ apt-file list libdivecomputer-dev | sort
libdivecomputer-dev: /usr/include/libdivecomputer/atomics.h
libdivecomputer-dev: /usr/include/libdivecomputer/atomics_cobalt.h
libdivecomputer-dev: /usr/include/libdivecomputer/buffer.h
libdivecomputer-dev: /usr/include/libdivecomputer/cressi.h
libdivecomputer-dev: /usr/include/libdivecomputer/cressi_edy.h
libdivecomputer-dev: /usr/include/libdivecomputer/datetime.h
libdivecomputer-dev: /usr/include/libdivecomputer/device.h
libdivecomputer-dev: /usr/include/libdivecomputer/hw.h
libdivecomputer-dev: /usr/include/libdivecomputer/hw_ostc.h
libdivecomputer-dev: /usr/include/libdivecomputer/mares.h
libdivecomputer-dev: /usr/include/libdivecomputer/mares_darwin.h
libdivecomputer-dev: /usr/include/libdivecomputer/mares_iconhd.h
libdivecomputer-dev: /usr/include/libdivecomputer/mares_nemo.h
libdivecomputer-dev: /usr/include/libdivecomputer/mares_puck.h
libdivecomputer-dev: /usr/include/libdivecomputer/oceanic.h
libdivecomputer-dev: /usr/include/libdivecomputer/oceanic_atom2.h
libdivecomputer-dev: /usr/include/libdivecomputer/oceanic_veo250.h
libdivecomputer-dev: /usr/include/libdivecomputer/oceanic_vtpro.h
libdivecomputer-dev: /usr/include/libdivecomputer/parser.h
libdivecomputer-dev: /usr/include/libdivecomputer/reefnet.h
libdivecomputer-dev: /usr/include/libdivecomputer/reefnet_sensus.h
libdivecomputer-dev: /usr/include/libdivecomputer/reefnet_sensuspro.h
libdivecomputer-dev: /usr/include/libdivecomputer/reefnet_sensusultra.h
libdivecomputer-dev: /usr/include/libdivecomputer/suunto.h
libdivecomputer-dev: /usr/include/libdivecomputer/suunto_d9.h
libdivecomputer-dev: /usr/include/libdivecomputer/suunto_eon.h
libdivecomputer-dev: /usr/include/libdivecomputer/suunto_solution.h
libdivecomputer-dev: /usr/include/libdivecomputer/suunto_vyper.h
libdivecomputer-dev: /usr/include/libdivecomputer/suunto_vyper2.h
libdivecomputer-dev: /usr/include/libdivecomputer/units.h
libdivecomputer-dev: /usr/include/libdivecomputer/utils.h
libdivecomputer-dev: /usr/include/libdivecomputer/uwatec.h
libdivecomputer-dev: /usr/include/libdivecomputer/uwatec_aladin.h
libdivecomputer-dev: /usr/include/libdivecomputer/uwatec_memomouse.h
libdivecomputer-dev: /usr/include/libdivecomputer/uwatec_smart.h
libdivecomputer-dev: /usr/include/libdivecomputer/version.h
libdivecomputer-dev: /usr/include/libdivecomputer/zeagle.h
libdivecomputer-dev: /usr/include/libdivecomputer/zeagle_n2ition3.h
libdivecomputer-dev: /usr/lib/x86_64-linux-gnu/libdivecomputer.a
libdivecomputer-dev: /usr/lib/x86_64-linux-gnu/libdivecomputer.so
libdivecomputer-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/libdivecomputer.pc
libdivecomputer-dev: /usr/share/doc/libdivecomputer-dev/README.Debian
libdivecomputer-dev: /usr/share/doc/libdivecomputer-dev/changelog.Debian.gz
libdivecomputer-dev: /usr/share/doc/libdivecomputer-dev/copyright

Study the subsurface package source and you'll find out.  There's a series
of patches, IIRC, in the source package.  That might be interesting to
look into, as well.

If that's the best way to do it, I don't know.  But the packages were
accepted and at least one debian user (me) installed it on several
computers.


Cheers,

-- 
Cristian


More information about the subsurface mailing list