#!/bin/sh # 2008 (c) Etersoft www.etersoft.ru # Public domain # Author: Vitaly Lipatov <lav@etersoft.ru> # Thanks Alexey Gladkov <legion@altlinux.ru> for the instructions # # See http://www.freesource.info/wiki/ALTLinux/Sisyphus/devel/Unmets # # Tests unmets in built int hasher packages # load common functions, compatible with local and installed script . `dirname $0`/../share/eterbuild/functions/common load_mod hasher make_ordinalbox() { mkdir -p $ORDINALWORKDIR echo "Build aptbox in $ORDINALWORKDIR ..." #rm -rf $ORDINALWORKDIR mkaptbox -f --apt-config=$ORDINALAPTCONF $ORDINALWORKDIR } make_testingbox() { mkdir -p $TESTINGWORKDIR echo "Build aptbox in $TESTINGWORKDIR ..." #rm -rf $TESTINGWORKDIR mkaptbox -f --apt-config=$TESTINGAPTCONF $TESTINGWORKDIR } Usage="Usage: $name [-M24 -M40]" function mygetopts() { name=${0##*/} Descr="$name - tests unmets in build packages" phelp() { echog "$Descr" echog "$Usage" echog "Options:" echog " -s - get all unmets" echog " -M40 - test for distro ALT Linux 4.0" } SKIPTST= while getopts :hs opt; do case $opt in h) phelp; exit 0;; s) SKIPTST=1 ;; ?) OPTIND=$((OPTIND-1)); break; esac done # remove args that were options if [ $# -gt 0 ]; then shift $((OPTIND - 1)) fi # pass other options to RPM: LISTRPMARGS=$@ } # FIXME: needs no args now parse_cmd_pre "" "$@" mygetopts $LISTARGS # Prepare our variables ORDINALWORKDIR=$OURTMPDIR/WD1 TESTINGWORKDIR=$OURTMPDIR/WD2 ORDINALAPTCONF=$APTCONF HASHERDIR=$HASHERDIR$MENVARG if [ ! -d $HASHERDIR/repo ] || [ -n "$SKIPTST" ] ; then [ -z "$SKIPTST" ] && fatal "Can't find repo in hasher '$HASHERDIR' dir, use -s for overall check" make_ordinalbox echo echo "All unmets in repo $MENV" $ORDINALWORKDIR/aptbox/apt-cache unmet rm -rf $ORDINALWORKDIR exit 0 fi echo "Prepare to unmets checking..." # Prepare our confdir prepare_aptconfig TESTINGAPTCONF=$OURAPTCONF echo "rpm file:$HASHERDIR/repo/ $DEFAULTARCH hasher" >>$OURSOURCES make_ordinalbox make_testingbox echo "Calculate unmets..." $ORDINALWORKDIR/aptbox/apt-cache unmet > $OURTMPDIR/unmets.old $TESTINGWORKDIR/aptbox/apt-cache unmet > $OURTMPDIR/unmets.new echo echo "New unmets:" diff -U0 $OURTMPDIR/unmets.{old,new} if [ ! -d "$SISYPHUSPATH" ] ; then echo "Sisyphus repo is not found in '$SISYPHUSPATH'. Set SISYPHUSPATH to compare requires with new packages" exit 1 fi NEWPKGDIR=$HASHERDIR/repo/$DEFAULTARCH/RPMS.hasher/ echo echo "Compare requires between new packages and their Sisyphus version" export LESS_PROGRAM=/dev/null for i in $(echo $NEWPKGDIR/*.rpm) ; do OLDPKGNAME=$(rpm -qp $i | sed -e "s|-[0-9].*||g") OLDPKG=$(echo $SISYPHUSPATH/*/RPMS.*/$OLDPKGNAME-[0-9]*.rpm) if [ ! -r "$OLDPKG" ] ; then echo "Cannot find old package for $(basename $i), skipping" continue fi echo "Compare $OLDPKG with new $i" compare_packages -a -R -- $OLDPKG -- $i done