From 4de3df5a1b361cd09a081f0e0bdb94cbf684ed48 Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Thu, 19 Feb 2015 00:34:47 -0800
Subject: [PATCH] Rename rpm-check.sh to pkg-diff.sh.

The tool now accepts package input other than rpm, so change the name
which could be misleading.

Upstream-Status: Submitted [https://github.com/openSUSE/build-compare/pulls]

Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>

Updated for rpm-check.sh.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 build-compare.spec   |    2 +-
 pkg-diff.sh          |  765 ++++++++++++++++++++++++++++++++++++++++++++++++++
 rpm-check.sh         |  764 -------------------------------------------------
 same-build-result.sh |    4 +-
 4 files changed, 768 insertions(+), 767 deletions(-)
 create mode 100644 pkg-diff.sh
 delete mode 100755 rpm-check.sh

diff --git a/build-compare.spec b/build-compare.spec
index 14a97e9..5f47ca1 100644
--- a/build-compare.spec
+++ b/build-compare.spec
@@ -25,7 +25,7 @@ Version:        2015.02.10
 Release:        0
 Source1:        COPYING
 Source2:        same-build-result.sh
-Source3:        rpm-check.sh
+Source3:        pkg-diff.sh
 Source4:        functions.sh
 Source5:        srpm-check.sh
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
diff --git a/pkg-diff.sh b/pkg-diff.sh
new file mode 100644
index 0000000..56035c1
--- /dev/null
+++ b/pkg-diff.sh
@@ -0,0 +1,765 @@
+#! /bin/bash
+#
+# Copyright (c) 2009, 2010, 2011, 2012 SUSE Linux Product GmbH, Germany.
+# Licensed under GPL v2, see COPYING file for details.
+#
+# Written by Michael Matz and Stephan Coolo
+# Enhanced by Andreas Jaeger
+
+FUNCTIONS=${0%/*}/functions.sh
+
+check_all=
+case $1 in
+  -a | --check-all)
+    check_all=1
+    shift
+esac
+
+if test "$#" != 2; then
+   echo "usage: $0 [-a|--check-all] old.rpm new.rpm"
+   exit 1
+fi
+
+self_script=$(cd $(dirname $0); echo $(pwd)/$(basename $0))
+
+source $FUNCTIONS
+
+oldpkg=`readlink -f $1`
+newpkg=`readlink -f $2`
+rename_script=`mktemp`
+
+if test ! -f "$oldpkg"; then
+    echo "can't open $1"
+    exit 1
+fi
+
+if test ! -f "$newpkg"; then
+    echo "can't open $2"
+    exit 1
+fi
+
+#usage unjar <file>
+function unjar()
+{
+    local file
+    file=$1
+
+    if [[ $(type -p fastjar) ]]; then
+        UNJAR=fastjar
+    elif [[ $(type -p jar) ]]; then
+        UNJAR=jar
+    elif [[ $(type -p unzip) ]]; then
+        UNJAR=unzip
+    else
+        echo "ERROR: jar, fastjar, or unzip is not installed (trying file $file)"
+        exit 1
+    fi
+
+    case $UNJAR in
+        jar|fastjar)
+        # echo jar -xf $file
+        ${UNJAR} -xf $file
+        ;;
+        unzip)
+        unzip -oqq $file
+        ;;
+    esac
+}
+
+# list files in directory
+#usage unjar_l <file>
+function unjar_l()
+{
+    local file
+    file=$1
+
+    if [[ $(type -p fastjar) ]]; then
+        UNJAR=fastjar
+    elif [[ $(type -p jar) ]]; then
+        UNJAR=jar
+    elif [[ $(type -p unzip) ]]; then
+        UNJAR=unzip
+    else
+        echo "ERROR: jar, fastjar, or unzip is not installed (trying file $file)"
+        exit 1
+    fi
+
+    case $UNJAR in
+        jar|fastjar)
+        ${UNJAR} -tf $file
+        ;;
+        unzip)
+        unzip -l $file
+        ;;
+    esac
+}
+
+filter_disasm()
+{
+   sed -e 's/^ *[0-9a-f]\+://' -e 's/\$0x[0-9a-f]\+/$something/' -e 's/callq *[0-9a-f]\+/callq /' -e 's/# *[0-9a-f]\+/#  /' -e 's/\(0x\)\?[0-9a-f]\+(/offset(/' -e 's/[0-9a-f]\+ </</' -e 's/^<\(.*\)>:/\1:/' -e 's/<\(.*\)+0x[0-9a-f]\+>/<\1 + ofs>/' 
+}
+
+echo "Comparing `basename $oldpkg` to `basename $newpkg`"
+
+case $oldpkg in
+  *.rpm)
+     cmp_spec $rename_script $oldpkg $newpkg
+     RES=$?
+     case $RES in
+       0)
+          echo "RPM meta information is identical"
+          if test -z "$check_all"; then
+             exit 0
+          fi
+          ;;
+       1)
+          echo "RPM meta information is different"
+          if test -z "$check_all"; then
+             exit 1
+          fi
+          ;;
+       2)
+          echo "RPM file checksum differs."
+          RES=0
+          ;;
+       *)
+          echo "Wrong exit code!"
+          exit 1
+          ;;
+     esac
+     ;;
+esac
+
+file1=`mktemp`
+file2=`mktemp`
+
+dir=`mktemp -d`
+echo "Extracting packages"
+unpackage $oldpkg $dir/old
+unpackage $newpkg $dir/new
+
+# files is set in cmp_spec for rpms, so if RES is empty we should assume
+# it wasn't an rpm and pick all files for comparison.
+if [ -z $RES ]; then
+    oldfiles=`cd $dir/old; find . -type f`
+    newfiles=`cd $dir/new; find . -type f`
+
+    files=`echo -e "$oldfiles\n$newfiles" | sort -u`
+fi
+
+cd $dir
+bash $rename_script
+
+dfile=`mktemp`
+
+diff_two_files()
+{
+  if ! cmp -s old/$file new/$file; then
+     echo "$file differs ($ftype)"
+     hexdump -C old/$file > $file1
+     hexdump -C new/$file > $file2
+     diff -u $file1 $file2 | head -n 200
+     return 1
+  fi
+  return 0
+}
+
+trim_man_first_line()
+{
+    # Handles the first line if it is like:
+    #.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
+    #.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.43.3.
+    local f=$1
+    sed -i -e '1{
+    s|^\.\\"[[:blank:]]\+Automatically[[:blank:]]generated[[:blank:]]by[[:blank:]]Pod::Man[[:blank:]].*|.\\" Overly verbose Pod::Man|
+    s|^\.\\"[[:blank:]]\+DO[[:blank:]]NOT[[:blank:]]MODIFY[[:blank:]]THIS[[:blank:]]FILE![[:blank:]]\+It[[:blank:]]was[[:blank:]]generated[[:blank:]]by[[:blank:]]help2man[[:blank:]].*|.\\" Overly verbose help2man|
+    }' $f
+}
+
+trim_man_TH()
+{
+    # Handles lines like:
+    # .TH debhelper 7 "2010-02-27" "7.4.15" "Debhelper"
+    # .TH DIRMNGR-CLIENT 1 2010-02-27 "Dirmngr 1.0.3" "GNU Privacy Guard"
+    # .TH ccmake 1 "March 06, 2010" "ccmake 2.8.1-rc3"
+    # .TH QEMU-IMG 1 "2010-03-14" " " " "
+    # .TH kdecmake 1 "May 07, 2010" "cmake 2.8.1"
+    # .TH "appender.h" 3 "12 May 2010" "Version 1.2.1" "log4c" \" -*- nroff -*-
+    # .TH "appender.h" 3 "Tue Aug 31 2010" "Version 1.2.1" "log4c" \" -*- nroff -*-
+    # .TH "OFFLINEIMAP" "1" "11 May 2010" "John Goerzen" "OfflineIMAP Manual"
+    # .TH gv 3guile "13 May 2010"
+    #.TH "GIT\-ARCHIMPORT" "1" "09/13/2010" "Git 1\&.7\&.1" "Git Manual"
+    # .TH LDIRECTORD 8 "2010-10-20" "perl v5.12.2" "User Contributed Perl Documentation"
+    # .TH ccmake 1 "February 05, 2012" "ccmake 2.8.7"
+    # .TH "appender.h" 3 "Tue Aug 31 2010" "Version 1.2.1" "log4c" \" -*- nroff -*-
+    # .TH ARCH "1" "September 2010" "GNU coreutils 8.5" "User Commands"
+    # .TH "GCM-CALIBRATE" "1" "03 February 2012" "" ""
+    #.TH Locale::Po4a::Xml.pm 3pm "2015-01-30" "Po4a Tools" "Po4a Tools"
+    local f=$1
+    # (.TH   quoted section) (quoted_date)(*)
+    sed -i -e 's|^\([[:blank:]]*\.TH[[:blank:]]\+"[^"]\+"[[:blank:]]\+[^[:blank:]]\+\)[[:blank:]]\+\("[^"]\+"\)\([[:blank:]]\+.*\)\?|\1 "qq2000-01-01"\3|' $f
+    # (.TH unquoted section) (quoted_date)(*)
+    sed -i -e 's|^\([[:blank:]]*\.TH[[:blank:]]\+[^"][^[:blank:]]\+[[:blank:]]\+[^[:blank:]]\+\)[[:blank:]]\+\("[^"]\+"\)\([[:blank:]]\+.*\)\?|\1 "uq2000-02-02"\3|' $f
+    # (.TH   quoted section) (unquoted_date)(*)
+    sed -i -e 's|^\([[:blank:]]*\.TH[[:blank:]]\+"[^"]\+"[[:blank:]]\+[^[:blank:]]\+\)[[:blank:]]\+\([^"][^[:blank:]]\+\)\([[:blank:]]\+.*\)\?|\1 qu2000-03-03\3|' $f
+    # (.TH unquoted section) (unquoted_date)(*)
+    sed -i -e 's|^\([[:blank:]]*\.TH[[:blank:]]\+[^"][^[:blank:]]\+[[:blank:]]\+[^[:blank:]]\+\)[[:blank:]]\+\([^"][^[:blank:]]\+\)\([[:blank:]]\+.*\)\?|\1 uu2000-04-04\3|' $f
+}
+
+strip_numbered_anchors()
+{
+  # Remove numbered anchors on Docbook / HTML files.
+  # This should be save since we remove them from old and new files.
+  # A trailing </a> or </div> tag will stay also on both files.
+  for f in old/$file new/$file; do
+     sed -i -e 's%<[ ]*a[ ]\+name[^<]*[0-9]\+[^<]*%%g' \
+     -e 's%<[ ]*a[ ]\+href[^<]*#[^<]*[0-9]\+[^<]*%%g' \
+     -e 's%<[^<]*id="ftn\.[^<]*[0-9]\+[^<]*%%g' $f
+  done
+}
+
+
+check_compressed_file()
+{
+  local file=$1
+  local ext=$2
+  local tmpdir=`mktemp -d`
+  local ftype
+  local ret=0
+  echo "$ext file with odd filename: $file"
+  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
+      case "$ext" in
+        bz2)
+          mv old/$file{,.bz2}
+          mv new/$file{,.bz2}
+          bzip2 -d old/$file.bz2
+          bzip2 -d new/$file.bz2
+          ;;
+        gzip)
+          mv old/$file{,.gz}
+          mv new/$file{,.gz}
+          gzip -d old/$file.gz
+          gzip -d new/$file.gz
+          ;;
+        xz)
+          mv old/$file{,.xz}
+          mv new/$file{,.xz}
+          xz -d old/$file.xz
+          xz -d new/$file.xz
+          ;;
+      esac
+      ftype=`/usr/bin/file old/$file | sed 's@^[^:]\+:[[:blank:]]*@@'`
+      case $ftype in
+        POSIX\ tar\ archive)
+          echo "$ext content is: $ftype"
+          mv old/$file{,.tar}
+          mv new/$file{,.tar}
+          if ! check_single_file ${file}.tar; then
+            ret=1
+          fi
+          ;;
+        ASCII\ cpio\ archive\ *)
+          echo "$ext content is: $ftype"
+          mv old/$file{,.cpio}
+          mv new/$file{,.cpio}
+          if ! check_single_file ${file}.cpio; then
+            ret=1
+          fi
+          ;;
+        *)
+          echo "unhandled $ext 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"
+  case $file in
+    *.spec)
+       sed -i -e "s,Release:.*$release1,Release: @RELEASE@," old/$file
+       sed -i -e "s,Release:.*$release2,Release: @RELEASE@," new/$file
+       ;;
+    *.exe.mdb|*.dll.mdb)
+       # Just debug information, we can skip them
+       echo "$file skipped as debug file."
+       return 0
+       ;;
+    *.a)
+       flist=`ar t new/$file`
+       pwd=$PWD
+       fdir=`dirname $file`
+       cd old/$fdir
+       ar x `basename $file`
+       cd $pwd/new/$fdir
+       ar x `basename $file`
+       cd $pwd
+       for f in $flist; do
+          if ! check_single_file $fdir/$f; then
+             return 1
+          fi
+       done
+       return 0
+       ;;
+    *.cpio)
+       flist=`cpio --quiet --list --force-local < "new/$file"`
+       pwd=$PWD
+       fdir=$file.extract.$PPID.$$
+       mkdir old/$fdir new/$fdir
+       cd old/$fdir
+       cpio --quiet --extract --force-local < "../${file##*/}"
+       cd $pwd/new/$fdir
+       cpio --quiet --extract --force-local < "../${file##*/}"
+       cd $pwd
+       local ret=0
+       for f in $flist; do
+         if ! check_single_file $fdir/$f; then
+           ret=1
+           if test -z "$check_all"; then
+             break
+           fi
+         fi
+       done
+       rm -rf old/$fdir new/$fdir
+       return $ret
+       ;;
+    *.tar|*.tar.bz2|*.tar.gz|*.tgz|*.tbz2)
+       flist=`tar tf new/$file`
+       pwd=$PWD
+       fdir=`dirname $file`
+       cd old/$fdir
+       tar xf `basename $file`
+       cd $pwd/new/$fdir
+       tar xf `basename $file`
+       cd $pwd
+       local ret=0
+       for f in $flist; do
+         if ! check_single_file $fdir/$f; then
+           ret=1
+           if test -z "$check_all"; then
+             break
+           fi
+         fi
+       done
+       return $ret
+       ;;
+    *.zip|*.jar|*.war)
+       cd old
+       unjar_l ./$file |sort > flist
+       #  10-05-2010 14:39
+       sed -i -e "s, [0-9][0-9]-[0-9][0-9]-[0-9]\+ [0-9][0-9]:[0-9][0-9] , date ," flist
+       # 2012-02-03 07:59
+       sed -i -e "s, 20[0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9] , date ," flist
+       cd ../new
+       unjar_l ./$file |sort> flist
+       sed -i -e "s, [0-9][0-9]-[0-9][0-9]-[0-9]\+ [0-9][0-9]:[0-9][0-9] , date ,; " flist
+       sed -i -e "s, 20[0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9] , date ," flist
+       cd ..
+       if ! cmp -s old/flist new/flist; then
+          echo "$file has different file list"
+          diff -u old/flist new/flist
+          return 1
+       fi
+       flist=`grep date new/flist | sed -e 's,.* date ,,'`
+       pwd=$PWD
+       fdir=`dirname $file`
+       cd old/$fdir
+       unjar `basename $file`
+       cd $pwd/new/$fdir
+       unjar `basename $file`
+       cd $pwd
+       local ret=0
+       for f in $flist; do
+         if test -f new/$fdir/$f && ! check_single_file $fdir/$f; then
+           ret=1
+           if test -z "$check_all"; then
+             break
+           fi
+         fi
+       done
+       return $ret;;
+     *.pyc|*.pyo)
+        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';"
+        ;;
+     *.bz2)
+        bunzip2 -c old/$file > old/${file/.bz2/}
+        bunzip2 -c new/$file > new/${file/.bz2/}
+        check_single_file ${file/.bz2/}
+        return $?
+        ;;
+     *.gz)
+        gunzip -c old/$file > old/${file/.gz/}
+        gunzip -c new/$file > new/${file/.gz/}
+        check_single_file ${file/.gz/}
+        return $?
+        ;;
+     *.rpm)
+	$self_script -a old/$file new/$file
+        return $?
+        ;;
+     *png)
+	# Try to remove timestamps, only if convert from ImageMagick is installed
+        if [[ $(type -p convert) ]]; then
+	  convert old/$file +set date:create +set date:modify old/${file/.png/_n.png}
+	  convert old/$file +set date:create +set date:modify new/${file/.png/_n.png}
+	  if ! cmp -s old/${file/.png/_n.png} new/${file/.png/_n.png}; then
+	      echo "$file differs ($ftype)"
+	      hexdump -C old/${file/.png/_n.png} > $file1
+	      hexdump -C new/${file/.png/_n.png} > $file2
+	      diff -u $file1 $file2 | head -n 20
+	      return 1
+	  fi
+	  return 0
+	fi
+        ;;
+     /usr/share/locale/*/LC_MESSAGES/*.mo|/usr/share/locale-bundle/*/LC_MESSAGES/*.mo)
+       for f in old/$file new/$file; do
+         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/kde/HTML/*/*/*.html|/usr/share/doc/*/html/*.html)
+       for f in old/$file new/$file; do
+         # texi2html output, e.g. in kvm, indent, qemu
+	 sed -i -e "s|^<!-- Created on .*, 20.. by texi2html .\...|<!-- Created on August 7, 2009 by texi2html 1.82|" $f
+	 sed -i -e 's|^ *This document was generated by <em>Autobuild</em> on <em>.*, 20..</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html .\...</em></a>.$|  This document was generated by <em>Autobuild</em> on <em>August 7, 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.|' $f
+	 # doxygen docu, e.g. in libssh and log4c
+	 sed -i -e 's|Generated on ... ... [0-9]* [0-9]*:[0-9][0-9]:[0-9][0-9] 20[0-9][0-9] for |Generated on Mon May 10 20:45:00 2010 for |' $f
+	 # Generated on Sat Aug 14 2010 16:49:48 for libssh
+	 sed -i -e 's|Generated on ... ... [0-9]* 20[0-9][0-9] [0-9]*:[0-9][0-9]:[0-9][0-9] for |Generated on Mon May 10 20:45:00 2010 for |' $f
+       done
+       strip_numbered_anchors
+       ;;
+     /usr/share/javadoc/*.html |\
+     /usr/share/javadoc/*/*.html|/usr/share/javadoc/*/*/*.html)
+       strip_numbered_anchors
+       # There are more timestamps in html, so far we handle only some primitive versions.
+       for f in old/$file new/$file; do
+         # Javadoc:
+          # <head>
+          # <!-- Generated by javadoc (version 1.7.0_75) on Tue Feb 03 02:20:12 GMT 2015 -->
+          # <!-- Generated by javadoc on Tue Feb 03 00:02:48 GMT 2015 -->
+          # <meta name="date" content="2015-02-03">
+          # </head>
+          sed -i -e '
+            /^<head>/{
+              : next
+              n
+              /^<\/head>/{
+                b end_head
+              }
+              s/^\(<!-- Generated by javadoc\) \((\(build\|version\) [0-9._]\+) on ... ... .. ..:..:.. \(GMT\|UTC\) ....\) \(-->\)/\1 some-date-removed-by-build-compare \5/
+              t next
+              s/^\(<!-- Generated by javadoc\) \(on ... ... .. ..:..:.. \(GMT\|UTC\) ....\) \(-->\)/\1 some-date-removed-by-build-compare \3/
+              t next
+              s/^<meta name="date" content="[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}">/<meta name="date" content="some-date-removed-by-build-compare">/
+              b next
+            }
+            : end_head
+          ' $f
+         # Gjdoc HtmlDoclet:
+	 sed -i -e 's%Generated by Gjdoc HtmlDoclet [0-9,.]*, part of <a href="http://www.gnu.org/software/classpath/cp-tools/" title="" target="_top">GNU Classpath Tools</a>, on .*, 20.. [0-9]*:..:.. \(a\|p\)\.m\. GMT.%Generated by Gjdoc.%' $f
+	 sed -i -e 's%<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN"\(.*\)GNU Classpath Tools</a>, on [A-Z][a-z]* [0-9]*, 20?? [0-9]*:??:?? \(a|p\)\.m\. GMT.</p>%<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN"\1GNU Classpath Tools</a>, on January 1, 2009 0:00:00 a.m. GMT.</p>%' $f
+	 sed -i -e 's%<!DOCTYPE html PUBLIC "-//gnu.org///DTD\(.*GNU Classpath Tools</a>\), on [a-zA-Z]* [0-9][0-9], 20.. [0-9]*:..:.. \(a\|p\)\.m\. GMT.</p>%<!DOCTYPE html PUBLIC "-//gnu.org///DTD\1,on May 1, 2010 1:11:42 p.m. GMT.</p>%' $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
+         sort -o $f $f
+       done
+       ;;
+     /var/adm/perl-modules/*)
+       for f in old/$file new/$file; do
+         sed -i -e 's|^=head2 ... ... .. ..:..:.. ....: C<Module>|=head2 Wed Jul  1 00:00:00 2009: C<Module>|' $f
+       done
+       ;;
+     /usr/share/man/man3/*3pm)
+       for f in old/$file new/$file; do
+         sed -i -e 's| 3 "20..-..-.." "perl v5....." "User Contributed Perl Documentation"$| 3 "2009-01-01" "perl v5.10.0" "User Contributed Perl Documentation"|' $f
+         trim_man_TH $f
+         trim_man_first_line $f
+       done
+       ;;
+     /usr/share/man/*/man*|/usr/share/man/man*|/usr/lib/texmf/doc/man/*/*)
+
+       for f in old/$file new/$file; do
+         trim_man_TH $f
+         trim_man_first_line $f
+         # generated by docbook xml:
+         #.\"      Date: 09/13/2010
+         sed -i -e 's|Date: [0-1][0-9]/[0-9][0-9]/201[0-9]|Date: 09/13/2010|' $f
+       done
+       ;;
+     *.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
+       done
+       ;;
+     /var/lib/texmf/web2c/*/*fmt |\
+     /var/lib/texmf/web2c/metafont/*.base|\
+     /var/lib/texmf/web2c/metapost/*.mem)
+       # binary dump of TeX and Metafont formats, we can ignore them for good
+       echo "difference in $file ignored."
+       return 0
+       ;;
+     */libtool)
+       for f in old/$file new/$file; do
+	  sed -i -e 's|^# Libtool was configured on host [A-Za-z0-9]*:$|# Libtool was configured on host x42:|' $f
+       done
+       ;;
+     /etc/mail/*cf|/etc/sendmail.cf)
+       # from sendmail package
+       for f in old/$file new/$file; do
+	  # - ##### built by abuild@build33 on Thu May 6 11:21:17 UTC 2010
+	  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
+       # <td>Mon Sep 20 19:02:43 +0000 2010</td>
+       for f in old/$file new/$file; do
+          sed -i -e 's%<td>[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+ +0000 201[0-9]</td>%<td>Mon Sep 20 19:02:43 +0000 2010</td>%g' $f
+       done
+       strip_numbered_anchors
+       ;;
+    */Linux*Env.Set.sh)
+       # LibreOffice files, contains:
+       # Generated on: Mon Apr 18 13:19:22 UTC 2011
+       for f in old/$file new/$file; do
+	 sed -i -e 's%^# Generated on:.*UTC 201[0-9] *$%# Generated on: Sometime%g' $f
+       done
+       ;;
+    /usr/lib/libreoffice/solver/inc/*/deliver.log)
+       # LibreOffice log file
+      echo "Ignore $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
+      ;;
+    *.ps)
+      for f in "old/$file" "new/$file"; do
+        sed -i -e '
+          /^%%CreationDate:[[:blank:]]/d
+          /^%%Creator:[[:blank:]]groff[[:blank:]]version[[:blank:]]/d
+          /^%DVIPSSource:[[:blank:]]/d
+        ' "$f"
+      done
+    ;;
+    *pdf)
+      # PDF files contain a unique ID, remove it
+      # Format of the ID is:
+      # /ID [<9ACE247A70CF9BEAFEE15E116259BD6D> <9ACE247A70CF9BEAFEE15E116259BD6D>]
+      # with optional spaces. pdftex creates also:
+      # /CreationDate (D:20120103083206Z)
+      # /ModDate (D:20120103083206Z)
+      # and possibly XML metadata as well
+      for f in "old/$file" "new/$file"; do
+        sed -i \
+            '/obj/,/endobj/{
+               s%/ID \?\[ \?<[^>]\+> \?<[^>]\+> \?\]%/IDrandom%g;
+               s%/CreationDate \?(D:[^)]*)%/CreationDate (D: XXX)%g;
+               s%/ModDate \?(D:[^)]*)%/ModDate (D: XXX)%g;
+               s%<pdf:CreationDate>[^<]*</pdf:CreationDate>%<pdf:CreationDate>XXX</pdf:CreationDate>%g;
+               s%<pdf:ModDate>[^<]*</pdf:ModDate>%<pdf:ModDate>XXX</pdf:ModDate>%g;
+               s%<xap:CreateDate>[^<]*</xap:CreateDate>%<xap:CreateDate>XXX</xap:CreateDate>%g;
+               s%<xap:ModifyDate>[^<]*</xap:ModifyDate>%<xap:ModifyDate>XXX</xap:ModifyDate>%g;
+               s%<xap:MetadataDate>[^<]*</xap:MetadataDate>%<xap:MetadataDate>XXX</xap:MetadataDate>%g;
+            }' "$f"
+      done
+      ;;
+  esac
+
+  ftype=`/usr/bin/file old/$file | sed 's@^[^:]\+:[[:blank:]]*@@'`
+  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
+       ;;
+    ELF*executable*|ELF*[LM]SB\ shared\ object*)
+       objdump -d --no-show-raw-insn old/$file | filter_disasm > $file1
+       if ! test -s $file1; then
+         # objdump has no idea how to handle it
+         if ! diff_two_files; then
+           ret=1
+           break
+         fi
+       fi       
+       elfdiff=
+       sed -i -e "s,old/,," $file1
+       objdump -d --no-show-raw-insn new/$file | filter_disasm > $file2
+       sed -i -e "s,new/,," $file2
+       if ! diff -u $file1 $file2 > $dfile; then
+          echo "$file differs in assembler output"
+          head -n 200 $dfile
+          elfdiff="1"
+       fi
+       echo "" >$file1
+       echo "" >$file2
+       # Don't compare .build-id and .gnu_debuglink sections
+       sections="$(objdump -s new/$file | grep "Contents of section .*:" | sed -r "s,.* (.*):,\1,g" | grep -v -e "\.build-id" -e "\.gnu_debuglink" | tr "\n" " ")"
+       for section in $sections; do
+          objdump -s -j $section old/$file | sed "s,^old/,," > $file1
+          objdump -s -j $section new/$file | sed "s,^new/,," > $file2
+          if ! diff -u $file1 $file2 > $dfile; then
+             echo "$file differs in ELF section $section"
+             head -n 200 $dfile
+             elfdiff="1"
+          fi
+       done
+       if test -z "$elfdiff"; then
+          echo "$file: only difference was in build-id or gnu_debuglink, GOOD."
+          return 0
+       fi
+       return 1
+       ;;
+     *ASCII*|*text*)
+       if ! cmp -s old/$file new/$file; then
+         echo "$file differs ($ftype)"
+         diff -u old/$file new/$file | head -n 200
+         return 1
+       fi
+       ;;
+     directory|setuid,\ directory|sticky,\ directory)
+       # tar might package directories - ignore them here
+       return 0
+       ;;
+     bzip2\ compressed\ data*)
+       if ! check_compressed_file "$file" "bz2"; then
+           return 1
+       fi
+       ;;
+     gzip\ compressed\ data*)
+       if ! check_compressed_file "$file" "gzip"; then
+           return 1
+       fi
+       ;;
+     XZ\ compressed\ data*)
+       if ! check_compressed_file "$file" "xz"; then
+           return 1
+       fi
+       ;;
+     POSIX\ tar\ archive)
+          mv old/$file{,.tar}
+          mv new/$file{,.tar}
+          if ! check_single_file ${file}.tar; then
+            return 1
+          fi
+       ;;
+     cpio\ archive)
+          mv old/$file{,.cpio}
+          mv new/$file{,.cpio}
+          if ! check_single_file ${file}.cpio; then
+            return 1
+          fi
+     ;;
+     symbolic\ link\ to\ *)
+       readlink "old/$file" > $file1
+       readlink "new/$file" > $file2
+       if ! diff -u $file1 $file2; then
+         echo "symlink target for $file differs"
+         return 1
+       fi
+       ;;
+     *)
+       if ! diff_two_files; then
+           return 1
+       fi
+       ;;
+  esac
+  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
+
+# preserve cmp_spec result for check_all runs
+ret=$RES
+for file in $files; do
+   if ! check_single_file $file; then
+       ret=1
+       if test -z "$check_all"; then
+           break
+       fi
+   fi
+done
+
+if [ "$PROC_MOUNTED" -eq "1" ]; then
+  echo "Unmounting proc"
+  umount /proc
+fi
+
+rm $file1 $file2 $dfile $rename_script
+rm -rf $dir
+if test "$ret" = 0; then
+     echo "Package content is identical"
+fi
+exit $ret
+# vim: tw=666 ts=2 et
diff --git a/rpm-check.sh b/rpm-check.sh
deleted file mode 100755
index dd47642..0000000
--- a/rpm-check.sh
+++ /dev/null
@@ -1,764 +0,0 @@
-#! /bin/bash
-#
-# Copyright (c) 2009, 2010, 2011, 2012 SUSE Linux Product GmbH, Germany.
-# Licensed under GPL v2, see COPYING file for details.
-#
-# Written by Michael Matz and Stephan Coolo
-# Enhanced by Andreas Jaeger
-
-FUNCTIONS=${0%/*}/functions.sh
-
-check_all=
-case $1 in
-  -a | --check-all)
-    check_all=1
-    shift
-esac
-
-if test "$#" != 2; then
-   echo "usage: $0 [-a|--check-all] old.rpm new.rpm"
-   exit 1
-fi
-
-self_script=$(cd $(dirname $0); echo $(pwd)/$(basename $0))
-
-source $FUNCTIONS
-
-oldpkg=`readlink -f $1`
-newpkg=`readlink -f $2`
-rename_script=`mktemp`
-
-if test ! -f "$oldpkg"; then
-    echo "can't open $1"
-    exit 1
-fi
-
-if test ! -f "$newpkg"; then
-    echo "can't open $2"
-    exit 1
-fi
-
-#usage unjar <file>
-function unjar()
-{
-    local file
-    file=$1
-
-    if [[ $(type -p fastjar) ]]; then
-        UNJAR=fastjar
-    elif [[ $(type -p jar) ]]; then
-        UNJAR=jar
-    elif [[ $(type -p unzip) ]]; then
-        UNJAR=unzip
-    else
-        echo "ERROR: jar, fastjar, or unzip is not installed (trying file $file)"
-        exit 1
-    fi
-
-    case $UNJAR in
-        jar|fastjar)
-        # echo jar -xf $file
-        ${UNJAR} -xf $file
-        ;;
-        unzip)
-        unzip -oqq $file
-        ;;
-    esac
-}
-
-# list files in directory
-#usage unjar_l <file>
-function unjar_l()
-{
-    local file
-    file=$1
-
-    if [[ $(type -p fastjar) ]]; then
-        UNJAR=fastjar
-    elif [[ $(type -p jar) ]]; then
-        UNJAR=jar
-    elif [[ $(type -p unzip) ]]; then
-        UNJAR=unzip
-    else
-        echo "ERROR: jar, fastjar, or unzip is not installed (trying file $file)"
-        exit 1
-    fi
-
-    case $UNJAR in
-        jar|fastjar)
-        ${UNJAR} -tf $file
-        ;;
-        unzip)
-        unzip -l $file
-        ;;
-    esac
-}
-
-filter_disasm()
-{
-   sed -e 's/^ *[0-9a-f]\+://' -e 's/\$0x[0-9a-f]\+/$something/' -e 's/callq *[0-9a-f]\+/callq /' -e 's/# *[0-9a-f]\+/#  /' -e 's/\(0x\)\?[0-9a-f]\+(/offset(/' -e 's/[0-9a-f]\+ </</' -e 's/^<\(.*\)>:/\1:/' -e 's/<\(.*\)+0x[0-9a-f]\+>/<\1 + ofs>/' 
-}
-
-echo "Comparing `basename $oldpkg` to `basename $newpkg`"
-
-case $oldpkg in
-  *.rpm)
-     cmp_spec $rename_script $oldpkg $newpkg
-     RES=$?
-     case $RES in
-       0)
-          echo "RPM meta information is identical"
-          if test -z "$check_all"; then
-             exit 0
-          fi
-          ;;
-       1)
-          echo "RPM meta information is different"
-          if test -z "$check_all"; then
-             exit 1
-          fi
-          ;;
-       2)
-          echo "RPM file checksum differs."
-          RES=0
-          ;;
-       *)
-          echo "Wrong exit code!"
-          exit 1
-          ;;
-     esac
-     ;;
-esac
-
-file1=`mktemp`
-file2=`mktemp`
-
-dir=`mktemp -d`
-echo "Extracting packages"
-unpackage $oldpkg $dir/old
-unpackage $newpkg $dir/new
-
-# files is set in cmp_spec for rpms, so if RES is empty we should assume
-# it wasn't an rpm and pick all files for comparison.
-if [ -z $RES ]; then
-    oldfiles=`cd $dir/old; find . -type f`
-    newfiles=`cd $dir/new; find . -type f`
-
-    files=`echo -e "$oldfiles\n$newfiles" | sort -u`
-fi
-
-cd $dir
-bash $rename_script
-
-dfile=`mktemp`
-
-diff_two_files()
-{
-  if ! cmp -s old/$file new/$file; then
-     echo "$file differs ($ftype)"
-     hexdump -C old/$file > $file1
-     hexdump -C new/$file > $file2
-     diff -u $file1 $file2 | head -n 200
-     return 1
-  fi
-  return 0
-}
-
-trim_man_first_line()
-{
-    # Handles the first line if it is like:
-    #.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
-    #.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.43.3.
-    local f=$1
-    sed -i -e '1{
-    s|^\.\\"[[:blank:]]\+Automatically[[:blank:]]generated[[:blank:]]by[[:blank:]]Pod::Man[[:blank:]].*|.\\" Overly verbose Pod::Man|
-    s|^\.\\"[[:blank:]]\+DO[[:blank:]]NOT[[:blank:]]MODIFY[[:blank:]]THIS[[:blank:]]FILE![[:blank:]]\+It[[:blank:]]was[[:blank:]]generated[[:blank:]]by[[:blank:]]help2man[[:blank:]].*|.\\" Overly verbose help2man|
-    }' $f
-}
-
-trim_man_TH()
-{
-    # Handles lines like:
-    # .TH debhelper 7 "2010-02-27" "7.4.15" "Debhelper"
-    # .TH DIRMNGR-CLIENT 1 2010-02-27 "Dirmngr 1.0.3" "GNU Privacy Guard"
-    # .TH ccmake 1 "March 06, 2010" "ccmake 2.8.1-rc3"
-    # .TH QEMU-IMG 1 "2010-03-14" " " " "
-    # .TH kdecmake 1 "May 07, 2010" "cmake 2.8.1"
-    # .TH "appender.h" 3 "12 May 2010" "Version 1.2.1" "log4c" \" -*- nroff -*-
-    # .TH "appender.h" 3 "Tue Aug 31 2010" "Version 1.2.1" "log4c" \" -*- nroff -*-
-    # .TH "OFFLINEIMAP" "1" "11 May 2010" "John Goerzen" "OfflineIMAP Manual"
-    # .TH gv 3guile "13 May 2010"
-    #.TH "GIT\-ARCHIMPORT" "1" "09/13/2010" "Git 1\&.7\&.1" "Git Manual"
-    # .TH LDIRECTORD 8 "2010-10-20" "perl v5.12.2" "User Contributed Perl Documentation"
-    # .TH ccmake 1 "February 05, 2012" "ccmake 2.8.7"
-    # .TH "appender.h" 3 "Tue Aug 31 2010" "Version 1.2.1" "log4c" \" -*- nroff -*-
-    # .TH ARCH "1" "September 2010" "GNU coreutils 8.5" "User Commands"
-    # .TH "GCM-CALIBRATE" "1" "03 February 2012" "" ""
-    #.TH Locale::Po4a::Xml.pm 3pm "2015-01-30" "Po4a Tools" "Po4a Tools"
-    local f=$1
-    # (.TH   quoted section) (quoted_date)(*)
-    sed -i -e 's|^\([[:blank:]]*\.TH[[:blank:]]\+"[^"]\+"[[:blank:]]\+[^[:blank:]]\+\)[[:blank:]]\+\("[^"]\+"\)\([[:blank:]]\+.*\)\?|\1 "qq2000-01-01"\3|' $f
-    # (.TH unquoted section) (quoted_date)(*)
-    sed -i -e 's|^\([[:blank:]]*\.TH[[:blank:]]\+[^"][^[:blank:]]\+[[:blank:]]\+[^[:blank:]]\+\)[[:blank:]]\+\("[^"]\+"\)\([[:blank:]]\+.*\)\?|\1 "uq2000-02-02"\3|' $f
-    # (.TH   quoted section) (unquoted_date)(*)
-    sed -i -e 's|^\([[:blank:]]*\.TH[[:blank:]]\+"[^"]\+"[[:blank:]]\+[^[:blank:]]\+\)[[:blank:]]\+\([^"][^[:blank:]]\+\)\([[:blank:]]\+.*\)\?|\1 qu2000-03-03\3|' $f
-    # (.TH unquoted section) (unquoted_date)(*)
-    sed -i -e 's|^\([[:blank:]]*\.TH[[:blank:]]\+[^"][^[:blank:]]\+[[:blank:]]\+[^[:blank:]]\+\)[[:blank:]]\+\([^"][^[:blank:]]\+\)\([[:blank:]]\+.*\)\?|\1 uu2000-04-04\3|' $f
-}
-
-strip_numbered_anchors()
-{
-  # Remove numbered anchors on Docbook / HTML files.
-  # This should be save since we remove them from old and new files.
-  # A trailing </a> or </div> tag will stay also on both files.
-  for f in old/$file new/$file; do
-     sed -i -e 's%<[ ]*a[ ]\+name[^<]*[0-9]\+[^<]*%%g' \
-     -e 's%<[ ]*a[ ]\+href[^<]*#[^<]*[0-9]\+[^<]*%%g' \
-     -e 's%<[^<]*id="ftn\.[^<]*[0-9]\+[^<]*%%g' $f
-  done
-}
-
-
-check_compressed_file()
-{
-  local file=$1
-  local ext=$2
-  local tmpdir=`mktemp -d`
-  local ftype
-  local ret=0
-  echo "$ext file with odd filename: $file"
-  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
-      case "$ext" in
-        bz2)
-          mv old/$file{,.bz2}
-          mv new/$file{,.bz2}
-          bzip2 -d old/$file.bz2
-          bzip2 -d new/$file.bz2
-          ;;
-        gzip)
-          mv old/$file{,.gz}
-          mv new/$file{,.gz}
-          gzip -d old/$file.gz
-          gzip -d new/$file.gz
-          ;;
-        xz)
-          mv old/$file{,.xz}
-          mv new/$file{,.xz}
-          xz -d old/$file.xz
-          xz -d new/$file.xz
-          ;;
-      esac
-      ftype=`/usr/bin/file old/$file | sed 's@^[^:]\+:[[:blank:]]*@@'`
-      case $ftype in
-        POSIX\ tar\ archive)
-          echo "$ext content is: $ftype"
-          mv old/$file{,.tar}
-          mv new/$file{,.tar}
-          if ! check_single_file ${file}.tar; then
-            ret=1
-          fi
-          ;;
-        ASCII\ cpio\ archive\ *)
-          echo "$ext content is: $ftype"
-          mv old/$file{,.cpio}
-          mv new/$file{,.cpio}
-          if ! check_single_file ${file}.cpio; then
-            ret=1
-          fi
-          ;;
-        *)
-          echo "unhandled $ext 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"
-  case $file in
-    *.spec)
-       sed -i -e "s,Release:.*$release1,Release: @RELEASE@," old/$file
-       sed -i -e "s,Release:.*$release2,Release: @RELEASE@," new/$file
-       ;;
-    *.exe.mdb|*.dll.mdb)
-       # Just debug information, we can skip them
-       echo "$file skipped as debug file."
-       return 0
-       ;;
-    *.a)
-       flist=`ar t new/$file`
-       pwd=$PWD
-       fdir=`dirname $file`
-       cd old/$fdir
-       ar x `basename $file`
-       cd $pwd/new/$fdir
-       ar x `basename $file`
-       cd $pwd
-       for f in $flist; do
-          if ! check_single_file $fdir/$f; then
-             return 1
-          fi
-       done
-       return 0
-       ;;
-    *.cpio)
-       flist=`cpio --quiet --list --force-local < "new/$file"`
-       pwd=$PWD
-       fdir=$file.extract.$PPID.$$
-       mkdir old/$fdir new/$fdir
-       cd old/$fdir
-       cpio --quiet --extract --force-local < "../${file##*/}"
-       cd $pwd/new/$fdir
-       cpio --quiet --extract --force-local < "../${file##*/}"
-       cd $pwd
-       local ret=0
-       for f in $flist; do
-         if ! check_single_file $fdir/$f; then
-           ret=1
-           if test -z "$check_all"; then
-             break
-           fi
-         fi
-       done
-       rm -rf old/$fdir new/$fdir
-       return $ret
-       ;;
-    *.tar|*.tar.bz2|*.tar.gz|*.tgz|*.tbz2)
-       flist=`tar tf new/$file`
-       pwd=$PWD
-       fdir=`dirname $file`
-       cd old/$fdir
-       tar xf `basename $file`
-       cd $pwd/new/$fdir
-       tar xf `basename $file`
-       cd $pwd
-       local ret=0
-       for f in $flist; do
-         if ! check_single_file $fdir/$f; then
-           ret=1
-           if test -z "$check_all"; then
-             break
-           fi
-         fi
-       done
-       return $ret
-       ;;
-    *.zip|*.jar|*.war)
-       cd old
-       unjar_l ./$file |sort > flist
-       #  10-05-2010 14:39
-       sed -i -e "s, [0-9][0-9]-[0-9][0-9]-[0-9]\+ [0-9][0-9]:[0-9][0-9] , date ," flist
-       # 2012-02-03 07:59
-       sed -i -e "s, 20[0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9] , date ," flist
-       cd ../new
-       unjar_l ./$file |sort> flist
-       sed -i -e "s, [0-9][0-9]-[0-9][0-9]-[0-9]\+ [0-9][0-9]:[0-9][0-9] , date ,; " flist
-       sed -i -e "s, 20[0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9] , date ," flist
-       cd ..
-       if ! cmp -s old/flist new/flist; then
-          echo "$file has different file list"
-          diff -u old/flist new/flist
-          return 1
-       fi
-       flist=`grep date new/flist | sed -e 's,.* date ,,'`
-       pwd=$PWD
-       fdir=`dirname $file`
-       cd old/$fdir
-       unjar `basename $file`
-       cd $pwd/new/$fdir
-       unjar `basename $file`
-       cd $pwd
-       local ret=0
-       for f in $flist; do
-         if test -f new/$fdir/$f && ! check_single_file $fdir/$f; then
-           ret=1
-           if test -z "$check_all"; then
-             break
-           fi
-         fi
-       done
-       return $ret;;
-     *.pyc|*.pyo)
-        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';"
-        ;;
-     *.bz2)
-        bunzip2 -c old/$file > old/${file/.bz2/}
-        bunzip2 -c new/$file > new/${file/.bz2/}
-        check_single_file ${file/.bz2/}
-        return $?
-        ;;
-     *.gz)
-        gunzip -c old/$file > old/${file/.gz/}
-        gunzip -c new/$file > new/${file/.gz/}
-        check_single_file ${file/.gz/}
-        return $?
-        ;;
-     *.rpm)
-	$self_script -a old/$file new/$file
-        return $?
-        ;;
-     *png)
-	# Try to remove timestamps, only if convert from ImageMagick is installed
-        if [[ $(type -p convert) ]]; then
-	  convert old/$file +set date:create +set date:modify old/${file/.png/_n.png}
-	  convert old/$file +set date:create +set date:modify new/${file/.png/_n.png}
-	  if ! cmp -s old/${file/.png/_n.png} new/${file/.png/_n.png}; then
-	      echo "$file differs ($ftype)"
-	      hexdump -C old/${file/.png/_n.png} > $file1
-	      hexdump -C new/${file/.png/_n.png} > $file2
-	      diff -u $file1 $file2 | head -n 20
-	      return 1
-	  fi
-	  return 0
-	fi
-        ;;
-     /usr/share/locale/*/LC_MESSAGES/*.mo|/usr/share/locale-bundle/*/LC_MESSAGES/*.mo)
-       for f in old/$file new/$file; do
-         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/kde/HTML/*/*/*.html|/usr/share/doc/*/html/*.html)
-       for f in old/$file new/$file; do
-         # texi2html output, e.g. in kvm, indent, qemu
-	 sed -i -e "s|^<!-- Created on .*, 20.. by texi2html .\...|<!-- Created on August 7, 2009 by texi2html 1.82|" $f
-	 sed -i -e 's|^ *This document was generated by <em>Autobuild</em> on <em>.*, 20..</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html .\...</em></a>.$|  This document was generated by <em>Autobuild</em> on <em>August 7, 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.|' $f
-	 # doxygen docu, e.g. in libssh and log4c
-	 sed -i -e 's|Generated on ... ... [0-9]* [0-9]*:[0-9][0-9]:[0-9][0-9] 20[0-9][0-9] for |Generated on Mon May 10 20:45:00 2010 for |' $f
-	 # Generated on Sat Aug 14 2010 16:49:48 for libssh
-	 sed -i -e 's|Generated on ... ... [0-9]* 20[0-9][0-9] [0-9]*:[0-9][0-9]:[0-9][0-9] for |Generated on Mon May 10 20:45:00 2010 for |' $f
-       done
-       strip_numbered_anchors
-       ;;
-     /usr/share/javadoc/*.html |\
-     /usr/share/javadoc/*/*.html|/usr/share/javadoc/*/*/*.html)
-       strip_numbered_anchors
-       # There are more timestamps in html, so far we handle only some primitive versions.
-       for f in old/$file new/$file; do
-         # Javadoc:
-          # <head>
-          # <!-- Generated by javadoc (version 1.7.0_75) on Tue Feb 03 02:20:12 GMT 2015 -->
-          # <!-- Generated by javadoc on Tue Feb 03 00:02:48 GMT 2015 -->
-          # <meta name="date" content="2015-02-03">
-          # </head>
-          sed -i -e '
-            /^<head>/{
-              : next
-              n
-              /^<\/head>/{
-                b end_head
-              }
-              s/^\(<!-- Generated by javadoc\) \((\(build\|version\) [0-9._]\+) on ... ... .. ..:..:.. \(GMT\|UTC\) ....\) \(-->\)/\1 some-date-removed-by-build-compare \5/
-              t next
-              s/^\(<!-- Generated by javadoc\) \(on ... ... .. ..:..:.. \(GMT\|UTC\) ....\) \(-->\)/\1 some-date-removed-by-build-compare \3/
-              t next
-              s/^<meta name="date" content="[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}">/<meta name="date" content="some-date-removed-by-build-compare">/
-              b next
-            }
-            : end_head
-          ' $f
-         # Gjdoc HtmlDoclet:
-	 sed -i -e 's%Generated by Gjdoc HtmlDoclet [0-9,.]*, part of <a href="http://www.gnu.org/software/classpath/cp-tools/" title="" target="_top">GNU Classpath Tools</a>, on .*, 20.. [0-9]*:..:.. \(a\|p\)\.m\. GMT.%Generated by Gjdoc.%' $f
-	 sed -i -e 's%<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN"\(.*\)GNU Classpath Tools</a>, on [A-Z][a-z]* [0-9]*, 20?? [0-9]*:??:?? \(a|p\)\.m\. GMT.</p>%<!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN"\1GNU Classpath Tools</a>, on January 1, 2009 0:00:00 a.m. GMT.</p>%' $f
-	 sed -i -e 's%<!DOCTYPE html PUBLIC "-//gnu.org///DTD\(.*GNU Classpath Tools</a>\), on [a-zA-Z]* [0-9][0-9], 20.. [0-9]*:..:.. \(a\|p\)\.m\. GMT.</p>%<!DOCTYPE html PUBLIC "-//gnu.org///DTD\1,on May 1, 2010 1:11:42 p.m. GMT.</p>%' $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
-         sort -o $f $f
-       done
-       ;;
-     /var/adm/perl-modules/*)
-       for f in old/$file new/$file; do
-         sed -i -e 's|^=head2 ... ... .. ..:..:.. ....: C<Module>|=head2 Wed Jul  1 00:00:00 2009: C<Module>|' $f
-       done
-       ;;
-     /usr/share/man/man3/*3pm)
-       for f in old/$file new/$file; do
-         sed -i -e 's| 3 "20..-..-.." "perl v5....." "User Contributed Perl Documentation"$| 3 "2009-01-01" "perl v5.10.0" "User Contributed Perl Documentation"|' $f
-         trim_man_TH $f
-         trim_man_first_line $f
-       done
-       ;;
-     /usr/share/man/*/man*|/usr/share/man/man*|/usr/lib/texmf/doc/man/*/*)
-
-       for f in old/$file new/$file; do
-         trim_man_TH $f
-         trim_man_first_line $f
-         # generated by docbook xml:
-         #.\"      Date: 09/13/2010
-         sed -i -e 's|Date: [0-1][0-9]/[0-9][0-9]/201[0-9]|Date: 09/13/2010|' $f
-       done
-       ;;
-     *.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
-       done
-       ;;
-     /var/lib/texmf/web2c/*/*fmt |\
-     /var/lib/texmf/web2c/metafont/*.base|\
-     /var/lib/texmf/web2c/metapost/*.mem)
-       # binary dump of TeX and Metafont formats, we can ignore them for good
-       echo "difference in $file ignored."
-       return 0
-       ;;
-     */libtool)
-       for f in old/$file new/$file; do
-	  sed -i -e 's|^# Libtool was configured on host [A-Za-z0-9]*:$|# Libtool was configured on host x42:|' $f
-       done
-       ;;
-     /etc/mail/*cf|/etc/sendmail.cf)
-       # from sendmail package
-       for f in old/$file new/$file; do
-	  # - ##### built by abuild@build33 on Thu May 6 11:21:17 UTC 2010
-	  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
-       # <td>Mon Sep 20 19:02:43 +0000 2010</td>
-       for f in old/$file new/$file; do
-          sed -i -e 's%<td>[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+ +0000 201[0-9]</td>%<td>Mon Sep 20 19:02:43 +0000 2010</td>%g' $f
-       done
-       strip_numbered_anchors
-       ;;
-    */Linux*Env.Set.sh)
-       # LibreOffice files, contains:
-       # Generated on: Mon Apr 18 13:19:22 UTC 2011
-       for f in old/$file new/$file; do
-	 sed -i -e 's%^# Generated on:.*UTC 201[0-9] *$%# Generated on: Sometime%g' $f
-       done
-       ;;
-    /usr/lib/libreoffice/solver/inc/*/deliver.log)
-       # LibreOffice log file
-      echo "Ignore $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
-      ;;
-    *.ps)
-      for f in "old/$file" "new/$file"; do
-        sed -i -e '
-	/^%%CreationDate:[[:blank:]]/d
-	/^%%Creator:[[:blank:]]groff[[:blank:]]version[[:blank:]]/d
-	' "$f"
-      done
-    ;;
-    *pdf)
-      # PDF files contain a unique ID, remove it
-      # Format of the ID is:
-      # /ID [<9ACE247A70CF9BEAFEE15E116259BD6D> <9ACE247A70CF9BEAFEE15E116259BD6D>]
-      # with optional spaces. pdftex creates also:
-      # /CreationDate (D:20120103083206Z)
-      # /ModDate (D:20120103083206Z)
-      # and possibly XML metadata as well
-      for f in "old/$file" "new/$file"; do
-        sed -i \
-            '/obj/,/endobj/{
-               s%/ID \?\[ \?<[^>]\+> \?<[^>]\+> \?\]%/IDrandom%g;
-               s%/CreationDate \?(D:[^)]*)%/CreationDate (D: XXX)%g;
-               s%/ModDate \?(D:[^)]*)%/ModDate (D: XXX)%g;
-               s%<pdf:CreationDate>[^<]*</pdf:CreationDate>%<pdf:CreationDate>XXX</pdf:CreationDate>%g;
-               s%<pdf:ModDate>[^<]*</pdf:ModDate>%<pdf:ModDate>XXX</pdf:ModDate>%g;
-               s%<xap:CreateDate>[^<]*</xap:CreateDate>%<xap:CreateDate>XXX</xap:CreateDate>%g;
-               s%<xap:ModifyDate>[^<]*</xap:ModifyDate>%<xap:ModifyDate>XXX</xap:ModifyDate>%g;
-               s%<xap:MetadataDate>[^<]*</xap:MetadataDate>%<xap:MetadataDate>XXX</xap:MetadataDate>%g;
-            }' "$f"
-      done
-      ;;
-  esac
-
-  ftype=`/usr/bin/file old/$file | sed 's@^[^:]\+:[[:blank:]]*@@'`
-  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
-       ;;
-    ELF*executable*|ELF*[LM]SB\ shared\ object*)
-       objdump -d --no-show-raw-insn old/$file | filter_disasm > $file1
-       if ! test -s $file1; then
-         # objdump has no idea how to handle it
-         if ! diff_two_files; then
-           ret=1
-           break
-         fi
-       fi       
-       elfdiff=
-       sed -i -e "s,old/,," $file1
-       objdump -d --no-show-raw-insn new/$file | filter_disasm > $file2
-       sed -i -e "s,new/,," $file2
-       if ! diff -u $file1 $file2 > $dfile; then
-          echo "$file differs in assembler output"
-          head -n 200 $dfile
-          elfdiff="1"
-       fi
-       echo "" >$file1
-       echo "" >$file2
-       # Don't compare .build-id and .gnu_debuglink sections
-       sections="$(objdump -s new/$file | grep "Contents of section .*:" | sed -r "s,.* (.*):,\1,g" | grep -v -e "\.build-id" -e "\.gnu_debuglink" | tr "\n" " ")"
-       for section in $sections; do
-          objdump -s -j $section old/$file | sed "s,^old/,," > $file1
-          objdump -s -j $section new/$file | sed "s,^new/,," > $file2
-          if ! diff -u $file1 $file2 > $dfile; then
-             echo "$file differs in ELF section $section"
-             head -n 200 $dfile
-             elfdiff="1"
-          fi
-       done
-       if test -z "$elfdiff"; then
-          echo "$file: only difference was in build-id or gnu_debuglink, GOOD."
-          return 0
-       fi
-       return 1
-       ;;
-     *ASCII*|*text*)
-       if ! cmp -s old/$file new/$file; then
-         echo "$file differs ($ftype)"
-         diff -u old/$file new/$file | head -n 200
-         return 1
-       fi
-       ;;
-     directory|setuid,\ directory|sticky,\ directory)
-       # tar might package directories - ignore them here
-       return 0
-       ;;
-     bzip2\ compressed\ data*)
-       if ! check_compressed_file "$file" "bz2"; then
-           return 1
-       fi
-       ;;
-     gzip\ compressed\ data*)
-       if ! check_compressed_file "$file" "gzip"; then
-           return 1
-       fi
-       ;;
-     XZ\ compressed\ data*)
-       if ! check_compressed_file "$file" "xz"; then
-           return 1
-       fi
-       ;;
-     POSIX\ tar\ archive)
-          mv old/$file{,.tar}
-          mv new/$file{,.tar}
-          if ! check_single_file ${file}.tar; then
-            return 1
-          fi
-       ;;
-     cpio\ archive)
-          mv old/$file{,.cpio}
-          mv new/$file{,.cpio}
-          if ! check_single_file ${file}.cpio; then
-            return 1
-          fi
-     ;;
-     symbolic\ link\ to\ *)
-       readlink "old/$file" > $file1
-       readlink "new/$file" > $file2
-       if ! diff -u $file1 $file2; then
-         echo "symlink target for $file differs"
-         return 1
-       fi
-       ;;
-     *)
-       if ! diff_two_files; then
-           return 1
-       fi
-       ;;
-  esac
-  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
-
-# preserve cmp_spec result for check_all runs
-ret=$RES
-for file in $files; do
-   if ! check_single_file $file; then
-       ret=1
-       if test -z "$check_all"; then
-           break
-       fi
-   fi
-done
-
-if [ "$PROC_MOUNTED" -eq "1" ]; then
-  echo "Unmounting proc"
-  umount /proc
-fi
-
-rm $file1 $file2 $dfile $rename_script
-rm -rf $dir
-if test "$ret" = 0; then
-     echo "Package content is identical"
-fi
-exit $ret
-# vim: tw=666 ts=2 et
diff --git a/same-build-result.sh b/same-build-result.sh
index c8907e2..7e9bd4f 100644
--- a/same-build-result.sh
+++ b/same-build-result.sh
@@ -7,11 +7,11 @@
 # Enhanced by Andreas Jaeger <aj@suse.de>
 #
 # The script decides if the new build differes from the former one,
-# using rpm-check.sh.
+# using pkg-diff.sh.
 # The script is called as part of the build process as:
 # /usr/lib/build/same-build-result.sh /.build.oldpackages /usr/src/packages/RPMS /usr/src/packages/SRPMS
 
-CMPSCRIPT=${0%/*}/rpm-check.sh
+CMPSCRIPT=${0%/*}/pkg-diff.sh
 SCMPSCRIPT=${0%/*}/srpm-check.sh
 
 check_all=1
-- 
1.7.9.5

