From 60f9d69e016b11c468c98ea75ba0a60c44afbbc4 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Wed, 17 Aug 2016 14:31:25 -0500 Subject: yocto-poky: Move to import-layers subdir We are going to import additional layers, so create a subdir to hold all of the layers that we import with git-subtree. Change-Id: I6f732153a22be8ca663035c518837e3cc5ec0799 Signed-off-by: Patrick Williams --- .../files/Rename-rpm-check.sh-to-pkg-diff.sh.patch | 1599 -------------------- 1 file changed, 1599 deletions(-) delete mode 100644 yocto-poky/meta/recipes-devtools/build-compare/files/Rename-rpm-check.sh-to-pkg-diff.sh.patch (limited to 'yocto-poky/meta/recipes-devtools/build-compare/files/Rename-rpm-check.sh-to-pkg-diff.sh.patch') diff --git a/yocto-poky/meta/recipes-devtools/build-compare/files/Rename-rpm-check.sh-to-pkg-diff.sh.patch b/yocto-poky/meta/recipes-devtools/build-compare/files/Rename-rpm-check.sh-to-pkg-diff.sh.patch deleted file mode 100644 index cff3a9e23..000000000 --- a/yocto-poky/meta/recipes-devtools/build-compare/files/Rename-rpm-check.sh-to-pkg-diff.sh.patch +++ /dev/null @@ -1,1599 +0,0 @@ -From 4de3df5a1b361cd09a081f0e0bdb94cbf684ed48 Mon Sep 17 00:00:00 2001 -From: Robert Yang -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 - -Updated for rpm-check.sh. - -Signed-off-by: Robert Yang ---- - 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 -+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 -+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]\+ :/\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 or 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|^ -+ # -+ # -+ # -+ 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 -+ ' $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%\), on [a-zA-Z]* [0-9][0-9], 20.. [0-9]*:..:.. \(a\|p\)\.m\. GMT.

%%' $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|=head2 Wed Jul 1 00:00:00 2009: C|' $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 -+ # 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 -+ 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%[^<]*%XXX%g; -+ s%[^<]*%XXX%g; -+ s%[^<]*%XXX%g; -+ s%[^<]*%XXX%g; -+ s%[^<]*%XXX%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 --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 --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]\+ :/\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 or 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|^ -- # -- # -- # -- 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 -- ' $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%\), on [a-zA-Z]* [0-9][0-9], 20.. [0-9]*:..:.. \(a\|p\)\.m\. GMT.

%%' $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|=head2 Wed Jul 1 00:00:00 2009: C|' $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 -- # 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 -- 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%[^<]*%XXX%g; -- s%[^<]*%XXX%g; -- s%[^<]*%XXX%g; -- s%[^<]*%XXX%g; -- s%[^<]*%XXX%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 - # - # 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 - -- cgit v1.2.1