When I run emerge --ignore-default-opts --verbose --oneshot --debug @preserved-rebuild , emerge aborts with the following output: myaction None myopts {'--ignore-default-opts': True, '--oneshot': True, '--debug': True, '--verbose': True} These are the packages that would be merged, in order: Calculating dependencies Arg: @preserved-rebuild Atom: app-misc/beagle:0 ebuild: app-misc/beagle-0.2.18-r1 Arg: @preserved-rebuild Atom: sys-devel/gcc:i686-pc-linux-gnu-4.1.2 installed: sys-devel/gcc-4.1.2 ... done! emerge: there are no ebuilds to satisfy "sys-devel/gcc:i686-pc-linux-gnu-4.1.2". By the way, before manually working around the famous bug 125728, I experienced the same problem (with more than one gcc version/slot) when I tried to use revdep-rebuild. I assume this happened due to the same cause. emerge should use ‘4.1’ as the package slot, or ‘=sys-devel/gcc-4.1.2’ (versioned atom). Instead, the type of system is prepended to the version. Could this in some way be related to the fact that I am using crossdev? Perhaps emerge does not get the distinction between i686-mingw32 and i686-pc-linux-gnu right?
It's triggered by the "multislot" USE flag, which modifies SLOT in a way that it was never designed to be modified.
Ah, I see, thanks. But I’ve been using ‘multislot’ for quite a while, and it /used to/ work (until a few weeks ago, IIRC).
Well, things change. Portage uses the SLOT value in more places than it did in the past.
so what is the work-around? I'm enjoying this bug as well. I haven't kept up with portage changes so this preserved-libs feature came as a surprise to me (one day I'll switch from ~amd64 to amd64). The contents of /var/lib/portage/preserved_libs_registry don't look very hacker-friendly either.
For example, if you have this problem with sys-devel/gcc-4.1.2 then you can fix it like this: echo 4.1.2 > /var/db/pkg/sys-devel/gcc-4.1.2/SLOT touch /var/db/pkg/sys-devel/gcc-4.1.2
(In reply to comment #5) > For example, if you have this problem with sys-devel/gcc-4.1.2 then you can fix > it like this: > > echo 4.1.2 > /var/db/pkg/sys-devel/gcc-4.1.2/SLOT > touch /var/db/pkg/sys-devel/gcc-4.1.2 > Actually, the correct SLOT in that case is 4.1 so you'd really do this: echo 4.1 > /var/db/pkg/sys-devel/gcc-4.1.2/SLOT touch /var/db/pkg/sys-devel/gcc-4.1.2