diff --git a/build-compare.changes b/build-compare.changes index 176fb06..2744b71 100644 --- a/build-compare.changes +++ b/build-compare.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Mar 23 13:37:47 UTC 2010 - aj@suse.de + +- Handle mono files. +- Mount /proc if it's not mounted already to work around bug in + build script. + ------------------------------------------------------------------- Sun Mar 14 09:22:39 UTC 2010 - aj@suse.de diff --git a/build-compare.spec b/build-compare.spec index 58a7dc6..3b78c7b 100644 --- a/build-compare.spec +++ b/build-compare.spec @@ -24,7 +24,7 @@ Group: Development/Tools/Building AutoReqProv: on Summary: Build Result Compare Script Version: 2009.10.14 -Release: 6 +Release: 7 Source: same-build-result.sh Source1: rpm-check.sh Source2: COPYING diff --git a/rpm-check.sh b/rpm-check.sh index c168fb2..6ad4816 100644 --- a/rpm-check.sh +++ b/rpm-check.sh @@ -1,6 +1,6 @@ #! /bin/bash # -# Copyright (c) 2009 SUSE Linux Product Gmbh, Germany. +# Copyright (c) 2009, 2010 SUSE Linux Product GmbH, Germany. # Licensed under GPL v2, see COPYING file for details. # # Written by Michael Matz and Stephan Coolo @@ -238,12 +238,9 @@ check_single_file() sed -i -e "s,Release:.*$release1,Release: @RELEASE@," old/$file sed -i -e "s,Release:.*$release2,Release: @RELEASE@," new/$file ;; - *.dll|*.exe) - # we can't handle it well enough - if ! cmp -s old/$file new/$file; then - echo "mono $file differs" - return 1 - fi + *.exe.mdb|*.dll.mdb) + # Just debug information, we can skip them + echo "$file skipped as debug file." return 0 ;; *.a) @@ -417,6 +414,21 @@ check_single_file() ftype=`/usr/bin/file old/$file | cut -d: -f2-` case $ftype in + *PE32\ executable*Mono\/\.Net\ assembly*) + echo "PE32 Mono/.Net assembly: $file" + if [ -x /usr/bin/monodis ] ; then + monodis old/$file 2>/dev/null|sed -e 's/GUID = {.*}/GUID = { 42 }/;'> ${file1} + monodis new/$file 2>/dev/null|sed -e 's/GUID = {.*}/GUID = { 42 }/;'> ${file2} + if ! cmp -s ${file1} ${file2}; then + echo "$file differs ($ftype)" + diff -u ${file1} ${file2} + return 1 + fi + else + echo "Cannot compare, no monodis installed" + return 1 + fi + ;; *executable*|*LSB\ shared\ object*) objdump -d --no-show-raw-insn old/$file | filter_disasm > $file1 if ! test -s $file1; then @@ -466,6 +478,15 @@ check_single_file() return 0 } +# We need /proc mounted for some tests, so check that it's mounted and +# complain if not. +PROC_MOUNTED=0 +if [ ! -d /proc/self/ ]; then + echo "/proc is not mounted" + mount -orw -n -tproc none /proc + PROC_MOUNTED=1 +fi + ret=0 for file in $files; do if ! check_single_file $file; then @@ -476,6 +497,11 @@ for file in $files; do fi done +if [ "$PROC_MOUNTED" -eq "1" ]; then + echo "Unmounting proc" + umount /proc +fi + rm $file1 $file2 $dfile rm -r $dir exit $ret diff --git a/same-build-result.sh b/same-build-result.sh index aab2e5d..8706d29 100644 --- a/same-build-result.sh +++ b/same-build-result.sh @@ -16,7 +16,6 @@ OLDDIR="$1" shift NEWDIRS="$*" - echo "$CMPSCRIPT" if [ ! -d "$OLDDIR" ]; then