After upgrading from dev-lang/perl-5.18.2-r1 to dev-lang/perl-5.20.1 my system is stuck in an inbetween state and perl-cleaner fails to resolve that situation. (The same problem happend with the upgrade from perl 5.16 to 5.18) Reproducible: Always Steps to Reproduce: 1. have perl-5.18 installed, have dev-vcs/git[doc] installed 2. emerge -auDNv world Actual Results: The world update breaks, because git can't rebuild its documentation, because some perl module it needs has not been upgraded from 5.18 to 5.20. OK, thats what perl-cleaner is for, so that is not the real bug. The problem is, when trying to run perl-cleaner --all I get: !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: dev-lang/perl:0 (dev-lang/perl-5.20.1:0/5.20::gentoo, installed) pulled in by dev-lang/perl:0/5.20=[-build(-)] required by (www-apps/lxr-0.9.8-r1:0/0::gentoo, installed) ^^^^^^^^ =dev-lang/perl-5.20* required by (virtual/perl-CPAN-Meta-2.140.640:0/0::gentoo, ebuild scheduled for merge) ^ ^^^^^ (and 88 more with the same problems) (dev-lang/perl-5.18.2-r1:0/5.18::gentoo, ebuild scheduled for merge) pulled in by =dev-lang/perl-5.18* required by (virtual/perl-Package-Constants-0.20.0-r4:0/0::gentoo, installed) ^ ^^^^^ (and 4 more with the same problem) The last time, the errors during the git docs where rather clear: SAX and one of its dependencys where still 5.16 and not yet upgraded to 5.18. So I rebuild these perl modules and then was able to recomplile git. Which enabled emerge --depclean to work, which then made perl-cleaner work again. But this time I don't know what part of perl broke: Can't locate Locale/Messages.pm in @INC (you may need to install the Locale::Messages module) thoregon portage # eix -I Locale -o -I Messages [I] dev-perl/Encode-Locale Available versions: 1.30.0-r1{tbz2} Installed versions: 1.30.0-r1{tbz2}(11:32:36 27/09/14) Homepage: http://search.cpan.org/dist/Encode-Locale/ Description: Determine the locale encoding [I] dev-perl/Locale-gettext Available versions: 1.50.0-r1{tbz2} Installed versions: 1.50.0-r1{tbz2}(11:40:21 27/09/14) Homepage: http://search.cpan.org/dist/gettext/ Description: A Perl module for accessing the GNU locale utilities Found 2 matches. Both modules have already been rebuild for 5.20 the something else broke and perl-cleaner should repair this. But: perl-cleaner fails because some obsolete modules are installed that emerge --depclean could remove. But: emerge --depclean fails because git has not been rebuild and now has an unsatisfied dependency on perl-5.18, that could be fixed by rebuilding git. But: Rebuilding git fails, because something in perl is inkonsitent, which perl-cleaner should fix. But: perl-cleaner doesn't fix it, instead it fails with above blocker. "helpful" tips: * Remove all perl-core packages from your world file * emerge --deselect --ask $(qlist -IC 'perl-core/*') I do not have a single perl-core package in my world file. * Update all the installed Perl virtuals * emerge -uD1a $(qlist -IC 'virtual/perl-*') Why should I need to do this? Isn't it the job of perl-cleaner to clean up any perl packages? perl-cleaner already is adding virtual/perl-CPAN-Meta:0, virtual/perl-ExtUtils-ParseXS:0 and others to its list of packages that need rebuilds, why would I need to manually fiddle with addional packages. Shouldn't perl-cleaner itself be better at determining which virtuals need rebuilds? Expected Results: That perl-cleaner cleans up any remains of perl-5.18. This bug is very anoying. It happend on upgrade 5.16 to 5.18 and now on 5.18 to 5.20, so if that is not fixed, I can plan for a major work for each perl upgrade, despide trying to use the tool that was written exactly to do that. If perl-cleaner can correctly find which packages in perl-core and dev-perl need rebuilds (in this case for example finds perl-core/Archive-Tar:0 and virtual/perl-Archive-Tar:0), why is it skipping some of them (in this case virtual/perl-Package-Constants:0) and then wonders why portage can't resolve this.
(In reply to Torsten Kaiser from comment #0) Thanks for the novel. > > * Update all the installed Perl virtuals > * emerge -uD1a $(qlist -IC 'virtual/perl-*') > > Why should I need to do this? Isn't it the job of perl-cleaner to clean up > any perl packages? > Did you try the command, and did it help?
Apparently this isn't a single bug and it isn't about perl-cleaner.
(In reply to Andreas K. Hüttel from comment #1) > Thanks for the novel. I wanted to show all the differnt parts of this error. And explain, why I think this: * is not a problem of emerge failing to rebuild git -> Because the perl upgrade was still incomplete * is not a problem of emerge --depclean -> Because the incomplete perl upgrade really did leave some unsatisfied dependency * that is was a problem of perl-cleaner not cleaning up > > > > * Update all the installed Perl virtuals > > * emerge -uD1a $(qlist -IC 'virtual/perl-*') > > > > Why should I need to do this? Isn't it the job of perl-cleaner to clean up > > any perl packages? > > > > Did you try the command Why? Shouldn't perl-cleaner be in a much better position to decide which perl virtuals need to be updated or rebuild? > , and did it help? What did help: * Finding out tha Locale/Messages.pm comes from dev-perl/libintl-perl * rebuilding dev-perl/libintl-perl * rebuild dev-vcs/git (with Locale/Messages.pm now fixed, this worked) * emerge --depclean (git now no longer wanted perl-5.18 so depclean worked) This resulted in the following ebuilds to get removed: ll selected packages: =perl-core/ExtUtils-ParseXS-3.220.0-r1 =virtual/perl-ExtUtils-Command-1.180.0-r2 =virtual/perl-Perl-OSType-1.3.0-r1 =virtual/perl-ExtUtils-ParseXS-3.220.0 =virtual/perl-ExtUtils-Manifest-1.630.0-r1 =virtual/perl-Test-Harness-3.290.0 =virtual/perl-Archive-Tar-1.920.0 =perl-core/Archive-Tar-1.920.0 =perl-core/version-0.990.800 =perl-core/Parse-CPAN-Meta-1.440.900-r1 =perl-core/MIME-Base64-3.140.0-r1 =perl-core/Digest-MD5-2.530.0 =perl-core/CPAN-Meta-2.132.510-r1 =net-misc/dhcpcd-6.4.5 =virtual/perl-Module-Metadata-1.0.11-r1 =virtual/perl-Digest-1.170.0-r3 =perl-core/Test-Harness-3.290.0 =perl-core/ExtUtils-Command-1.180.0-r1 =virtual/perl-Pod-Parser-1.610.0-r1 =perl-core/File-Temp-0.230.400 =virtual/perl-CPAN-Meta-Requirements-2.125.0-r1 =virtual/perl-ExtUtils-CBuilder-0.280.210-r1 =virtual/perl-IO-Zlib-1.100.0-r4 =virtual/perl-File-Temp-0.230.400-r1 =perl-core/CPAN-Meta-Requirements-2.125.0-r1 =virtual/perl-ExtUtils-Install-1.590.0-r1 =perl-core/Sys-Syslog-0.330.0-r1 =virtual/perl-Package-Constants-0.20.0-r4 =virtual/perl-CPAN-Meta-2.132.510 =virtual/perl-Parse-CPAN-Meta-1.440.900 =virtual/perl-JSON-PP-2.272.20-r1 =virtual/perl-CPAN-Meta-YAML-0.8.0-r2 =virtual/perl-Test-Simple-0.980.0-r5 =virtual/perl-version-0.990.800-r2 =perl-core/Getopt-Long-2.420.0 =perl-core/Pod-Parser-1.610.0-r1 Now I started perl-cleaner --all again, and this time it seems to work as intended. So, do I need to got go hunting for random perl packages after every perl upgrade until emerge --depclean works again, or could perl-cleaner be made to automatically update/rebuild the needed virtuals instead of failing during emerges blocker resolution?
(In reply to Jeroen Roovers from comment #2) > Apparently this isn't a single bug and it isn't about perl-cleaner. I believe it is a single bug in perl-cleaner. perl-cleaner seems to skip some virtuals (probaly because nothings is needing them anymore), but these seemingly unneeded virtuals still blow up emerges dependency calculations. Which means that perl-cleaner is not rebuilding the packages that need it to finish the upgrade from 5.18 to 5.20 For example: perl-cleaner did want to rebuild the broken package dev-perl/libintl-perl and also dev-vcs/git. But it could not do so, because it failed to allow emerge to include an upgrade (or removal) of the no longer needed virtuals.
It's a bug in perl-cleaner allright, but not trivial to fix. Working on a solution, but suggestions and (well-tested!!!) pull requests on github are welcome. (Perl updates were always ugly in the past... No news here.)
(In reply to Andreas K. Hüttel from comment #5) > It's a bug in perl-cleaner allright, but not trivial to fix. Working on a > solution, but suggestions and (well-tested!!!) pull requests on github are > welcome. > > (Perl updates were always ugly in the past... No news here.) https://github.com/gentoo-perl/perl-cleaner/blob/master/perl-cleaner If you're feeling adventorous, download perl-cleaner from ^ (click on the "raw" button) and test. May still kill kittens, no guarantees. commit ec13865c8dd78724498bec8e1dd1111a8cc605a1 Author: Andreas K. Huettel (dilfridge) <dilfridge@gentoo.org> Date: Sat Sep 27 18:18:26 2014 +0200 Automatically prune perl-core from world file and update virtuals first
This should be fixed in perl-cleaner 2.17
Something is still broken with perl-cleaner-2.17. Short version: * Locating ebuilds linked against libperl [snip] * Adding to list: perl-core/ExtUtils-MakeMaker:0 * virtual/perl-ExtUtils-MakeMaker:0 * emerge -vD1 --backtrack=30 xfce-base/xfconf:0 media-gfx/graphite2:0 media-gfx/graphviz:0 net-libs/libproxy:0 net-analyzer/rrdtool:0 dev-vcs/subversion:0 perl-core/MIME-Base64:0 virtual/perl-MIME-Base64:0 perl-core/ExtUtils-Command:0 virtual/perl-ExtUtils-Command:0 perl-core/File-Temp:0 virtual/perl-File-Temp:0 perl-core/Sys-Syslog:0 virtual/perl-Sys-Syslog:0 perl-core/Digest-MD5:0 virtual/perl-Digest-MD5:0 perl-core/CPAN-Meta-Requirements:0 virtual/perl-CPAN-Meta-Requirements:0 perl-core/ExtUtils-MakeMaker:0 virtual/perl-ExtUtils-MakeMaker:0 [snip] * Error: The above package list contains packages which cannot be * installed at the same time on the same system. (virtual/perl-ExtUtils-MakeMaker-6.980.0:0/0::gentoo, ebuild scheduled for merge) pulled in by virtual/perl-ExtUtils-MakeMaker required by (dev-perl/Unicode-EastAsianWidth-1.330.0-r1:0/0::gentoo, installed) virtual/perl-ExtUtils-MakeMaker:0 =virtual/perl-ExtUtils-MakeMaker-6.980.0 required by (dev-perl/Unicode-EastAsianWidth-1.330.0-r1:0/0::gentoo, installed) (perl-core/ExtUtils-MakeMaker-6.820.0-r1:0/0::gentoo, ebuild scheduled for merge) pulled in by perl-core/ExtUtils-MakeMaker:0 ... so the new perl-cleaner correctly disposed most of the troubling perl-core packages, but still adds the blockers perl-core/ExtUtils-MakeMaker:0 and virtual/perl-ExtUtils-MakeMaker:0 to the command line and portage can't solve this. Full version: I couldn't test you changes yesterday, because the system was still busy recompiling libreoffice (glew so-name change) and upgrading chromium. Today it spent most of its time rebuilding packages to recreate the original problem. Using an up-to-date unstable ~amd64 system (Timestamp of tree: Sun, 28 Sep 2014 05:30:02 +0000) and the perl-5.20 mask from http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/profiles/package.mask?r1=1.16049&r2=1.16050&diff_format=h I was able to finally recreate the original failure of perl-cleaner-2.16. (If somebody is interested in this setup: Ask, and I will add /var/lib/portage/world + /etc/portage/* to this bug) After removing the mask, letting "emerge -auDNv world" doing the upgrade, but not depcleaning anything running "perl-cleaner --all" showed again: !! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: dev-lang/perl:0 (dev-lang/perl-5.20.1:0/5.20::gentoo, installed) pulled in by =dev-lang/perl-5.20* required by (virtual/perl-Time-Local-1.230.0-r1:0/0::gentoo, installed) ^ ^^^^^ dev-lang/perl:0/5.20=[-build(-)] required by (dev-perl/XML-SAX-Base-1.80.0-r1:0/0::gentoo, installed) ^^^^^^^^ (and 69 more with the same problems) (dev-lang/perl-5.18.2-r1:0/5.18::gentoo, ebuild scheduled for merge) pulled in by =dev-lang/perl-5.18* required by (virtual/perl-JSON-PP-2.272.20-r1:0/0::gentoo, installed) ^ ^^^^^ (and 5 more with the same problem) Then I upgraded to: [ebuild U ] app-admin/perl-cleaner-2.17 [2.16] Your new code seemed to work as intended: It also unmerged several obsolete perl-core packages. * Updating installed Perl virtuals * emerge -uD1 virtual/perl-Archive-Tar virtual/perl-Compress-Raw-Zlib virtual/perl-CPAN-Meta virtual/perl-CPAN-Meta-Requirements virtual/perl-CPAN-Meta-YAML virtual/perl-Digest virtual/perl-Digest-MD5 virtual/perl-Digest-SHA virtual/perl-Encode virtual/perl-ExtUtils-CBuilder virtual/perl-ExtUtils-Command virtual/perl-ExtUtils-Install virtual/perl-ExtUtils-MakeMaker virtual/perl-ExtUtils-Manifest virtual/perl-ExtUtils-ParseXS virtual/perl-File-Spec virtual/perl-File-Temp virtual/perl-IO virtual/perl-IO-Compress virtual/perl-IO-Zlib virtual/perl-JSON-PP virtual/perl-libnet virtual/perl-MIME-Base64 virtual/perl-Module-Build virtual/perl-Module-Metadata virtual/perl-Package-Constants virtual/perl-Parse-CPAN-Meta virtual/perl-Perl-OSType virtual/perl-Scalar-List-Utils virtual/perl-Storable virtual/perl-Sys-Syslog virtual/perl-Test-Harness virtual/perl-Test-Simple virtual/perl-Time-Local virtual/perl-version Calculating dependencies... done! >>> Verifying ebuild manifests >>> Emerging (1 of 14) virtual/perl-CPAN-Meta-YAML-0.12.0::gentoo >>> Emerging (2 of 14) virtual/perl-ExtUtils-CBuilder-0.280.217::gentoo >>> Emerging (3 of 14) virtual/perl-ExtUtils-Install-1.670.0::gentoo >>> Emerging (4 of 14) virtual/perl-JSON-PP-2.272.30::gentoo >>> Installing (1 of 14) virtual/perl-CPAN-Meta-YAML-0.12.0::gentoo >>> Emerging (5 of 14) virtual/perl-Module-Metadata-1.0.19::gentoo >>> Installing (2 of 14) virtual/perl-ExtUtils-CBuilder-0.280.217::gentoo >>> Emerging (6 of 14) virtual/perl-Package-Constants-0.40.0::gentoo >>> Installing (3 of 14) virtual/perl-ExtUtils-Install-1.670.0::gentoo >>> Emerging (7 of 14) virtual/perl-Perl-OSType-1.7.0::gentoo >>> Emerging (8 of 14) virtual/perl-Test-Simple-1.1.2::gentoo >>> Installing (4 of 14) virtual/perl-JSON-PP-2.272.30::gentoo >>> Emerging (9 of 14) virtual/perl-version-0.990.900::gentoo >>> Installing (5 of 14) virtual/perl-Module-Metadata-1.0.19::gentoo >>> Installing (6 of 14) virtual/perl-Package-Constants-0.40.0::gentoo >>> Emerging (10 of 14) virtual/perl-Test-Harness-3.330.0::gentoo >>> Emerging (11 of 14) virtual/perl-Parse-CPAN-Meta-1.441.400::gentoo >>> Installing (7 of 14) virtual/perl-Perl-OSType-1.7.0::gentoo >>> Emerging (12 of 14) virtual/perl-ExtUtils-ParseXS-3.240.0::gentoo >>> Emerging (13 of 14) virtual/perl-CPAN-Meta-2.140.640::gentoo >>> Emerging (14 of 14) virtual/perl-Archive-Tar-1.960.0::gentoo >>> Installing (9 of 14) virtual/perl-version-0.990.900::gentoo >>> Installing (8 of 14) virtual/perl-Test-Simple-1.1.2::gentoo >>> Installing (10 of 14) virtual/perl-Test-Harness-3.330.0::gentoo >>> Installing (11 of 14) virtual/perl-Parse-CPAN-Meta-1.441.400::gentoo >>> Installing (12 of 14) virtual/perl-ExtUtils-ParseXS-3.240.0::gentoo >>> Installing (13 of 14) virtual/perl-CPAN-Meta-2.140.640::gentoo >>> Uninstalling perl-core/version-0.990.800::gentoo >>> Installing (14 of 14) virtual/perl-Archive-Tar-1.960.0::gentoo >>> Uninstalling perl-core/Test-Harness-3.290.0::gentoo >>> Uninstalling perl-core/ExtUtils-ParseXS-3.220.0-r1::gentoo >>> Uninstalling perl-core/CPAN-Meta-2.132.510-r1::gentoo >>> Uninstalling perl-core/Parse-CPAN-Meta-1.440.900-r1::gentoo >>> Uninstalling perl-core/Archive-Tar-1.920.0::gentoo >>> Jobs: 14 of 14 complete Load avg: 2.50, 1.47, 1.37 >>> Auto-cleaning packages... ... but in the next step the new version still failed, when trying to finish the upgrade: * emerge -vD1 --backtrack=30 xfce-base/xfconf:0 media-gfx/graphite2:0 media-gfx/graphviz:0 net-libs/libproxy:0 net-analyzer/rrdtool:0 dev-vcs/subversion:0 perl-core/MIME-Base64:0 virtual/perl-MIME-Base64:0 perl-core/ExtUtils-Command:0 virtual/perl-ExtUtils-Command:0 perl-core/File-Temp:0 virtual/perl-File-Temp:0 perl-core/Sys-Syslog:0 virtual/perl-Sys-Syslog:0 perl-core/Digest-MD5:0 virtual/perl-Digest-MD5:0 perl-core/CPAN-Meta-Requirements:0 virtual/perl-CPAN-Meta-Requirements:0 perl-core/ExtUtils-MakeMaker:0 virtual/perl-ExtUtils-MakeMaker:0 * Error: The above package list contains packages which cannot be * installed at the same time on the same system. (virtual/perl-ExtUtils-MakeMaker-6.980.0:0/0::gentoo, ebuild scheduled for merge) pulled in by virtual/perl-ExtUtils-MakeMaker required by (dev-perl/Unicode-EastAsianWidth-1.330.0-r1:0/0::gentoo, installed) virtual/perl-ExtUtils-MakeMaker:0 =virtual/perl-ExtUtils-MakeMaker-6.980.0 required by (dev-perl/Unicode-EastAsianWidth-1.330.0-r1:0/0::gentoo, installed) (perl-core/ExtUtils-MakeMaker-6.820.0-r1:0/0::gentoo, ebuild scheduled for merge) pulled in by perl-core/ExtUtils-MakeMaker:0 That dependency of ExtUtils-MakeMaker seems to come only from the command line: rescue thoregon portage # emerge -pv --depclean perl-core/ExtUtils-MakeMaker Calculating dependencies... done! >>> Calculating removal order... >>> These are the packages that would be unmerged: perl-core/ExtUtils-MakeMaker selected: 6.820.0-r1 protected: none omitted: none All selected packages: =perl-core/ExtUtils-MakeMaker-6.820.0-r1 >>> 'Selected' packages are slated for removal. >>> 'Protected' and 'omitted' packages will not be removed. Otherwise your changes looked nice, but I'm wondering, if a --noreplace would be appropriate when remerging the virtuals?
If you still have the perl-core package installed, could you please run perl-cleaner -v -v -v --all and attach the output?
Created attachment 385760 [details] perl-cleaner -v -v -v --all Thats why I tried to recreate it in a test setup, so I could leave the broken state around. perl-core/ExtUtils-MakeMaker was still installed and the new run of perl-cleaner 2.17 showed the same result again. If you need other infos, I will try to provide them too. (List of installed packages? Or what was upgraded+remerged during the 5.18 -> 5.20 upgrade?)
Try 2.19 please + perl is fully EAPI=5 now. Its should not be a problem i think. Even with legacy systems.
I still had that old test installation, but it shared its portage tree with all of by other installations. So it now had a tree from today. And I can no longer reproduce the problem with todays tree, even when using the old perl-cleaner-2.17. Maybe because of changes in dev-lang/perl-5.20.1? During the perl-cleaner run it gets upgraded to 5.20.1-r4 along with updating perl-cleaner itself from 2.17 to 2.19. I will try a new upgrade from 5.18 to 5.20 from my stable system tomorrow. If I can't recreate the problem, then I will switch the resolution to 'FIXED' even if I can't really verify if perl-cleaner-2.19 fixed the problem or changes to the perl ebuilds...
I think EAPI=5 works as intended. The upgrade from perl-5.18 to perl-5.20 triggered ~40 rebuilds with the effect, that the upgrade completed sucessfully even without needing to run perl-cleaner in between. In /usr/lib64/perl5/5.18.2 only the .ph files remained and no perl modules remained in /usr/lib64/perl5/vendor_perl/5.18.2/: rescue thoregon / # equery belongs /usr/lib64/perl5/vendor_perl/5.18.2/ * Searching for /usr/lib64/perl5/vendor_perl/5.18.2/ ... media-gfx/graphite2-1.2.4-r1 (/usr/lib64/perl5/vendor_perl/5.18.2) media-gfx/graphviz-2.26.3-r4 (/usr/lib64/perl5/vendor_perl/5.18.2) net-analyzer/rrdtool-1.4.8-r1 (/usr/lib64/perl5/vendor_perl/5.18.2) net-libs/libproxy-0.4.11-r2 (/usr/lib64/perl5/vendor_perl/5.18.2) xfce-base/xfconf-4.10.0 (/usr/lib64/perl5/vendor_perl/5.18.2) Even the old perl-cleaner-2.16 was able to detect and rebuild these 5 packages successfully. So I no longer have a testcase to really try any enhancedments of perl-cleaner-2.19. But as this upgrade did work without a single packages failing during build, I consider this FIXED. Thanks for all the work on the EAPI=5 conversion and everything else that happend with the perl modules in the last months. :-)