Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 518334 - eutils.eclass: x11-libs/gdk-pixbuf-2.30.8 installs .la module loader files, which confuse paludis' cave-fix-linkage
Summary: eutils.eclass: x11-libs/gdk-pixbuf-2.30.8 installs .la module loader files, w...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] GNOME (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Michał Górny
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-07-27 16:51 UTC by Julian Ospald
Modified: 2015-01-24 10:42 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
gdk-pixbuf build log (gdk-pixbuf.log,188.65 KB, text/plain)
2015-01-18 17:59 UTC, Cddr
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Julian Ospald 2014-07-27 16:51:33 UTC
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ico.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jasper.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jpeg.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pcx.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ras.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tiff.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-wbmp.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)
    /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.la (requires /usr/lib64/libgdk_pixbuf-2.0.la)


So these .la files inside /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/ all depend on non-existent .la files from /usr/lib64/ and hence are all broken. This confuses package managers that try to fix linkage.
Comment 1 Pacho Ramos gentoo-dev 2014-07-27 17:11:29 UTC
They are removed in my case:
 * Removing unnecessary /usr/lib64/libgdk_pixbuf_xlib-2.0.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pcx.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tiff.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ras.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jpeg.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ico.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-wbmp.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.la (no static archive)
 * Removing unnecessary /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.la (no static archive)
 * Removing unnecessary /usr/lib64/libgdk_pixbuf-2.0.la (no static archive)

Maybe providing full build.log will show what is occurring :/
Comment 2 Julian Ospald 2014-07-27 17:20:11 UTC
I hacked the eclass to do

if [[ ${reason} ]]; then
	einfo "Removing unnecessary ${f#${D%/}} (${reason})"
	queue+=( "${f}" )
else
	einfo "Not removing ${f#${D%/}} (${reason})"
fi

output:
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-wbmp.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tiff.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jpeg.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ico.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ras.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jasper.la ()
 * Not removing /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pcx.la ()
 * Removing unnecessary /usr/lib64/libgdk_pixbuf_xlib-2.0.la (no static archive)
 * Removing unnecessary /usr/lib64/libgdk_pixbuf-2.0.la (no static archive)
Comment 3 Pacho Ramos gentoo-dev 2014-07-27 17:23:54 UTC
Err... the first think I checked was if I had the files, as that wasn't the case I reemerged the package to try to see if they were removed by eclass or not :/

$ ls -l /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/
total 308
-rwxr-xr-x 1 root root 18600 jul 27 19:09 libpixbufloader-ani.so
-rwxr-xr-x 1 root root 18504 jul 27 19:09 libpixbufloader-bmp.so
-rwxr-xr-x 1 root root 26936 jul 27 19:09 libpixbufloader-gif.so
-rwxr-xr-x 1 root root 10296 jul 27 19:09 libpixbufloader-icns.so
-rwxr-xr-x 1 root root 18576 jul 27 19:09 libpixbufloader-ico.so
-rwxr-xr-x 1 root root 22872 jul 27 19:09 libpixbufloader-jpeg.so
-rwxr-xr-x 1 root root 14280 jul 27 19:09 libpixbufloader-pcx.so
-rwxr-xr-x 1 root root 22936 jul 27 19:09 libpixbufloader-png.so
-rwxr-xr-x 1 root root 14400 jul 27 19:09 libpixbufloader-pnm.so
-rwxr-xr-x 1 root root 14400 jul 27 19:09 libpixbufloader-qtif.so
-rwxr-xr-x 1 root root 10200 jul 27 19:09 libpixbufloader-ras.so
-rwxr-xr-x 1 root root 10312 jun 21 21:48 libpixbufloader-svg.so
-rwxr-xr-x 1 root root 14288 jul 27 19:09 libpixbufloader-tga.so
-rwxr-xr-x 1 root root 14512 jul 27 19:09 libpixbufloader-tiff.so
-rwxr-xr-x 1 root root 10184 jul 27 19:09 libpixbufloader-wbmp.so
-rwxr-xr-x 1 root root 14408 jul 27 19:09 libpixbufloader-xbm.so
-rwxr-xr-x 1 root root 26824 jul 27 19:09 libpixbufloader-xpm.so
Comment 4 Gilles Dartiguelongue (RETIRED) gentoo-dev 2014-09-27 21:41:19 UTC
I, too, can't find this la files.
Since we don't have a "static-libs" USE flag on this package, there is no reason for them to be installed.

$ eix -c gdk-pixbuf
[I] x11-libs/gdk-pixbuf (2.30.8(2)@01/07/2014): Image loading library for GTK+
$ qlist gdk-pixbuf |egrep "\.(so|la)$"
/usr/lib64/libgdk_pixbuf_xlib-2.0.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-qtif.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-icns.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pcx.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jpeg.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-tga.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-gif.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-pnm.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xbm.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-wbmp.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ras.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ico.so
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.so
/usr/lib64/libgdk_pixbuf-2.0.so

I also rebuilt the package just in case, but same outcome.

Could you try from a clean tree and provide emerge --info and build.log ?
Comment 5 Julian Ospald 2014-09-27 21:45:11 UTC
(In reply to Gilles Dartiguelongue from comment #4)
> 
> Could you try from a clean tree and provide emerge --info and build.log ?

What do you mean by a "clean tree"? Also, I don't use portage.
Comment 6 Gilles Dartiguelongue (RETIRED) gentoo-dev 2014-09-27 21:57:25 UTC
Well, unaltered ebuilds and eclasses I guess.
Comment 7 Cddr 2015-01-12 13:17:04 UTC
Issue exist for Paludis users at least.

Presumably problem with gnome2_src_install function in gnome2.eclass, as prev. version without it (gdk-pixbuf-2.30.7-r1.ebuild) works fine.

Simple changing condition from "if has ${EAPI:-0} 0 1 2 3 4" to "if has ${EAPI:-0} 0 1 2 3 4 5" (note last digit) solves the problem. It seems natural as ebuild contains EAPI="5".
Comment 8 Pacho Ramos gentoo-dev 2015-01-14 12:11:20 UTC
For eapi5 we simply rely on eutils.eclass and, in this concrete case, it's running "prune_libtool_files" without any arguments

@mgorny, are you still maintaining this in eutils.eclass or is this now handled by base-system
Comment 9 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2015-01-14 12:22:20 UTC
Provide *full build log* and eclass debug log.
Comment 10 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2015-01-14 22:51:33 UTC
Ok, found the bug.

Index: eutils.eclass
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/eutils.eclass,v
retrieving revision 1.441
diff -u -B -r1.441 eutils.eclass
--- eutils.eclass	30 Dec 2014 07:24:52 -0000	1.441
+++ eutils.eclass	14 Jan 2015 22:49:07 -0000
@@ -1578,7 +1578,7 @@
 		fi
 
 		[[ ${f} != ${archivefile} ]] || die 'regex sanity check failed'
-		local reason pkgconfig_scanned
+		local reason= pkgconfig_scanned=
 		local snotlink=$(sed -n -e 's:^shouldnotlink=::p' "${f}")
 
 		if [[ ${snotlink} == yes ]]; then

All hail the mighty bash, the most stupid pseudo-programming shellscript ever invented, with its dumb, illogical and completely non-sense pseudo-local scopes.
Comment 11 Julian Ospald 2015-01-16 15:50:38 UTC
lets assume it's fixed then
Comment 12 Julian Ospald 2015-01-16 16:14:21 UTC
actually it's not fixed...

this one gets removed:
/usr/lib64/libgdk_pixbuf-2.0.la

this one not:
/usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.la

looking at /usr/lib64/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.la we see
> dependency_libs=' /usr/lib64/libgdk_pixbuf-2.0.la -lgmodule-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lpng16 -lm'

so the algorithm in prune_libtool_files doesn't seem to catch this case
Comment 13 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2015-01-16 18:16:38 UTC
It's a module loader .la file. dependency_libs is irrelevant since it is used purely to read .so name.
Comment 14 Cddr 2015-01-18 17:59:17 UTC
Created attachment 394294 [details]
gdk-pixbuf build log

What I do:

1. cave sync

2. cave resolve -x1 x11-libs/gdk-pixbuf >gdk-pixbuf.log 2>&1
Comment 15 Julian Ospald 2015-01-23 18:36:58 UTC
(In reply to Michał Górny from comment #13)
> It's a module loader .la file. dependency_libs is irrelevant since it is
> used purely to read .so name.

If dependency_libs is irrelevant, then it shouldn't be set... or we should remove all .la files consistently.
Comment 16 cmuelle8 2015-01-23 19:32:30 UTC
(In reply to Julian Ospald (hasufell) from comment #15)
> (In reply to Michał Górny from comment #13)
> > It's a module loader .la file. dependency_libs is irrelevant since it is
> > used purely to read .so name.
> 
> If dependency_libs is irrelevant, then it shouldn't be set... or we should
> remove all .la files consistently.

+1
. or sed la files to remove the dependcy_libs line if these need to be installed
. or prepend a hash to this line
. or change the way cave fix-linkage works (if there is a way to distinct .la files where dependency_libs line is needed from those .la files with irrelevant ones..) 

either way, currently stray .la files with dangling links to .la files never been installed make using fix-linkage commands a mess.  it's not just gdk-pixbuf that is affected by this type of bug, e.g. bug 537418, bug 537470, bug 537476 have similar error patterns.
Comment 17 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2015-01-24 10:24:00 UTC
Let's get this clear:

1. The files aren't broken. They are created by libtool as designed.

2. The files are the same across all PMs now. It's just paludis that does this kind of rebuild magic on top of them.

3. The files are most likely useless. But that's irrelevant to PM or whatever. It's your call to decide if you can pass --modules to prune_libtool_files or not.
Comment 18 Pacho Ramos gentoo-dev 2015-01-24 10:38:31 UTC
(In reply to Michał Górny from comment #17)
[...]
> 3. The files are most likely useless. But that's irrelevant to PM or
> whatever. It's your call to decide if you can pass --modules to
> prune_libtool_files or not.

We are not passing "--modules" because no .la files are installed even without that option on portage (then, it's a bit hard to figure out that we need to pass a more "aggresive" option to clean them on other setups)
Comment 19 Pacho Ramos gentoo-dev 2015-01-24 10:42:17 UTC
(In reply to Pacho Ramos from comment #18)
> (In reply to Michał Górny from comment #17)
> [...]
> > 3. The files are most likely useless. But that's irrelevant to PM or
> > whatever. It's your call to decide if you can pass --modules to
> > prune_libtool_files or not.
> 
> We are not passing "--modules" because no .la files are installed even
> without that option on portage (then, it's a bit hard to figure out that we
> need to pass a more "aggresive" option to clean them on other setups)

Oh nice, just re-emerged and they are now installed !?!?

I guess the previous fix to the eclass make it behave consistently for all of us

+  24 Jan 2015; Pacho Ramos <pacho@gentoo.org>
+  -files/gdk-pixbuf-2.28.0-string_h.patch, -gdk-pixbuf-2.30.7-r1.ebuild,
+  -gdk-pixbuf-2.30.7.ebuild, gdk-pixbuf-2.30.8.ebuild:
+  Really prune all .la files (#518334), drop old
+