Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 686168

Summary: dev-lang/perl ebuild info sends users into an app-admin/perl-cleaner loop since 3 years
Product: Gentoo Linux Reporter: Ulenrich <eulenreich>
Component: Current packagesAssignee: Gentoo Perl team <perl>
Severity: normal Keywords: PATCH
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Package list:
Runtime testing required: ---
Attachments: perl-cleaner-should-find-lib64-libperl.patch

Description Ulenrich 2019-05-17 18:11:41 UTC
Created attachment 577078 [details, diff]

When upgrading dev-lang/perl-5.28.2-r1
portage nearly does everything, also dependencies to libperl from git,graphviz,imagemagick,gnumeric,rpm,cups-filters had been rebuilt from the getgo. But it is recommend after perl install:
perl-cleaner --all

This wants to remerge all of above, why?
I found perl-cleaner breaks on my lib64 system at this point:
SONAME="$(${scanelf} -qBS "$(realpath ""/usr/lib/libperl

When using a patched perl-cleaner, the output is as expected again:
# /usr/local/sbin/perl-cleaner --libperl

 * Locating ebuilds linked against libperl  -- new lib: 
 * No package needs to be reinstalled.
Comment 1 Jeroen Roovers (RETIRED) gentoo-dev 2019-05-17 20:40:01 UTC
It is not entirely obvious what you think is broken.
Comment 2 Ulenrich 2019-05-18 11:14:45 UTC
(In reply to Jeroen Roovers from comment #1)
> It is not entirely obvious what you think is broken.

Thnx, yes, I have not shown the error at first ... so here:
When perl-cleaner determines if any consumers of libperl need to be remerged, perl-cleaner must extract the new SONAME of the new libperl, using scanelf on the real new $(realpath ""/usr/lib/libperl), where there should show up:
# scanelf -qBS /usr/lib64/  | awk '{ print $1 }'
  should be compared with any old SONAME (like showing up in consumer binaries. Because perl-cleaner tries to fetsch the SONAME only at /usr/lib and not my existing /usr/lib64 : This comparism everytime is FALSE with an unpatched pearl-cleaner, because of an empty SONAME variable. Trying on a good upgraded system with any reversals already take care of by portage, shows this not needed remerge at the bottom of the output:
# /usr/sbin/perl-cleaner --all
 * Removing perl-core packages from world file
 *    emerge --deselect  perl-core/File-Temp 
>>> No matching atoms found in "world" favorites file...
 * Updating installed Perl virtuals
 *    emerge -u1  virtual/perl-CPAN-Meta virtual/perl-CPAN-Meta-YAML virtual/perl-Carp virtual/perl-Compress-Raw-Bzip2 virtual/perl-Compress-Raw-Zlib virtual/perl-Data-Dumper virtual/perl-Digest-MD5 virtual/perl-Digest-SHA virtual/perl-Encode virtual/perl-Exporter virtual/perl-ExtUtils-CBuilder virtual/perl-ExtUtils-Install virtual/perl-ExtUtils-MakeMaker virtual/perl-ExtUtils-Manifest virtual/perl-ExtUtils-ParseXS virtual/perl-File-Path virtual/perl-File-Spec virtual/perl-File-Temp virtual/perl-Getopt-Long virtual/perl-IO virtual/perl-IO-Compress virtual/perl-IO-Socket-IP virtual/perl-JSON-PP virtual/perl-MIME-Base64 virtual/perl-Module-Metadata virtual/perl-Parse-CPAN-Meta virtual/perl-Perl-OSType virtual/perl-Scalar-List-Utils virtual/perl-Storable virtual/perl-Sys-Syslog virtual/perl-Term-ANSIColor virtual/perl-Test-Harness virtual/perl-Text-ParseWords virtual/perl-Time-HiRes virtual/perl-Time-Local virtual/perl-XSLoader virtual/perl-libnet virtual/perl-parent virtual/perl-podlators virtual/perl-version 

These are the packages that would be merged, in order:

Calculating dependencies  .. ... ... ..... ... done!

Total: 0 packages, Size of downloads: 0 KiB

Nothing to merge; quitting.

 * Beginning a clean up of .ph files
 * Excluding files for 5.28.2 and 5.28.2/x86_64-linux-thread-multi from cleaning

 * Locating ph files for removal

 * Locating packages for an update
 * Locating ebuilds linked against libperl
 *   Adding to list: media-gfx/imagemagick:0
 *   Adding to list: media-gfx/graphviz:0
 *   Adding to list: app-office/gnumeric:0
 * emerge -v1 --backtrack=200 --selective=n media-gfx/imagemagick:0 media-gfx/graphviz:0 app-office/gnumeric:0

These are the packages that would be merged, in order:

Calculating dependencies  ........ . . .... ... done!
[ebuild   R    ] media-gfx/graphviz-2.40.1-r1::gentoo  USE="X cairo -devil -doc -examples gdk-pixbuf gtk gts guile java -lasi nls pdf perl -postscript python qt5 -ruby -static-libs svg -tcl" PYTHON_TARGETS="python2_7" 0 KiB
[ebuild   R    ] media-gfx/imagemagick-  USE="X bzip2 corefonts cxx -djvu fftw fontconfig fpx graphviz hdri -heif jbig jpeg jpeg2k lcms lqr lzma (-opencl) openexr openmp pango perl png -postscript q32 -q8 raw -static-libs svg -test tiff truetype webp wmf xml zlib" 0 KiB
[ebuild   R    ] app-office/gnumeric-1.12.44::gentoo  USE="introspection libgda perl python" PYTHON_TARGETS="python2_7 -python3_5 python3_6" 0 KiB

Total: 3 packages (3 reinstalls), Size of downloads: 0 KiB
Comment 3 Alexander Tsoy 2019-05-26 00:04:55 UTC
This is a duplicate of bug 589874
Comment 4 Ulenrich 2019-05-28 01:07:10 UTC
In mgorny states
it is not necessary for the dev-lang/perl ebuild
to advice users to
# /usr/sbin/perl-cleaner --all

over and over again until all of Perl is clean.
There might be a bunch of Gentoo users died in this loop since 3years already.
Comment 5 Pacho Ramos gentoo-dev 2019-06-02 15:19:55 UTC

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