diff --git a/build-compare.changes b/build-compare.changes
index 9eca120..83f134e 100644
--- a/build-compare.changes
+++ b/build-compare.changes
@@ -1,3 +1,38 @@
+-------------------------------------------------------------------
+Tue Mar 8 18:00:40 UTC 2016 - olaf@aepfle.de
+
+- Remove hacks from /var/adm/update-scripts|messages case
+
+-------------------------------------------------------------------
+Tue Mar 8 16:48:48 UTC 2016 - olaf@aepfle.de
+
+- Handle /var/adm/update-messages in scripts and filelist
+
+-------------------------------------------------------------------
+Mon Mar 7 11:56:28 UTC 2016 - olaf@aepfle.de
+
+- Whitespace in javadoc case
+- Whitespace changes in html case
+- Move case kde/gtk html up in the case list
+- Move case rdoc html up in the case list
+- Add option -a to same-build-result.sh and loop through all rpms
+- Rework sorting of rpm files in same-build-result.sh
+- Better diagnostic if number of subpackages changes
+- Create tmpfiles earlier in same-build-result.sh
+- Handle all javadoc html files
+
+-------------------------------------------------------------------
+Fri Mar 4 18:50:32 UTC 2016 - olaf@aepfle.de
+
+- Handle yet another variant of elc timestamps
+
+-------------------------------------------------------------------
+Thu Mar 3 12:44:04 UTC 2016 - olaf@aepfle.de
+
+- Handle timestamp in dvi files
+- Handle Last-modified HTML META tag
+- Handle yet another variant of javadoc timestamps
+
-------------------------------------------------------------------
Fri Jan 1 10:11:14 UTC 2016 - schwab@suse.de
diff --git a/build-compare.spec b/build-compare.spec
index 916338e..8b61203 100644
--- a/build-compare.spec
+++ b/build-compare.spec
@@ -21,7 +21,7 @@ Summary: Build Result Compare Script
License: GPL-2.0+
Group: Development/Tools/Building
Url: https://github.com/openSUSE/build-compare
-Version: 20160104T085658.0b929c8
+Version: 20160308T194108.4a952dd
Release: 0
Source1: COPYING
Source2: same-build-result.sh
diff --git a/functions.sh b/functions.sh
index 437bb7c..d16b041 100644
--- a/functions.sh
+++ b/functions.sh
@@ -26,6 +26,7 @@ function trim_release_old()
sed -e "
/\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_old_regex_l\$\)/{s,$version_release_old_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_old_regex_s,@VERSION@-@RELEASE_SHORT@,g}
s/\(\/var\/adm\/update-scripts\/\)${name_ver_rel_old_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
+ s/\(\/var\/adm\/update-messages\/\)${name_ver_rel_old_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
"
}
function trim_release_new()
@@ -33,16 +34,17 @@ function trim_release_new()
sed -e "
/\(\/boot\|\/lib\/modules\|\/lib\/firmware\|\/usr\/src\|$version_release_new_regex_l\$\)/{s,$version_release_new_regex_l,@VERSION@-@RELEASE_LONG@,g;s,$version_release_new_regex_s,@VERSION@-@RELEASE_SHORT@,g}
s/\(\/var\/adm\/update-scripts\/\)${name_ver_rel_new_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
+ s/\(\/var\/adm\/update-messages\/\)${name_ver_rel_new_regex_l}\([^[:blank:]]\+\)/\1@NAME_VER_REL@\2/g
"
}
# Get single directory or filename with long or short release string
function grep_release_old()
{
- grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src)/[^/]*(${version_release_old_regex_l}(\$|[^/]+\$)|${version_release_old_regex_s}(\$|[^/]+\$))"
+ grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src|/var/adm/update-scripts)/[^/]*(${version_release_old_regex_l}(\$|[^/]+\$)|${version_release_old_regex_s}(\$|[^/]+\$))"
}
function grep_release_new()
{
- grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src)/[^/]*(${version_release_new_regex_l}(\$|[^/]+\$)|${version_release_new_regex_s}(\$|[^/]+\$))"
+ grep -E "(/boot|/lib/modules|/lib/firmware|/usr/src|/var/adm/update-scripts)/[^/]*(${version_release_new_regex_l}(\$|[^/]+\$)|${version_release_new_regex_s}(\$|[^/]+\$))"
}
function check_provides()
diff --git a/pkg-diff.sh b/pkg-diff.sh
index 8e51a9b..f100be0 100644
--- a/pkg-diff.sh
+++ b/pkg-diff.sh
@@ -440,6 +440,31 @@ check_single_file()
perl -e "open fh, '+<', 'old/$file'; seek fh, 4, SEEK_SET; print fh '0000';"
perl -e "open fh, '+<', 'new/$file'; seek fh, 4, SEEK_SET; print fh '0000';"
;;
+ *.dvi)
+ # Opcodes 247: pre; i[1], num[4], den[4], mag[4], k[1], x[k]
+ perl -e "
+ my \$rec;
+ open fh, '+<', 'old/$file';
+ my \$dummy = read fh, \$rec, 15;
+ (\$pre, \$i, \$num, \$den, \$mag, \$k) = unpack('C2 N3 C', \$rec);
+ seek fh, 15, SEEK_SET;
+ while (\$k > 0) {
+ print fh '0';
+ \$k--;
+ }
+ "
+ perl -e "
+ my \$rec;
+ open fh, '+<', 'new/$file';
+ my \$dummy = read fh, \$rec, 15;
+ (\$pre, \$i, \$num, \$den, \$mag, \$k) = unpack('C2 N3 C', \$rec);
+ seek fh, 15, SEEK_SET;
+ while (\$k > 0) {
+ print fh '0';
+ \$k--;
+ }
+ "
+ ;;
*.bz2)
bunzip2 -c old/$file > old/${file/.bz2/}
bunzip2 -c new/$file > new/${file/.bz2/}
@@ -474,69 +499,85 @@ check_single_file()
sed -i -e "s,POT-Creation-Date: ....-..-.. ..:..+....,POT-Creation-Date: 1970-01-01 00:00+0000," $f
done
;;
- /usr/share/doc/packages/*/*.html|\
- /usr/share/doc/packages/*/*/*.html|\
- /usr/share/doc/*/html/*.html|\
- /usr/share/doc/kde/HTML/*/*/*.html)
- for f in old/$file new/$file; do
+ */rdoc/files/*.html)
+ # ruby documentation
+ #
Mon Sep 20 19:02:43 +0000 2010 |
+ for f in old/$file new/$file; do
+ sed -i -e 's%[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+ +0000 201[0-9] | %Mon Sep 20 19:02:43 +0000 2010 | %g' $f
+ done
+ strip_numbered_anchors
+ ;;
+ /usr/share/doc/kde/HTML/*/*/index.cache|/usr/share/doc/kde/HTML/*/*/*/index.cache|\
+ /usr/share/gtk-doc/html/*/*.html|/usr/share/gtk-doc/html/*/*.devhelp2)
+ # various kde and gtk packages
+ strip_numbered_anchors
+ ;;
+ /usr/share/doc/packages/*/*.html|\
+ /usr/share/doc/packages/*/*/*.html|\
+ /usr/share/doc/*/html/*.html|\
+ /usr/share/doc/kde/HTML/*/*/*.html)
+ for f in old/$file new/$file; do
sed -i -e '
- s|||
- s|
- #
- #
- #
- sed -i -e '
- /^/{
- : next
- n
- /^<\/head>/{
- b end_head
- }
- s/^\(\)/\1 some-date-removed-by-build-compare \5/
- t next
- s/^\(\)/\1 some-date-removed-by-build-compare \3/
- t next
- s/^//
- b next
- }
- : end_head
+ s|META NAME="Last-modified" CONTENT="[^"]\+"|META NAME="Last-modified" CONTENT="Thu Mar 3 10:32:44 2016"|
+ s|||
+ s|
+ #
+ #
+ #
+ #
+ sed -i -e '
+ /^/{
+ : next
+ n
+ /^<\/head>/{
+ b end_head
+ }
+ s/^//
+ t next
+ s/^\(\)/\1 some-date-removed-by-build-compare \5/
+ t next
+ s/^\(\)/\1 some-date-removed-by-build-compare \3/
+ t next
+ s/^//
+ b next
+ }
+ : end_head
+ ' $f
+ # Gjdoc HtmlDoclet:
+ sed -i -e 's%Generated by Gjdoc HtmlDoclet [0-9,.]*, part of GNU Classpath Tools, on .*, 20.. [0-9]*:..:.. \(a\|p\)\.m\. GMT.%Generated by Gjdoc.%' $f
+ sed -i -e 's%, on [A-Z][a-z]* [0-9]*, 20?? [0-9]*:??:?? \(a|p\)\.m\. GMT.%, on January 1, 2009 0:00:00 a.m. GMT.%' $f
+ sed -i -e 's%%' $f
+ # deprecated-list is randomly ordered, sort it for comparison
+ case $f in
+ */deprecated-list.html)
+ sort -o $f $f
+ ;;
+ esac
+ done
+ ;;
+ /usr/share/javadoc/gjdoc.properties |\
+ /usr/share/javadoc/*/gjdoc.properties)
+ for f in old/$file new/$file; do
+ sed -i -e 's|^#[A-Z][a-z]\{2\} [A-Z][a-z]\{2\} [0-9]\{2\} ..:..:.. GMT 20..$|#Fri Jan 01 11:27:36 GMT 2009|' $f
+ done
+ ;;
*/fonts.scale|*/fonts.dir|*/encodings.dir)
for f in old/$file new/$file; do
# sort files before comparing
@@ -568,7 +609,12 @@ check_single_file()
*.elc)
# emacs lisp files
for f in old/$file new/$file; do
- sed -i -e 's|Compiled by abuild@.* on ... ... .. ..:..:.. 20..$|compiled by abuild@buildhost on Wed Jul 01 00:00:00 2009|' $f
+ sed -i -e '
+ s|^;;; .ompiled by abuild@.* on ... ... .. ..:..:.. ....|;;; compiled by abuild@buildhost on Wed Jul 01 00:00:00 2009|
+ s|^;;; from file .*\.el|;;; from file /home/abuild/rpmbuild/BUILD/anthy-9100h/src-util/elc.8411/anthy-azik.el|
+ s|^;;; emacs version .*|;;; emacs version 21.5 (beta34) "kale" XEmacs Lucid.|
+ s|^;;; bytecomp version .*|;;; bytecomp version 2.28 XEmacs; 2009-08-09.|
+ ' $f
done
;;
/var/lib/texmf/web2c/*/*fmt |\
@@ -590,25 +636,12 @@ check_single_file()
sed -i -e 's|built by abuild@[a-z0-9]* on ... ... [0-9]* [0-9]*:[0-9][0-9]:[0-9][0-9] .* 20[0-9][0-9]|built by abuild@build42 on Thu May 6 11:21:17 UTC 2010|' $f
done
;;
- /usr/share/doc/kde/HTML/*/*/index.cache|/usr/share/doc/kde/HTML/*/*/*/index.cache|\
- /usr/share/gtk-doc/html/*/*.html|/usr/share/gtk-doc/html/*/*.devhelp2)
- # various kde and gtk packages
- strip_numbered_anchors
- ;;
*/created.rid)
# ruby documentation
# file just contains a timestamp and nothing else, so ignore it
echo "Ignore $file"
return 0
;;
- */rdoc/files/*.html)
- # ruby documentation
- # Mon Sep 20 19:02:43 +0000 2010 |
- for f in old/$file new/$file; do
- sed -i -e 's%[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+ +0000 201[0-9] | %Mon Sep 20 19:02:43 +0000 2010 | %g' $f
- done
- strip_numbered_anchors
- ;;
*/Linux*Env.Set.sh)
# LibreOffice files, contains:
# Generated on: Mon Apr 18 13:19:22 UTC 2011
@@ -622,19 +655,9 @@ check_single_file()
return 0
;;
/var/adm/update-messages/*|/var/adm/update-scripts/*)
- # encode version-release inside
- oldfn=`echo "$file"|sed -e s/-$release2/-$release1/;`
-
# fetchmsttfonts embeds the release number in the update shell script.
- echo sed -i -e "s/-$release1/-$release2/g;" "old/$oldfn"
- sed -i -e "s/-$release1/-$release2/g;" "old/$oldfn"
-
- if ! diff -u old/$oldfn new/$file; then
- echo "$oldfn is not same as $file"
- return 1
- fi
- echo "$file and $oldfn are same"
- return 0
+ sed -i "s/${name_ver_rel_old_regex_l}/@NAME_VER_REL@/" old/$file
+ sed -i "s/${name_ver_rel_new_regex_l}/@NAME_VER_REL@/" new/$file
;;
*.ps)
for f in "old/$file" "new/$file"; do
diff --git a/same-build-result.sh b/same-build-result.sh
index d41e108..6636dac 100644
--- a/same-build-result.sh
+++ b/same-build-result.sh
@@ -14,7 +14,20 @@
CMPSCRIPT=${0%/*}/pkg-diff.sh
SCMPSCRIPT=${0%/*}/srpm-check.sh
-check_all=1
+file1=`mktemp`
+file2=`mktemp`
+_x() {
+ rm -f ${file1} ${file2}
+}
+trap _x EXIT
+#
+check_all=
+if test "$1" = "-a"
+then
+ check_all="-a"
+ shift
+fi
+#
OLDDIR="$1"
shift
NEWDIRS="$*"
@@ -32,7 +45,9 @@ fi
if test `find $NEWDIRS -name '*.rpm' -and ! -name '*.delta.rpm' | wc -l` != `find $OLDDIR -name '*.rpm' -and ! -name '*.delta.rpm' | wc -l`; then
echo "different number of subpackages"
- find $OLDDIR $NEWDIRS -name '*.rpm' -and ! -name '*.delta.rpm'
+ find $OLDDIR -name '*.rpm' -and ! -name '*.delta.rpm' -print0 | xargs -0 rpm -qp --qf '%{NAME}\n' | sort > ${file1}
+ find $NEWDIRS -name '*.rpm' -and ! -name '*.delta.rpm' -print0 | xargs -0 rpm -qp --qf '%{NAME}\n' | sort > ${file2}
+ diff -u ${file1} ${file2}
exit 1
fi
@@ -59,8 +74,22 @@ bash $SCMPSCRIPT "$osrpm" "$nsrpm" || exit 1
# problem: a package can contain both noarch and arch subpackages, so we have to
# take care of proper sorting of NEWRPMS, e.g. noarch/x.rpm and x86_64/w.rpm since OLDRPMS
# has all the packages in a single directory and would sort this as w.rpm, x.rpm.
-OLDRPMS=($(find "$OLDDIR" -type f -name \*rpm -a ! -name \*src.rpm -a ! -name \*.delta.rpm|sort|grep -v -- -32bit-|grep -v -- -64bit-|grep -v -- '-x86-.*\.ia64\.rpm'))
-NEWRPMS=($(find $NEWDIRS -type f -name \*rpm -a ! -name \*src.rpm -a ! -name \*.delta.rpm|sort --field-separator=/ --key=7|grep -v -- -32bit-|grep -v -- -64bit-|grep -v -- '-x86-.*\.ia64\.rpm'))
+find $OLDDIR -type f -name '*.rpm' \
+ -a ! -name '*src.rpm' \
+ -a ! -name '*.delta.rpm' \
+ -a ! -name '*-32bit-*' \
+ -a ! -name '*-64bit-*' \
+ -a ! -name '*-x86-*.ia64.rpm' \
+ > ${file1}
+find $NEWDIRS -type f -name '*.rpm' \
+ -a ! -name '*src.rpm' \
+ -a ! -name '*.delta.rpm' \
+ -a ! -name '*-32bit-*' \
+ -a ! -name '*-64bit-*' \
+ -a ! -name '*-x86-*.ia64.rpm' \
+ > ${file2}
+OLDRPMS=($( sort --field-separator=/ --key=` sed -n '1s@[^/]@@gp' ${file1} | wc -c ` ${file1} ))
+NEWRPMS=($( sort --field-separator=/ --key=` sed -n '1s@[^/]@@gp' ${file2} | wc -c ` ${file2} ))
# Get version-release from first RPM and keep for rpmlint check
# Remember to quote the "." for future regexes
@@ -84,11 +113,7 @@ for opac in ${OLDRPMS[*]}; do
echo "skipping -debuginfo package"
;;
*)
- bash $CMPSCRIPT "$opac" "$npac" || SUCCESS=0
- if test $SUCCESS -eq 0 -a -z "$check_all"; then
- echo "differences between $opac and $npac"
- exit 1
- fi
+ bash $CMPSCRIPT $check_all "$opac" "$npac" || SUCCESS=0
;;
esac
done
@@ -110,8 +135,6 @@ fi
if test -n "$OTHERDIR"; then
if test -e $OLDDIR/rpmlint.log -a -e $OTHERDIR/rpmlint.log; then
- file1=`mktemp`
- file2=`mktemp`
echo "comparing $OLDDIR/rpmlint.log and $OTHERDIR/rpmlint.log"
# Sort the files first since the order of messages is not deterministic
# Remove release from files