#!/bin/sh # # grab_md5 # (c) 2004 Steve McIntyre # # GPL v2 # # Parse Packages and Sources files out of a mirror and pre-process # them into a single list ready for mkisofs to check later MIRROR=$1 ARCHES="$2" CODENAME=$3 DI_CODENAME=$4 OUT=$5 for ARCH in $ARCHES do LOCATIONS="$MIRROR/dists/$CODENAME/ $MIRROR/dists/$DI_CODENAME/" echo "Looking in $LOCATIONS" case $ARCH in source) FILES=`find $LOCATIONS -name Sources.gz` echo "Using MD5 sums from Sources files:" echo $FILES zcat -f $FILES | awk -v MIRROR=$MIRROR ' /^Directory:/ { DIR = $2 next } /^Files:/ { in_files = 1 next } /^ / { if (in_files) { gsub("^ ", "", $0) MD5 = $1 SIZE = $2 FILE = $3 printf("%s %12s %s/%s/%s\n", MD5, SIZE, MIRROR, DIR, FILE); next } } /^[^ ]/ { in_files = 0 FILE = "" DIR = "" }' | sort | uniq >> $OUT ;; alpha|amd64|arm|armel|hppa|i386|ia64|m68k|mips|mipsel|powerpc|s390|sparc|kfreebsd-amd64|kfreebsd-i386|hurd-i386) FILES=`find $LOCATIONS -name Packages.gz | grep binary-$ARCH` echo "Using MD5 sums from Packages files:" echo $FILES zcat -f $FILES | awk -v MIRROR=$MIRROR ' /^Filename:/ { FILE = $2 } /^Size:/ { SIZE = $2 } /^MD5sum:/ { MD5 = $2 printf("%s %12d %s/%s\n", MD5, SIZE, MIRROR, FILE) }' | sort | uniq >> $OUT # Use the new D-I images. Do NOT use the "current" # link; it causes problems with overlaid files... for VER in $MIRROR/dists/$DI_CODENAME/main/installer-$ARCH/* do if [ -d $VER ] && [ ! -L $VER ] ; then FILE=$VER/images/MD5SUMS echo "Using MD5 sums from d-i: $FILE" LOC=dists/$DI_CODENAME/main/installer-$ARCH/`basename $VER`/images for ENTRY in `cat $FILE | sed 's/ /:/g'` do PATH=`echo $ENTRY | /bin/sed "s?^.*:\./?$MIRROR/$LOC/?g"` MD5=`echo $ENTRY | /bin/sed 's/:.*$//g'` SIZE=`/usr/bin/stat -c %s $PATH` printf '%s %12.12s %s\n' $MD5 $SIZE $PATH done | sort | uniq >> $OUT fi done ;; *) echo "Unknown arch/source $ARCH!" exit 1 ;; esac done exit 0