On Tue, Dec 22, 2020 at 10:18:03PM -0500, Pierre Abbat wrote: > On Tuesday, December 22, 2020 11:24:02 AM EST Colin Watson wrote: > > This is a reasonable mailing list, but people are likely to need a > > pointer to your existing packaging. > > The PPA is https://launchpad.net/~phma-a/+archive/ubuntu/testing , and the > original tarball is at http://bezitopo.org/perfecttin/download.html . The > library is Plytapus. The Git repo is at https://github.com/phma/plytapus . > > Installing results in these files in /usr/lib: > libplytapus.a libplytapus.so libplytapus.so.0.6.0 > and these files in /usr/include: > plytapus.h > plytapus: > config.h textio.h > > plytapus-dev.install says this: > usr/include/* > usr/lib/lib*.so > > plytapus1.install (I don't know what the 1 is for) says this: > usr/lib/lib*.so.* > usr/lib/lib*.a > > But while the resulting plytapus-dev package contains the header files, the > plytapus package does not contain the libplytapus files.
You have a few problems here. 1) The upstream build system installs to .../usr/lib/lib*.so.*, but in the version of your packaging that I downloaded debian/plytapus1.install says "usr/lib/*/lib*.so.*", not "usr/lib/lib*.so.*" as you quoted above. You need to drop the "/*" bit. (I'm guessing that you used dh-make, and it's assuming that the upstream cmake configuration follows the recommendation in https://wiki.debian.org/Multiarch/Implementation#CMake, but this package doesn't do that; so you need to either make the packaging expect pre-multiarch paths or change the upstream cmake configuration to be multiarch-friendly as in that wiki page.) 2) debian/control has the runtime library package name as "plytapus", which means that debian/plytapus1.* are entirely ignored. 3) Library package names should start with "lib". 4) The "1" bit is currently incorrect anyway; https://www.debian.org/doc/debian-policy/ch-sharedlibs.html says that it should match the version number in the library's SONAME, which in this case is "0.6.0" (you can use "objdump -p" on the .so file to see it). You'll need to make sure to change this any time the upstream SONAME changes. 5) It looks as though you aren't currently setting a SONAME explicitly in the upstream cmake configuration and are just leaving cmake to guess at one. Perhaps this is unintentional, since it amounts to saying that every new upstream release may be entirely ABI-incompatible with every previous one. If this isn't what you meant, then you should set SOVERSION in the upstream cmake configuration (I think; I'm not very fluent in cmake) and possibly read up on the sorts of things you need to do when maintaining a C++ library interface. Symbols files (https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#dependencies-between-the-library-and-other-packages) are a useful discipline if possible. So, putting that together, you should remove the "/*" from debian/plytapus1.install. You should rename debian/plytapus1.install to debian/libplytapus0.6.0.install and debian/plytapus-dev.install to debian/libplytapus-dev.install. You should change the two "Package:" lines in debian/control from plytapus-dev and plytapus to libplytapus-dev and libplytapus0.6.0, and also adjust libplytapus-dev's Depends line to match. You can also remove debian/*.dirs entirely since they don't seem to be needed. And I'd recommend sorting out the upstream ABI situation, after which you'll need to adjust the library package names again to match (if your library in fact has a fairly stable ABI, then you'll be rewarded by not having to change the binary package names for a while). -- Colin Watson (he/him) [cjwat...@canonical.com] _______________________________________________ Mailing list: https://launchpad.net/~launchpad-users Post to : launchpad-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~launchpad-users More help : https://help.launchpad.net/ListHelp