I have USE="doc" enabled and I've spotted the following problem while emerging some packages: /usr/bin/openjade: error while loading shared libraries: libosp.so.3: cannot open shared object file: No such file or directory The above was seen while emerging libgphoto2. It looks like an old bug, which creeps here and there. I've seen that bug #62789 has some hints about this, as well as bug #58392. Some solutions to the bug #81148 even propose making hard links from libosp.so.4 to libosp.so.3. I added myself a comment to the bug #85108. Problem described there applies for my home amd64 system, but recently I've found more evidence on x86 machine at work: # revdep-rebuild -p openjade Checking reverse dependencies... Packages containing binaries and libraries broken by any package update, will be recompiled. Collecting system binaries and libraries... done. (/root/.revdep-rebuild.1_files) Collecting complete LD_LIBRARY_PATH... done. (/root/.revdep-rebuild.2_ldpath) Checking dynamic linking consistency... broken /usr/bin/openjade (requires libosp.so.3) Letting the revdep-rebuild do its job, or running manually: # emerge --oneshot --nodeps -p openjade resolves the problem. So the question is if we can get the support from portage to automatically handle the right dependencies? Reproducible: Sometimes Steps to Reproduce: 1. put USE="doc" in make.conf 2. install gentoo with 2005.0 profile 3. "emerge gnome" (?) or "emerge -pvuD kde-meta" Actual Results: The problem manifests itself as follows: ==== ... cd . && gtkdoc-mkdb --module=gphoto2-port --source-dir=../libgphoto2_port WARNING: No declaration for: GP_ERROR_IO_CLOSE WARNING: No declaration for: GP_ERROR_IO_OPEN WARNING: No declaration for: GP_ERROR_IO_PIN WARNING: No declaration for: GP_ERROR_IO_SERIAL_BREAK WARNING: No declaration for: GP_ERROR_IO_SERIAL_FLUSH WARNING: No declaration for: GP_ERROR_IO_TIMEOUT WARNING: Parameter description missing in source code comment block - Func: GP_LOG Param: params.... WARNING: Parameter described in source code comment block but does not exist - Func: GP_LOG Param: params. WARNING: Parameter description missing in source code comment block - Func: GP_DEBUG Param: params.... WARNING: Parameter described in source code comment block but does not exist - Func: GP_DEBUG Param: params. WARNING: No declaration for: <TITLE>GPhoto2-Port-USB</FILE> WARNING: No declaration for: <TITLE>GPhoto2-Port-Serial</FILE> 28% symbol docs coverage (32 symbols documented, 84 not documented) See gphoto2-port-undocumented.txt for a list of missing docs. The doc coverage percentage doesn't include intro sections. if ! test -d html ; then mkdir html ; fi cd html && gtkdoc-mkhtml gphoto2-port .././gphoto2-port-api.sgml /usr/bin/openjade: error while loading shared libraries: libosp.so.3: cannot open shared object file: No such file or directory make[4]: *** [html] Error 127 make[4]: Leaving directory `/var/tmp/portage/libgphoto2-2.1.4/work/libgphoto2-2.1.4/libgphoto2_port/doc' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/var/tmp/portage/libgphoto2-2.1.4/work/libgphoto2-2.1.4/libgphoto2_port' make[2]: *** [all] Error 2 make[2]: Leaving directory `/var/tmp/portage/libgphoto2-2.1.4/work/libgphoto2-2.1.4/libgphoto2_port' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/libgphoto2-2.1.4/work/libgphoto2-2.1.4' make: *** [all] Error 2 !!! ERROR: media-libs/libgphoto2-2.1.4 failed. ==== So the real error was: /usr/bin/openjade: error while loading shared libraries: libosp.so.3: cannot open shared object file: No such file or directory Expected Results: openjade should run, even though there is only (on amd64) /usr/lib64/libosp.so.4 and not /usr/lib64/libosp.so.3 (on x86: /usr/lib/libosp.so.4 instead of /usr/lib/libosp.so.3) I checked the /usr/portage/app-text/openjade/openjade-1.3.2-r1.ebuild and /usr/portage/app-text/opensp/opensp-1.5-r1.ebuild files and it seems like at least one of them needs tweaking. opensp-1.5-r1 is marked STABLE while openjade-1.3.2-r1 only RDEPENDS on ">=app-text/opensp-1.5-r1" I don't know exactly the .ebuild magic, but this may be the path to follow. Maybe conditional dependency if there is a "doc" USE flag would help? Just to rebuild openjade correctly and use libosp.so.4 when such a flag is set?
Created attachment 55743 [details] In case anybody is interested: emerge.info.amd64
Created attachment 55744 [details] In case anybody is interested: emerge.info.x86
In my case, jade failed while building the docs for libusb-0.1.8. It could not find libosp.so.3 emerge world decided not to build openjade, but should have. ... [ebuild R ] dev-libs/libusb-0.1.8 ... [ebuild N ] dev-util/gtk-doc-1.2-r1 [ebuild U ] app-text/docbook-xsl-stylesheets-1.66.1 [1.65.1] [nomerge ] app-text/openjade-1.3.2-r1 [ebuild U ] app-text/opensp-1.5.1 [1.5-r1] ... emerge openjade worked ok, and allowed the emerge world to proceed.
You need to rebuild everything depending on opensp if you upgraded opensp from <1.5.1 to >=1.5.1 (because of so version change). I don't think we can do much about this (especially from ebuild side), so all I can tell you is to run `revdep-rebuild` if you find missing library. (Portage devs are seeking ways to handle this issue, so I hope this will be solved in the future)