From 3c69ae3451932df65564f532a8d14c1819adc1ae729180e080caf72761cb14df Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Tue, 11 Nov 2014 13:22:49 +0000 Subject: [PATCH] Accepting request 260844 from home:olh:branches:openSUSE:Tools - Update check-all option to really keep going and check all files - Add check to recursively look into gzip files with odd suffix to properly handle /usr/share/vlc/skins2/default.vlt - Fix quoting . remove filelist handling part of the change in previous SR. OBS-URL: https://build.opensuse.org/request/show/260844 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Tools/build-compare?expand=0&rev=151 --- build-compare.changes | 12 +++++++++++ functions.sh | 32 ++++++++++++++++++---------- rpm-check.sh | 49 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 81 insertions(+), 12 deletions(-) diff --git a/build-compare.changes b/build-compare.changes index 53a8cf0..174cefb 100644 --- a/build-compare.changes +++ b/build-compare.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Fri Nov 7 11:12:10 UTC 2014 - ohering@suse.de + +- Update check-all option to really keep going and check all files +- Add check to recursively look into gzip files with odd suffix + to properly handle /usr/share/vlc/skins2/default.vlt + +------------------------------------------------------------------- +Sat Aug 2 19:37:18 UTC 2014 - johannesobermayr@gmx.de + +- Fix quoting . + ------------------------------------------------------------------- Tue Jul 29 15:07:04 UTC 2014 - johannesobermayr@gmx.de diff --git a/functions.sh b/functions.sh index 1ad1bcf..772c0e8 100644 --- a/functions.sh +++ b/functions.sh @@ -82,25 +82,31 @@ function cmp_spec () # the DISTURL tag can be used as checkin ID #echo "$QF" if ! diff -au $file1 $file2; then - rm $file1 $file2 - return 1 + if test -z "$check_all"; then + rm $file1 $file2 + return 1 + fi fi # Remember to quote the . which is in release - release1=`$RPM --qf "%{RELEASE}" "$oldrpm"|sed -e 's/\./\\./g'` - release2=`$RPM --qf "%{RELEASE}" "$newrpm"|sed -e 's/\./\\./g'` + release1=`$RPM --qf "%{RELEASE}" "$oldrpm"|sed -e 's/\./\\\./g'` + release2=`$RPM --qf "%{RELEASE}" "$newrpm"|sed -e 's/\./\\\./g'` # This might happen with a forced rebuild of factory if [ "${release1%.*}" != "${release2%.*}" ] ; then echo "release prefix mismatch" - return 1 + if test -z "$check_all"; then + return 1 + fi fi check_provides $oldrpm $release1 > $file1 check_provides $newrpm $release2 > $file2 if ! diff -au $file1 $file2; then - rm $file1 $file2 - return 1 + if test -z "$check_all"; then + rm $file1 $file2 + return 1 + fi fi # scripts, might contain release number @@ -109,8 +115,10 @@ function cmp_spec () check_header $newrpm | sed -e "s,-$release2$,-@RELEASE@," > $file2 if ! diff -au $file1 $file2; then - rm $file1 $file2 - return 1 + if test -z "$check_all"; then + rm $file1 $file2 + return 1 + fi fi # First check the file attributes and later the md5s @@ -130,8 +138,10 @@ function cmp_spec () check_header $newrpm | sed -e "s,-$release2,-@RELEASE@," > $file2 if ! diff -au $file1 $file2; then - rm $file1 $file2 - return 1 + if test -z "$check_all"; then + rm $file1 $file2 + return 1 + fi fi # now the md5sums. if they are different, we check more detailed diff --git a/rpm-check.sh b/rpm-check.sh index b52b3a6..070cdeb 100644 --- a/rpm-check.sh +++ b/rpm-check.sh @@ -104,7 +104,9 @@ case $RES in ;; 1) echo "RPM meta information is different" - exit 1 + if test -z "$check_all"; then + exit 1 + fi ;; 2) ;; @@ -150,6 +152,45 @@ strip_numbered_anchors() } +check_gzip_file() +{ + local file=$1 + local tmpdir=`mktemp -d` + local ftype + local ret=0 + if test -n "$tmpdir"; then + mkdir $tmpdir/{old,new} + cp --parents --dereference old/$file $tmpdir/ + cp --parents --dereference new/$file $tmpdir/ + if pushd $tmpdir > /dev/null ; then + mv old/$file{,.gz} + mv new/$file{,.gz} + gunzip old/$file.gz + gunzip new/$file.gz + ftype=`/usr/bin/file old/$file | cut -d: -f2-` + case $ftype in + *POSIX\ tar\ archive) + echo "gzip content is: $ftype" + mv old/$file{,.tar} + mv new/$file{,.tar} + if ! check_single_file ${file}.tar; then + ret=1 + fi + ;; + *) + echo "unhandled gzip content: $ftype" + if ! diff_two_files; then + ret=1 + fi + ;; + esac + popd > /dev/null + fi + rm -rf "$tmpdir" + fi + return $ret +} + check_single_file() { local file="$1" @@ -513,6 +554,12 @@ check_single_file() # tar might package directories - ignore them here return 0 ;; + *gzip\ compressed\ data*) + echo "gzipped file with odd filename: $file" + if ! check_gzip_file "$file"; then + return 1 + fi + ;; *) if ! diff_two_files; then return 1