[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#83669: Shared libraries



Package: debian-policy
Version: 3.2.1.2

(We've had this argument before, and it degenerated into the policy
process row.  It seems that Wichert is unwilling to act to fix the
process, so I'll just reopen the issue like this.  I can't find it in
the archives anywhere.)

Currently, wrt shared libraries, we mandate (or do) this:

 foo2 (2.1)     /usr/lib/libfoo.so.2 -> libfoo.so.2.1
                /usr/lib/libfoo.so.2.1                  (actual library)

 foo-dev (2.1)  /usr/include/foo.h
                /usr/lib/libfoo.so -> libfoo.so.2

The effect is that foo-dev (2.1) has to have a dependency on foo2
(2.1) because otherwise you might compile against a .so file and
headers from different versions.

This is bad because it makes it hard to upgrade your runtime
environment to run new versions of things without also making your
compilation environment generate new and incompatible binaries.

We can and should fix this by doing this instead:

 foo2 (2.1)     /usr/lib/libfoo.so.2 -> libfoo.so.2.1
                /usr/lib/libfoo.so.2.1                  (actual library)

 foo-dev (2.1)  /usr/include/foo.h
                /usr/lib/libfoo.so              (copy of actual library)

Now foo-dev (2.1) doesn't need to Depend on any particular version of
foo2; >= 2.1 will do.  So you can upgrade foo2 without breaking your
foo-dev.

We should try to do this sooner rather than later, because it's
straightforward and almost entirely a good thing.  The only downside
is that the -dev package wastes some disk space if it happens to be
the same version as the shlib package.

Ian.



Reply to: