On Fri, Dec 7, 2018 at 8:36 AM Wookey <[email protected]> wrote: > On 2018-12-07 08:27 -0800, John Horigan wrote: > > I maintain a static library package, libagg-dev. There is an outstanding > > request for a shared library of libagg. I'm leaving the original > libagg-dev > > binary package as it is, with just the static libraries. I'm adding > binary > > packages libagg2-dev and libagg2. libagg2-dev has everything that > libagg-dev > > has, plus the shared library. libagg2 has just the shared library. > > This is atypical for debian packages. Normally the library package > libfoo is shared, and the libfoo-dev package contains the static > version. You already have the static version in libagg-dev, so why not > just add libagg as the shared version, and be like any other library > in debian? > > That makes much more sense. I tried it, and the packages all build with no lintian errors or warnings. I was able to remove all my lintian overrides too.
> Can you explain why you think there should be two -dev packages? > > If I create a new version of libagg-dev package and add shared libraries then dependent packages that use the new version will link against the shared library instead of the static library. The resulting binaries will then depend on the shared libraries being installed. Wouldn't this break things? I created libagg2-dev so that libagg-dev users would not get shared libraries that they don't expect. > > I can't find any definitive information about what should be in a shared > > library SONAME-dev package and SONAME (runtime) package in the /usr/lib/ > > <triple> directory. But I looked at the installed files in many > libfoo-dev/ > > libfoo package pairs and it seems like I should have this: > > > > ~john$ ls -l libagg2-dev/usr/lib/x86_64-linux-gnu/ > > total 1584 > > -rw-r--r-- 1 root root 219072 Dec 6 23:14 libagg.so > > ~john$ ls -l libagg2/usr/lib/x86_64-linux-gnu/ > > total 216 > > lrwxrwxrwx 1 root root 15 Dec 6 23:14 libagg.so.2 -> libagg.so.2.0.4 > > -rw-r--r-- 1 root root 219072 Dec 6 23:14 libagg.so.2.0.4 > > > > libagg2-dev has the .so file with the name libagg.so and libagg2 has the > .so > > file with the name libagg.so.2.0.4 and the symlink libagg.so.2. > > > > But I get a lintian error: > > > > E: libagg2-dev: ldconfig-symlink-missing-for-shlib > usr/lib/x86_64-linux-gnu/ > > libagg.so.2 usr/lib/x86_64-linux-gnu/libagg.so libagg.so.2 > > > > I also put in lintian overrides because libagg2-dev installs a .so file > with > > the SONAME libagg2 but the package is called libagg2-dev: > > > > libagg2-dev binary: package-name-doesnt-match-sonames * > > libagg2-dev binary: non-dev-pkg-with-shlib-symlink * > > > > So what is the deal with -DEV packages and shared libraries? What am I > supposed > > to do? > > I can help explain this in more detail (as I've been doing a lot of > this recently, and I agree it's confusing), but lets sort out whether > you really need libagg-dev _and_ libagg2-dev first. I think you don't, > and that's just complicating matters. > > Wookey > -- > Principal hats: Linaro, Debian, Wookware, ARM > http://wookware.org/ >

