[Jack-Devel] jack Debian packaging?

Paul Davis paul at linuxaudiosystems.com
Mon Mar 16 02:25:49 UTC 2009


On Sun, Mar 15, 2009 at 2:18 PM, Adrian Knoth <adi at drcomp.erfurt.thur.de>wrote:

> Hi!
>
> I've just seen
>
> jackd/configure.ac:
>
> echo "WARNING: ON ANY DEBIAN-DERIVED DISTRIBUTION (Debian, Ubuntu etc)"
> echo "CHANGING THE INSTALLATION PREFIX WILL NOT PRODUCE A WORKING JACK"
> echo "INSTALL. Please contact the distribution packager for JACK and"
> echo "ask them to fix their packaging."
> echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
> exit 1
>
>
> Since jackd is team-maintained in Debian, I feel responsible for this
> one.
>
> What's wrong with current packaging? (and how do you want it to be
> changed?)


Ever since JACK was first packaged on debian, it has been done wrong.

Somebody decided to added a "library version"  to the installed .so file, so
that rather than the used-name of the library file being called

         $prefix/libjack.so.M.m.n

it is called

         $prefix/libjack-0.100.0.so.M.m.n

libjack.so.0.100.0 is a symlink to the -0.100.0. version, not the other way
around.

Then, all packages of JACK clients on debian (and derived systems) are built
so that the client has run-time linkage dependency on libjack-0.100.0 and
not on libjack. This was done, it was claimed years ago, "to protect clients
from changes in the API".

First of all, it is not the responsibility of a distribution packager to
"protect clients from changes in the API". Either you do this by consistent
packaging, or you can't do it at all. Secondly, this is not done with (for
example) X or NFS, which are about the closest to JACK as examples that have
both a library *and* a server and the two must be in sync. Thirdly, this
completely ignores standard Unix/Linux/Posix library versioning (the M.m.n
part of the names above) which is the correct way to manage library version
dependency. The fact that we (the JACK team) set M, m and n and do not
change them unless we need to seems to have escaped the entire debian
packing project. It has never been clear to me what made the original Debian
packagers of JACK think that they needed to or should or even could add
their own "versioning" component to the name of the library.

The JACK source tree does not build libjack-0.100.0, and it does not do
anything with symlinks. The result is that when a user updates their JACK
system (which they generally need to do because Debian is very slow to pick
up new versions), they end up with the new library installed as
libjack.so.M.m.n, whereas clients are still attempting to link to
libjack-0.100.0.so.M.m.n. Since this does not point (in any way) to the new
version, clients fail to work.

Preferred solution: drop libjack-<ANYTHING>.so.M.m.n and revert to just
libjack.so.M.m.n
Weaker but workable solution: make libjack-0.100.0.so.M.m.n a link to
libjack.so.M..n rather than the other way around.  Note that "0.100.0" is a
meaningless name.

Thanks for asking. This is one of the most common sources of user confusion
on the IRC channel #jack and we would surely love to see it fixed after all
these years.

--p
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.alioth.debian.org/pipermail/pkg-multimedia-maintainers/attachments/20090315/225da5d8/attachment.htm 


More information about the pkg-multimedia-maintainers mailing list