diff options
| -rwxr-xr-x | sbodl | 47 | 
1 files changed, 35 insertions, 12 deletions
@@ -109,13 +109,21 @@ doesn't have a DOWNLOAD_aarch64 field (yet).  =back +=head1 EXIT STATUS + +0 (success) if all files were downloaded or found in the cache, and their +md5sums all match the .info file. + +1 (failure) if any download failed, or if at least one md5sum failed to match. +  =head1 BUGS  One very rare but nasty one: all the cached files are stored in the  same directory. If two SlackBuilds happen to have the same filename -for their downloads (but they're actually different files), you'll -get md5sum failues. At some point this will be fixed. For now, if this -happens, use the B<-f> option. +for their downloads (but they're actually different files), you'll get +md5sum failures. This is most noticeable with I<haskell/> builds, with +filenames like B<1.cabal>, B<2.cabal>, etc. At some point this will be +fixed. For now, if this happens, use the B<-f> option.  Also, since --content-disposition is used, occasionally the downloaded  filename won't match the filename in the URL, and B<sbodl> will warn @@ -143,10 +151,12 @@ CACHEDIR=${SBODL_CACHEDIR:-$DEFCACHEDIR}  DEFARCHIVE=https://slackware.uk/sbosrcarch  ARCHIVE=${SBODL_ARCHIVE:-$DEFARCHIVE} -RED="\033[1;31m" -GREEN="\033[1;32m" -COLOR_OFF="\033[0m" - +if [ -t 1 ]; then +	RED="\033[1;31m" +	GREEN="\033[1;32m" +	YELLOW="\033[1;33m" +	COLOR_OFF="\033[0m" +fi  die() {  	echo "$SELF: $*" 2>&1 @@ -170,11 +180,11 @@ source ./$( basename $( pwd ) ).info \  # 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 +	case "$( uname -m )" in +		i?86) ARCH=i586 ;; +		arm*) ARCH=arm ;; +		*) ARCH=$( uname -m ) ;; +	esac  fi  if [ "$ARCH" = "x86_64" ]; then @@ -189,9 +199,15 @@ if [ -z "$DL" ]; then  	die "Bad .info file (no DOWNLOAD= or DOWNLOAD_x86_64=)."  fi +if [ "$DL" = "UNSUPPORTED" ]; then +	die "$PRGNAM is unsupported on $ARCH" +fi +  # save passed-in command line args for use with wget  WGETARGS="$@" +EXIT=0 +  set $SUM  for dl in $DL; do @@ -236,11 +252,18 @@ for dl in $DL; do  		GOTSUM="$( md5sum "$FILE" | cut -d' ' -f1 )"  		if [ "$1" != "$GOTSUM" ]; then  			echo -e "${RED}WARN: md5sum doesn't match${COLOR_OFF}\\n     expected: $1\\n          got: $GOTSUM" +			case "$FILE" in +				?.cabal) echo -e "${YELLOW}HINT:${COLOR_OFF} for ?.cabal files: if the md5sum fails, retry with '$SELF -f'." ;; +			esac +			EXIT=1  		else  			echo -e "${GREEN}md5sum matches OK${COLOR_OFF}: $1"  		fi  	else  		echo -e "${RED}WARN${COLOR_OFF}: can't find downloaded file $FILE, try '$SELF -a'?" +		EXIT=1  	fi  	shift  done + +exit $EXIT  | 
