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

Re: Having trouble creating a shared library package





On Fri, Dec 7, 2018 at 8:36 AM Wookey <wookey@wookware.org> 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/

Reply to: