diff options
-rwxr-xr-x | find-broken-perl-packages.sh | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/find-broken-perl-packages.sh b/find-broken-perl-packages.sh index d0aac57..d499868 100755 --- a/find-broken-perl-packages.sh +++ b/find-broken-perl-packages.sh @@ -4,16 +4,19 @@ perllibpath="/usr/lib/perl5/vendor_perl/auto/" tmpdir=$(mktemp -d /tmp/find-broken-perl-package.XXXXXXXX) touch $tmpdir/{raw,perl-modules}.txt find "$perllibpath" -name "*.so" | - sed \ - -e "s|$perllibpath||" \ - -e 's|/|::|g' \ - -e 's|.so$||' \ - -e 's|\(.*\)::.*$|\1|' | - while read module; do + while read file; do + module=$(echo $file | sed \ + -e "s|$perllibpath||" \ + -e 's|/|::|g' \ + -e 's|.so$||' \ + -e 's|\(.*\)::.*$|\1|') output=$(perl -M$module -e1 2>&1) if grep -q "perl: symbol lookup error:" <<< $output; then sed -n 's|perl: symbol lookup error: \(.*\): undefined symbol: .*|\1|p' <<< $output >> $tmpdir/raw.txt - echo $module >> $tmpdir/perl-modules.txt + echo "$module" >> "$tmpdir/perl-modules.txt" + elif grep -q "Perl API version .* of .* does not match .*" <<< $output; then + echo $file >> $tmpdir/raw.txt + echo "$module" >> "$tmpdir/perl-modules.txt" fi done |