when using perl-5.10.0 ~dev-lang/perl-5.8.8 required by ('ebuild', '/', 'virtual/perl-MIME-Base64-3.07', 'merge') perl-MIME-Base64 seems to check for perl 5.8.8 and ignore the existence of MIME-Base64 even if it is installed. It does not attempt to install MIME-Base64 either. workaround seems to be masking perl-5.8 Reproducible: Always
Created attachment 177505 [details] patch to ebuild not sure if this actually works... seems to work for me using portage 2.2, but have one report of not working, so needs further testing.
There appears to be a dependency resolution issue here somewhere. I've been trying to find the cause, because its confusing, and occurs under both portage and paludis. Its been hard to categorise the problem, but I have a working example case: git clone http://git.fox.geek.nz/gentoo/testcase/test/.git or wget -m -np http://git.fox.geek.nz/gentoo/testcase/test/ if you lack git. ( its a checked out copy ) a-1 -> DEP < b-2 a-3 -> DEP ~b-3 b-1 -> PDEP ~a-1 b-3 -> PDEP ~a-3 c-1 -> DEP a d-1 -> DEP ||( ~a-1 ~c-1 ) Installing c pulls a-3, b-3. Installing d ignores c is available, and downgrades a & b to v1.
(In reply to comment #2) > There appears to be a dependency resolution issue here somewhere. I've been > trying to find the cause, because its confusing, and occurs under both portage > and paludis. > > Its been hard to categorise the problem, but I have a working example case: > > git clone http://git.fox.geek.nz/gentoo/testcase/test/.git > > or > > wget -m -np http://git.fox.geek.nz/gentoo/testcase/test/ > > if you lack git. ( its a checked out copy ) > > a-1 -> DEP < b-2 > a-3 -> DEP ~b-3 > b-1 -> PDEP ~a-1 > b-3 -> PDEP ~a-3 > c-1 -> DEP a > d-1 -> DEP ||( ~a-1 ~c-1 ) > > Installing c pulls a-3, b-3. > Installing d ignores c is available, and downgrades a & b to v1. > Whoops: git clone http://git.fox.geek.nz/gentoo/testcase/.git or wget -m -np http://git.fox.geek.nz/gentoo/testcase/ respectively. and the packages are all under a fake category I created called 'test' and install no files themselves.
(In reply to comment #1) > Created an attachment (id=177505) [edit] It's a variant of bug 1343. That patch seems like a reasonable solution, except maybe use >=dev-lang/perl-5.10 instead of ~dev-lang/perl-5.10.0 because the latter seems overly specific.
nvm.. my fix doesn't work... in fact no combo works from what I can tell...
Perhaps it should be like this: || ( >=dev-lang/perl-5.8.8 ~perl-core/MIME-Base64-${PV} ) That would sense if MIME-Base64 is included in versions of perl >=5.8.8.
ah.. my latest test was bugged... stale metadata... my patch works.
(In reply to comment #6) > Perhaps it should be like this: > > || ( >=dev-lang/perl-5.8.8 ~perl-core/MIME-Base64-${PV} ) > > That would sense if MIME-Base64 is included in versions of perl >=5.8.8. Just installed perl-5.10.0 from the perl-experimental overlay yesterday, and indeed, MIME::Base64 is included. I now have MIME-Base64 twice on my computer. I don't really care to have MIME::Base64 twice on my computer, but including Zac's suggestion would definitely ease upgrading to perl-5.10 A LOT, since the error messages were enlightening only in retrospect; this bug report helped. Thanks, Henry PS: I am running ~x86.
been using zmedico's slightly modified version in funtoo/regen2 for ~ a month now no problems.
Zac: could the resolver be perhaps update to prefer installing the extra package instead of choosing and downgrading an existing one? While it's of course not the best solution to this bug, I imagine it might be useful somewhere else.
(In reply to comment #10) > Zac: could the resolver be perhaps update to prefer installing the extra > package instead of choosing and downgrading an existing one? While it's of > course not the best solution to this bug, I imagine it might be useful > somewhere else. For this particular case, I think a reasonable heuristic would be to avoid atoms which pull in a package which is not the highest visible within the slot. So, it would match ~dev-lang/perl-5.8.8 and notice that there's a higher visible version of dev-lang/perl:0 and then do the same for ~perl-core/MIME-Base64-3.07. If it happens that ~perl-core/MIME-Base64-3.07 matches the highest visible version within the perl-core/MIME-Base64:0 slot then it should choose that one instead.
This is fixed in svn r12623.
zmedico does your fix affect my patch at all? will I need to change anything in my tree?
You won't have to change anything, but your patch from comment #1 is no longer required to get appropriate behavior from portage.
Created attachment 182975 [details, diff] automatically mask lower versions that are likely to trigger slot conflicts If this patch is saved as /tmp/mask_lower_version.patch, then it can be applied as follows: patch /usr/lib/portage/pym/_emerge/__init__.py /tmp/mask_lower_version.patch
*** Bug 259889 has been marked as a duplicate of this bug. ***
This is fixed in 2.2_rc24 which is in package.mask. I'll close this bug when it's also released in 2.1.6.8.
This is released in 2.1.6.8.
I think this bug should be reopened, since stable packages are affected (see bug #259889) but 2.1.6.8 is not in stable.