From 719198f64441445237423d6e285f1ff3149235d5 Mon Sep 17 00:00:00 2001 From: "Juergen \"George\" Sawinski" Date: Sat, 24 Jul 2004 20:50:59 +0000 Subject: [PATCH] Juergen Sawinski: rediff of patch 2004071301584627246 with a few fixes: -re-implement Create-CkSumPatch as the current one is broken and I have no idea how to do this: -emits one patch at a time, -allows re-checksumming (via -override) Manually merged [2004072214114332281] by clifford. git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@3657 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- scripts/Create-CkSumPatch | 151 +++++++++++++++++--------------------- 1 file changed, 69 insertions(+), 82 deletions(-) diff --git a/scripts/Create-CkSumPatch b/scripts/Create-CkSumPatch index 3da8b832e..0c3c6c1a9 100755 --- a/scripts/Create-CkSumPatch +++ b/scripts/Create-CkSumPatch @@ -22,101 +22,88 @@ # # --- ROCK-COPYRIGHT-NOTE-END --- -if [ $# = 1 -a "$1" = -misc ] ; then - set x -repository misc ; shift -fi +. scripts/functions +override=0 +files='' -if [ $# = 1 -a "$1" = -all ] ; then - shift $# ; cmpfield=2 -else - if [ "$1" = "-repository" -o "$1" = "-target" ] - then cmpfield=2 ; shift ; else cmpfield=3 ; fi - - if [ "$#" -eq 0 -o "${1#-}" != "$1" ] ; then - echo "Usage: $0 " - echo "or $0 -repository " - echo "or $0 -target " - echo "or $0 -misc" - echo "or $0 -all" - exit 1 - fi -fi - -echo "Creating cksum.patch ..." >&2 -tempdesc=`mktemp` -temppatch=`mktemp` +while [ "$1" ]; do + case "$1" in + -override) override=1 ; shift ;; + -repository) files="$files `echo package/$2/*/*.desc`" ; shift ; shift ;; + -*) + echo "Usage:" + echo "./scripts/Create-CkSumPatch [options] " + echo "./scripts/Create-CkSumPatch [options] " + echo "./scripts/Create-CkSumPatch [options] " + echo "./scripts/Create-CkSumPatch [options] -repository " + echo " " + echo "Options:" + echo " -override Create new cksum if old one should be valid." + echo " -help This." + exit + ;; + target/*) files="$files $1" ; shift ;; + *.desc) files="$files $1" ; shift ;; + *) files="$files `echo package/*/$1/$1.desc`" ; shift ;; + esac +done -./scripts/Download -list-cksums | grep '^00* ' | \ -while read cksum gzfile ; do - bzfile="`echo "$gzfile" | sed 's,\.\(t\?\)\(gz\|Z\)$,.\1bz2,'`" +# cksum_file path-to-desc-or-target-file +cksum_file() { + case "$1" in + target/*) + has_D='cat' + sedscript='s,^[0-9]* *$file,$newcksum $file,' + ;; + *.desc) + has_D='fgrep "[D]" | sed "s/[[]D[^ ]*//"' + sedscript='s,\[D\] *[0-9]* *$file,[D] $newcksum $file,' + ;; + *) + echo "!!! File type not recognized" >&2 + return -1 + esac - if [ -f "$bzfile" ] - then - checkthis=1 + if [ ! -f "$1" ]; then + echo "!!! File not found: $1" >&2 + return -1 + fi - xfile="`basename $gzfile`" - descfile="`grep $xfile package/*/*/*.desc target/*/download.txt | sed 's,:.*,,'`" - rep="`echo $descfile | cut -f2 -d/`" - pkg="`echo $descfile | cut -f3 -d/`" + cp $1 /tmp/$$ + eval "egrep -v '^#' $1 | $has_D" | while read cksum file url flags; do + [ "$cksum" = 'X' ] && continue + [ "$cksum" != '0' -a "$override" = '0' ] && continue - for x ; do - [ $checkthis = 1 ] && checkthis=0 - [ "$pkg" = $x ] && checkthis=2 - [ "$descfile" = $x ] && checkthis=2 - done - if [ $checkthis = 0 ] ; then - : echo "Skip: $bzfile" ; continue + gzfile=`source_file cksum $file url $flags` + bzfile="`echo "$gzfile" | sed 's,\.\(t\?\)\(gz\|Z\)$,.\1bz2,'`" + if [ ! -f "$bzfile" ]; then + echo "!!! File not present: $bzfile" >&2 + continue fi if [[ "$bzfile" = *.bz2 ]] || [[ "$bzfile" = *.tbz2 ]] ; then echo -n "$bzfile (bzip2): " >&2 - cksum="`bunzip2 < $bzfile | cksum | cut -f1 -d' '`" + newcksum="`bunzip2 < $bzfile | cksum | cut -f1 -d' '`" else echo -n "$gzfile (raw): " >&2 - cksum="`cksum "$gzfile" | cut -f1 -d' '`" + newcksum="`cksum $gzfile | cut -f1 -d' '`" fi - echo $cksum >&2 + echo $newcksum >&2 - if [ -d package/$rep ] ; then - if [ -f $descfile ] ; then - if [ ! -s $tempdesc ] ; then - cat $descfile > $tempdesc - fi - sedscript="s,\[D\] *00* *$xfile,[D] $cksum $xfile," - sed "$sedscript" -i $tempdesc - if cmp -s ./$descfile $tempdesc ; then - echo "!!! SED script didn't change anything:" >&2 - echo "!!! $sedscript" >&2 - else - diff -u -U 0 ./$descfile $tempdesc >$temppatch - fi - else - echo "!!! No Desc File for $gzfile" >&2 - echo "!!! (My guess was $descfile)" >&2 - fi - elif [ -d target/$rep -o "$rep" = misc ] ; then - if [ -f $descfile ] ; then - if [ ! -s $tempdesc ] ; then - cat $descfile > $tempdesc - fi - sedscript="s,^00* *$xfile,$cksum $xfile," - sed "$sedscript" -i $tempdesc - if cmp -s ./$descfile $tempdesc ; then - echo "!!! SED script didn't change anything:" >&2 - echo "!!! $sedscript" >&2 - else - diff -u -U 0 ./$descfile $tempdesc > $temppatch - fi - else - echo "!!! No Desc File for $gzfile" >&2 - echo "!!! (My guess was $descfile)" >&2 - fi - else - echo "!!! No Desc File for $gzfile" >&2 - echo "!!! (I didn't have any possible guesses)" >&2 + if [ "$cksum" != 0 -a "$cksum" != "$newcksum" ]; then + echo "!!! Checksum of $file changed (was $cksum)." >&2 fi - fi + + eval "sed \"$sedscript\" -i /tmp/$$" + done + + diff -u $1 /tmp/$$ + rm -f /tmp/$$ +} + +echo "Creating cksum.patch ..." >&2 + +for f in $files; do + cksum_file $f done -[ -f $temppatch ] && cat $temppatch -rm -f $temppatch $tempdesc