Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 173962 - x11-drivers/ati-drivers broken app-emulation/emul-linux-x86-compat dependency due to invalid usage of USE=multilib
Summary: x11-drivers/ati-drivers broken app-emulation/emul-linux-x86-compat dependency...
Status: RESOLVED DUPLICATE of bug 187683
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: AMD64 Linux
: High minor (vote)
Assignee: AMD64 Project
URL:
Whiteboard:
Keywords: QAbadiuse, QAcanfix
: 174570 187011 191540 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-04-09 21:47 UTC by Bernd Steinhauser
Modified: 2007-11-16 00:31 UTC (History)
6 users (show)

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


Attachments
patched ebuild (ati-drivers-8.35.5.patch,401 bytes, patch)
2007-04-16 04:44 UTC, Christoph Mende (RETIRED)
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Bernd Steinhauser 2007-04-09 21:47:37 UTC
For ati-drivers-8.35.5 under AMD64 there should be a dependency for
app-emulation/emul-linux-x86-compat because amdcccle will not start
reporting an error about missing libstdc++.so.5.
This also can also cause revdep-rebuild to reemerge ati-drivers over 
over again (Did happen for me.).

Reproducible: Always

Steps to Reproduce:
1. Install ati-drivers on AMD64 with useflag qt3
2. Make sure emul-linux-x86-compat is not installed or move /usr/lib32/libstdc++.so.5 which is provided by that package
3. Run amdcccle

Actual Results:  
amdcccle: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

Expected Results:  
Well, load. ;)
Comment 1 Jakub Moc (RETIRED) gentoo-dev 2007-04-14 11:05:37 UTC
*** Bug 174570 has been marked as a duplicate of this bug. ***
Comment 2 Christoph Mende (RETIRED) gentoo-dev 2007-04-16 04:44:09 UTC
Created attachment 116378 [details, diff]
patched ebuild

Since everyone else seems too busy (*coughs*), here's the needed patch for the ebuild ;>
Comment 3 Marien Zwart (RETIRED) gentoo-dev 2007-06-05 18:51:24 UTC
Thanks, the ebuild now checks for this (in 8.37.6-r1 and up).
Comment 4 Marien Zwart (RETIRED) gentoo-dev 2007-06-05 18:56:36 UTC
Sorry, the last comment made no sense (went to the wrong bug). 8.37.6-r1 now has this dependency. I did not drop the virtual/libstdc++ dependency because it is still needed by the 64 bit libGL.so. Please file a new bug if you believe this is incorrect.
Comment 5 Mike Smith 2007-06-07 16:27:48 UTC
This ebuild requires the multilib use flag is that correct?  There are other packages that depend on 32 bit binaries without using this use flag.
Comment 6 Bernd Steinhauser 2007-07-15 16:38:10 UTC
I'm also a little bit curious about the way this is fixed.

On my system the multilib use flag isn't activated, although it works very well
as a multilib system and the profile doesn't point to a no-multilib profile
(just to the normal desktop profile).

The result is, that the dependency still doesn't get pulled in.
Comment 7 Jakub Moc (RETIRED) gentoo-dev 2007-07-29 12:45:50 UTC
*** Bug 187011 has been marked as a duplicate of this bug. ***
Comment 8 Jakub Moc (RETIRED) gentoo-dev 2007-07-29 13:03:02 UTC
Reopen, the multilib thing needs to die.
Comment 9 Dieter Ries 2007-07-29 14:50:29 UTC
According to /usr/portage/profiles/default-linux/use.mask, the whole multilib thing is:

# Only used by mips and old amd64 profiles

But there are no supported profiles anymore, which have a "-multilib" in any use.mask.

Isn't it time for the multilib USE flag, to leave?

cu
Dieter
Comment 10 Bernd Steinhauser 2007-08-13 22:24:45 UTC
The next release seems to contain a 64bit Version of the amdcccle, so maybe the
dependency for app-emulation/emul-linux-x86-compat isn't needed anymore.
file amdcccle
amdcccle: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), not stripped
Comment 11 Bernd Steinhauser 2007-08-13 22:51:10 UTC
Looked into it, and it is still needed, by 32bit version of fglrx_dri.so:
ldd fglrx_dri.so
[...]
libstdc++.so.5 => /usr/lib32/libstdc++.so.5 (0xf7509000)
[...]

Why not just use
amd64? ( app-emulation/emul-linux-x86-compat )
instead of
amd64? ( multilib? ( app-emulation/emul-linux-x86-compat ) )

The second one doesn't really make sense (or am I wrong on this?), since the
library gets installed anyway, so on -multilib systems I've got a library with
a missing dependency?
Comment 12 Jakub Moc (RETIRED) gentoo-dev 2007-09-07 01:04:15 UTC
*** Bug 191540 has been marked as a duplicate of this bug. ***
Comment 13 Kevin 2007-09-15 16:15:45 UTC
I had this problem with ati-drivers-8.39.4

installing app-emulation/emul-linux-x86-compat resolved the problem for me.
The strange think is new system worked for awhile then amdcccle quit.
Kept installing virtual/libstdc++ .

Maybe linked to expat upgrade?

Lets not go there
Comment 14 Bernd Steinhauser 2007-09-20 14:14:44 UTC
I found something similar in the nvidia-drivers ebuild:
multilib? ( app-emulation/emul-linux-x86-xlibs )

Does this work for nvidia users?
I think, that bug 187683 tells about this.
Comment 15 Chris Gianelloni (RETIRED) gentoo-dev 2007-09-20 19:39:10 UTC
Well, the problem here (both ati and nvidia) is that we don't have an easy way to determine whether something is a multilib profile or not that is usable properly in a global scope.  Pretty much anything we would do would invalidate the cache and cause all kinds of nasty problems.  While it is easy enough to have the ebuild decide whether or not to install certain files via a has_multilib_profile check, that can't really be used in the global scope due to cache generation issues.  We used to use the multilib USE flag, but that has been deprecated for a really long time now.

What we really need is to figure out some way to say "I need to depend on this, but only if I am running a multilib profile"...
Comment 16 Bernd Steinhauser 2007-09-20 22:05:55 UTC
(In reply to comment #15)
> What we really need is to figure out some way to say "I need to depend on this,
> but only if I am running a multilib profile"...
> 

Wouldn't it be possible to check the profile link itself and check if it has
something like "no-multilib" in it?
Like
/etc/make.profile -> ../usr/portage/profiles/default-linux/amd64/2007.0/desktop
vs.
/etc/make.profile -> ../usr/portage/profiles/default-linux/amd64/2007.0/no-multilib/

Maybe the multilib eclass could make use of this and provide something to check.
Comment 17 Chris Gianelloni (RETIRED) gentoo-dev 2007-09-20 22:17:05 UTC
Anything that checks the profile in use on the local machine in the global scope will potentially invalidate the cache, which is very bad.

The problem here is the check has to be something that is valid within the scope of *DEPEND, which is currently limited to USE (oversimplification, but you get the point)... Were we able to do that sort of checking, it would be very simple:

has_multilib_profile && RDEPEND="${RDEPEND} app-emulation/emul-linux-x86-compat"

The problem is that running such a thing in the global scope would cause an invalid cache, depending on whether the cache generation was run on a multilib-enabled amd64 box or not.  Honestly, I'm surprised this has been around for so long without anyone noticing, but it is likely that the people this would affect the most had some other package installed that pulled in the necessary dependencies for itself.
Comment 18 Marek Kubica 2007-10-06 21:38:27 UTC
As far I can see, this dependency is no longer needed for ati-drivers 8.40.4. That's because the only file that needs 64 bit emulation is ``amdcccle``, this Catalyst Control Center, which was shipped in a 32 bit version. But according to <http://planet64bit.de/node/2616> and the official ATI Release Notes <https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.40.4.html> the ``amdcccle`` file should now be a 64 bit binary.

So, in short: the dependancy can be dropped in the ati-drivers >= 8.40.4 as it is outdated.
Comment 19 Bernd Steinhauser 2007-10-06 22:02:09 UTC
(In reply to comment #18)
> As far I can see, this dependency is no longer needed for ati-drivers 8.40.4.
> That's because the only file that needs 64 bit emulation is ``amdcccle``, this
> Catalyst Control Center, which was shipped in a 32 bit version. But according
> to <http://planet64bit.de/node/2616> and the official ATI Release Notes
> <https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/drivers/linux/linux_8.40.4.html>
> the ``amdcccle`` file should now be a 64 bit binary.
> 
> So, in short: the dependancy can be dropped in the ati-drivers >= 8.40.4 as it
> is outdated.
> 
No, see comment #11.
Comment 20 Marek Kubica 2007-10-06 22:22:43 UTC
Is the 32 bit version of ``fglrx_dri.so`` needed at all? I am running a system without the emulation libraries and haven't found any problems related to this. I just tried a 32-bit Opera, that seems to have problems with x86 emulation libraries missing.

Maybe that would be a candidate for something like emul-linux-x86-fglrx?
Comment 21 Bernd Steinhauser 2007-10-07 00:19:58 UTC
(In reply to comment #20)
> Is the 32 bit version of ``fglrx_dri.so`` needed at all? I am running a system
> without the emulation libraries and haven't found any problems related to this.
> I just tried a 32-bit Opera, that seems to have problems with x86 emulation
> libraries missing.
> 
> Maybe that would be a candidate for something like emul-linux-x86-fglrx?
> 

I guess it is needed, if you run a 32bit application, that makes use of opengl,
like wine+a windows game for example.
Nevertheless, I think, that if one doesn't use a multilib system these files
shouldn't be installed.
So the check (that currently seems to be broken) should be taken by the install
routine as well (when it is working some day).

You are right in one point, if you haven't any emul-x86 libs installed, the file isn't needed.
Comment 22 Bernd Steinhauser 2007-10-23 23:01:17 UTC
With ati-drivers-8.42.3 all dependencies on /usr/lib32/libstdc++.so.5 are gone, so it should be save to remove the emul-linux-x86-compat dependency.
If 8.42.3 hits the tree, this bug can be marked as resolved since the original problem shouldn't exist anymore.
Or the summary should be changed to fit a more general purpose (since this problem doesn't seem to be ati-drivers-specific.).
Comment 23 Mike Doty (RETIRED) gentoo-dev 2007-11-15 04:47:39 UTC
is there anything wrong on here?
Comment 24 Chris Gianelloni (RETIRED) gentoo-dev 2007-11-16 00:30:38 UTC
Yes, there is something definitely wrong.

This bug is essentially the same as bug #187683 as they're both having the same issue.  We need some way to allow the app-emulation/emul-linux-x86-compat dependency to be pulled in when on a multilib system, and not pulled in on non-multilib, and we need it in something that is valid *DEPEND syntax.  Currently, that means a USE flag, which is why I called for discussion (on bug #187683) about the reintroduction of the flag now that we can force-enable USE flags on certain profiles.  Of course, I'd take any other solution which gets the job done, too.
Comment 25 Chris Gianelloni (RETIRED) gentoo-dev 2007-11-16 00:31:20 UTC

*** This bug has been marked as a duplicate of bug 187683 ***