From c01b7ef99e28767f0a00a9e39d817d80b8ab2700 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Thu, 24 May 2012 01:24:49 +0200 Subject: find-broken-perl-packages: detect perl version mismatch Signed-off-by: Florian Pritz --- find-broken-perl-packages.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'find-broken-perl-packages.sh') 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 -- cgit v1.2.3-24-g4f1b