[oe] [RFC] granular library packaging

Koen Kooi k.kooi at student.utwente.nl
Mon Oct 6 14:00:44 UTC 2008


Hi,

I tried to come up with a way to make splitting up library packages a 
bit easier an used this in the opencv recipe:

python populate_packages_prepend () {
	cv_libdir = bb.data.expand('${libdir}', d)
	cv_libdir_dbg = bb.data.expand('${libdir}/.debug', d)
	do_split_packages(d, cv_libdir, '^lib(.*)\.so$', 'lib%s-dev', 'OpenCV 
%s development package', extra_depends='${PN}-dev', allow_links=True)
	do_split_packages(d, cv_libdir, '^lib(.*)\.la$', 'lib%s-dev', 'OpenCV 
%s development package', extra_depends='${PN}-dev')
	do_split_packages(d, cv_libdir, '^lib(.*)\.a$', 'lib%s-dev', 'OpenCV %s 
development package', extra_depends='${PN}-dev')
	do_split_packages(d, cv_libdir, '^lib(.*)\.so\.*', 'lib%s', 'OpenCV %s 
library', extra_depends='', allow_links=True)
}

FILES_${PN} = "${bindir}"
FILES_${PN}-dbg += "${libdir}/.debug"
FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig"

The advantages of this:

* all libs get their own package
* .so, .a and .la files end up in the right package
* lib<foo>-dev depends on the headers in ${PN}-dev keeping the depchains 
intact

The downsides:

* populate_packages_prepend runs *before* do_strip, so there's on big 
-dbg package to rule them all
* doesn't handle granular pkgconfig files.

I had a chat with Richard about it and we agreed that this needs some 
more thought, especially wrt depencies and granular packaging. My 
motivation for splitting things is to make using gdb less space-heavy 
due to pulling in a huge -dbg package that depends on extra, unneeded 
libs. As I pointed out above, that is sadly the case here since do_strip 
runs too late.

So, what are your opinions on splitting -dev and -dbg packages and would 
something like this be acceptable to put in lib_package.bbclass?

Note that a regexp based FILES is a related, but different discussion.


regards,

Koen






More information about the Openembedded-devel mailing list