2be61e5a08
ok OBS-URL: https://build.opensuse.org/request/show/48596 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Tools/build-compare?expand=0&rev=79
84 lines
2.4 KiB
Bash
84 lines
2.4 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Copyright (c) 2009, 2010 SUSE Linux Product Gmbh, Germany.
|
|
# Licensed under GPL v2, see COPYING file for details.
|
|
#
|
|
# Written by Adrian Schroeter <adrian@suse.de>
|
|
#
|
|
# The script decides if the new build differes from the former one,
|
|
# using rpm-check.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
|
|
SCMPSCRIPT=${0%/*}/srpm-check.sh
|
|
|
|
OLDDIR="$1"
|
|
shift
|
|
NEWDIRS="$*"
|
|
|
|
echo "$CMPSCRIPT"
|
|
|
|
if [ ! -d "$OLDDIR" ]; then
|
|
echo "No valid directory with old build result given !"
|
|
exit 1
|
|
fi
|
|
if [ -z "$NEWDIRS" ]; then
|
|
echo "No valid directory with new build result given !"
|
|
exit 1
|
|
fi
|
|
|
|
if test `find $NEWDIRS -name *.rpm | wc -l` != `find $OLDDIR -name *.rpm | wc -l`; then
|
|
echo "different number of subpackages"
|
|
find $OLDDIR $NEWDIRS -name *.rpm
|
|
exit 1
|
|
fi
|
|
|
|
osrpm=$(find "$OLDDIR" -name \*src.rpm)
|
|
nsrpm=$(find $NEWDIRS -name \*src.rpm)
|
|
|
|
if test ! -f "$osrpm"; then
|
|
echo no old source rpm in $OLDDIR
|
|
exit 1
|
|
fi
|
|
|
|
if test ! -f "$nsrpm"; then
|
|
echo no new source rpm in $NEWDIRS
|
|
exit 1
|
|
fi
|
|
|
|
echo "compare $osrpm $nsrpm"
|
|
bash $SCMPSCRIPT "$osrpm" "$nsrpm" || exit 1
|
|
|
|
# technically we should not all exclude all -32bit but filter for different archs,
|
|
# like done with -x86
|
|
# but it would be better if this script ran earlier in the build
|
|
# sort the rpms so that both lists have the same order
|
|
# problem: a package can contain both noarch and arch subpackages, so we have to
|
|
# take care of proper sorting of NEWRPMS, e.g. noarch/x.rpm and x86_64/w.rpm since OLDRPMS
|
|
# has all the packages in a single directory and would sort this as w.rpm, x.rpm.
|
|
OLDRPMS=($(find "$OLDDIR" -name \*rpm -a ! -name \*src.rpm|sort|grep -v -- -32bit-|grep -v -- -64bit-|grep -v -- '-x86-.*\.ia64\.rpm'))
|
|
NEWRPMS=($(find $NEWDIRS -name \*rpm -a ! -name \*src.rpm|sort --field-separator=/ --key=7|grep -v -- -32bit-|grep -v -- -64bit-|grep -v -- '-x86-.*\.ia64\.rpm'))
|
|
|
|
rpmqp='rpm -qp --qf %{NAME} --nodigest --nosignature '
|
|
for opac in ${OLDRPMS[*]}; do
|
|
npac=${NEWRPMS[0]}
|
|
NEWRPMS=(${NEWRPMS[@]:1}) # shift
|
|
echo compare "$opac" "$npac"
|
|
oname=`$rpmqp $opac`
|
|
nname=`$rpmqp $npac`
|
|
if test "$oname" != "$nname"; then
|
|
echo "names differ: $oname $nname"
|
|
exit 1
|
|
fi
|
|
bash $CMPSCRIPT "$opac" "$npac" || exit 1
|
|
done
|
|
|
|
if [ -n "${NEWRPMS[0]}" ]; then
|
|
echo additional new package
|
|
exit 1
|
|
fi
|
|
|
|
echo compare validated built as identical !
|
|
exit 0
|