[csw-maintainers] An idea for a shared libraries policy

Maciej (Matchek) Blizinski maciej at opencsw.org
Thu Sep 30 08:33:18 CEST 2010


I ran my new code against the whole catalog to see what happens: how
many shared libraries are there, what are they, etc.  Here's the
report:

http://bender.opencsw.org/~maciej/shlib-tags.txt

Please bear in mind that it is the first iteration.

The check makes good suggestions for some packages, but crappy for
others.  It also does not do any grouping.  An example of a good
suggestion:

file=opt/csw/lib/libfaac.so.0.0.0 pkgname=CSWfaac
expected=['CSWlibfaac0', 'CSWlibfaac-0']
file=opt/csw/lib/sparcv9/libfaac.so.0.0.0 pkgname=CSWfaac
expected=['CSWlibfaac0', 'CSWlibfaac-0']

A good example of a bad suggestion:

file=opt/csw/lib/vhook/drawtext.so pkgname=CSWffmpeg expected=['CSWdrawtext']
file=opt/csw/lib/vhook/fish.so pkgname=CSWffmpeg expected=['CSWfish']
file=opt/csw/lib/vhook/imlib2.so pkgname=CSWffmpeg expected=['CSWimlib2']
file=opt/csw/lib/vhook/null.so pkgname=CSWffmpeg expected=['CSWnull']
file=opt/csw/lib/vhook/ppm.so pkgname=CSWffmpeg expected=['CSWppm']

I don't have a good idea for automating these. CSWnull is a poor
suggestion, but I don't have a better one myself.  These are weird
shared object files, without sonames, without versions, in a
subdirectory under lib.  Perhaps these should be excluded from the
check at all.  There are 3 other files in CSWffmpeg:

file=opt/csw/lib/libavcodec-0.4.9-pre1.so pkgname=CSWffmpeg
expected=['CSWlibavcodec-0-4-9-pre1']
file=opt/csw/lib/libavformat-0.4.9-pre1.so pkgname=CSWffmpeg
expected=['CSWlibavformat-0-4-9-pre1']
file=opt/csw/lib/libpostproc.so.0.0.1 pkgname=CSWffmpeg
expected=['CSWlibpostproc0', 'CSWlibpostproc-0']

With these three, I don't know myself - does it make sense to separate
these 3 libraries?  Two of them seem to have the version in sync, but
the version is entangled with the library name, instead of being
located after the ".so" bit, where nature intended.

There are 2 general categories of rules: one is figuring out how to
exclude libraries; how to choose the ones that are unlikely to be
linked to, such as
/opt/csw/lib/gnucash/libgncmod-register-core.so.0.0.0.  The second one
is how to figure out sensible groups of shared libraries to contain
within one package.

There's also the idea that checkpkg could get hints from elsewhere in
the package.  For example, a special flag in pkginfo could hint about
the shared libraries. It's only a vague idea at the moment.

If people have ideas for rules for handling these suggestions, please
share them.  If you maintain a package with shared library, you can
locate the relevant part of the report, quote it and suggest what you
believe would be a good file/package layout in your case.


More information about the maintainers mailing list