#!/bin/bash # sbodl, initial public release. # 20170306 bkw: add caching SELF=$( basename $0 ) CACHEDIR=/home/urchlay/slackbuilds usage() { cat < Execute $SELF in the directory that contains the .info and .SlackBuild files. It will use wget to download the source file(s), then check their md5sums. $SELF options: -h, --help: Show this help message. -f: Ignore locally cached files, always download. Any other options you pass to it will be passed to wget. EOF exit 0 } die() { echo "$SELF: $*" 2>&1 exit 1 } # check for our one argument case "$1" in -h|-help|-\?|--help) usage ;; -f) FORCEDL="yes" ; shift ;; esac source ./$( basename $( pwd ) ).info \ || die "No .info file, are you sure this is a SBo directory? Try '$SELF --help'" # This stanza copied from the SBo template for 14.1: if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi if [ "$ARCH" = "x86_64" ]; then DL=${DOWNLOAD_x86_64:-$DOWNLOAD} SUM=${MD5SUM_x86_64:-$MD5SUM} else DL=$DOWNLOAD SUM=${MD5SUM} fi if [ -z "$DL" ]; then die "Bad .info file (no DOWNLOAD= or DOWNLOAD_x86_64=)." fi # save passed-in command line args for use with wget WGETARGS="$@" set $SUM for dl in $DL; do EXTRAWGETARGS="--content-disposition " case "$dl" in *sourceforge.net/*|*.sf.net/*) EXTRAWGETARGS="--user-agent wget" ;; *) ;; esac FILE=$( echo "$dl" | sed 's,.*/,,' ) [ "$FORCEDL" = "yes" ] && rm -f "$FILE" if [ -e "$FILE" ]; then # don't do anything : elif [ "$FORCEDL" != "yes" ] && [ -e "$CACHEDIR/$FILE" ]; then ln -s "$CACHEDIR/$FILE" "$FILE" else wget $WGETARGS $EXTRAWGETARGS "$dl" || die "Download failed" if [ -e "$FILE" ]; then mv "$FILE" "$CACHEDIR" ln -s "$CACHEDIR/$FILE" "$FILE" fi fi if [ -e "$FILE" ]; then GOTSUM="$( md5sum "$FILE" | cut -d' ' -f1 )" if [ "$1" != "$GOTSUM" ]; then echo "WARN: md5sum doesn't match, expected $1, got $GOTSUM" else echo "md5sum matches OK: $1" fi else echo "WARN: can't find downloaded file $FILE" fi echo shift done