Summary: | media-gfx/imagemagick-7.0.8.46 needs to be rebuilt by perl-cleaner | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Pacho Ramos <pacho> |
Component: | Current packages | Assignee: | Gentoo Perl team <perl> |
Status: | RESOLVED OBSOLETE | ||
Severity: | normal | CC: | g.djavadyan, graphics+disabled |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 697596 |
Description
Pacho Ramos
2019-06-12 13:17:54 UTC
I believe I faced exactly the same issue. I noticed that perl-cleaner tries to rebuild net-analyzer/net-snmp every time I run it. I've spent some time investigating the problem and found that SONAME variable does not get a value in the following code: 226 SONAME="$(${scanelf} -qBS "$(realpath ""/usr/lib/libperl.{so,dylib} 2>/dev/null )" | awk '{ print $1 }')" The problem is related to the quoted command substitution for 'realpath' command. In particular, 'scanelf' sees the following two paths as one string (file): $ scanelf -qvvvBS "$(realpath ""/usr/lib/libperl.{so,dylib} 2>/dev/null )" Format: %S /usr/lib64/libperl.so.5.30.0 /usr/lib64/libperl.dylib: does not exist Removing the quotes around the command substitution solved the problem for me: ================= --- perl-cleaner 2019-01-26 01:23:13.546389953 +0500 +++ perl-cleaner 2019-09-03 20:51:04.812857646 +0500 @@ -223,7 +223,7 @@ ewarn "--libperl is disbled." LIBPERL=false else - SONAME="$(${scanelf} -qBS "$(realpath ""/usr/lib/libperl.{so,dylib} 2>/dev/null )" | awk '{ print $1 }')" + SONAME="$(${scanelf} -qBS $(realpath ""/usr/lib/libperl.{so,dylib} 2>/dev/null ) | awk '{ print $1 }')" veinfo 4 SONAME="${SONAME}" fi fi ================== The problem was introduced 3 years ago as part of a commit adding prefix and Darwin support [1]. Before that, only one path had been returned by the command substitution, so the double quotes around the construction was not a problem. However, after involving Bash globbing in the construction, the double quotes have become a problem: - SONAME="$(scanelf -qBS "$(realpath /usr/lib/libperl.so 2>/dev/null )" | awk '{ print $1 }')" + SONAME="$(${scanelf} -qBS "$(realpath "@GENTOO_PORTAGE_EPREFIX@"/usr/lib/libperl.{so,dylib} 2>/dev/null )" | awk '{ print $1 }')" Because of that, soname has never matched and perl-cleaner has been rebuilding every binary compiled against libperl on every run. [1] https://github.com/gentoo-perl/perl-cleaner/commit/2734c97095ba55635c4d389e95908153bb45b5f2 Please reopen if you still have problems with perl-cleaner 2.30 or later. |