| #!/bin/echo run this from "make root" | |
| # Plumbing to download files | |
| [ -z "$ROOT" ] && echo "no" && exit 1 | |
| mkdir -p "${DOWNLOAD:=$PWD/root_download}" || exit 1 | |
| ### Functions to download, extract, and clean up after source packages. | |
| # Usage: download HASH URL | |
| # Grabs source from URL confirming SHA1 hash (Basically "wget $2") | |
| # If extracted source is in $DOWNLOAD (no version) build will use that instead | |
| download() { | |
| FILE="$(basename "$2")" | |
| [ -d "$DOWNLOAD/${FILE/-*/}" ] && echo "$FILE" local && return 0 | |
| X=0; while true; do | |
| [ "$(sha1sum < "$DOWNLOAD/$FILE" 2>/dev/null)" == "$1 -" ] && | |
| echo "$FILE" confirmed && break | |
| rm -f $DOWNLOAD/${FILE/-[0-9]*/}-[0-9]* || exit 1 | |
| [ $X -eq 0 ] && X=1 || exit 1 | |
| wget "$2" -O "$DOWNLOAD/$FILE" | |
| done | |
| } | |
| # Usage: setupfor PACKAGE | |
| # Extracts source tarball (or snapshot a repo) to create disposable build dir. | |
| # Basically "tar xvzCf $MYBUILD $DOWNLOAD/$1.tar.gz && cd $NEWDIR" | |
| setupfor() { | |
| PACKAGE="$(basename "$1")" | |
| announce "$PACKAGE" && cd "$MYBUILD" && rm -rf "$PACKAGE" || exit 1 | |
| if [ -d "$DOWNLOAD/$PACKAGE" ]; then | |
| cp -la "$DOWNLOAD/$PACKAGE/." "$PACKAGE" && cd "$PACKAGE" || exit 1 | |
| else | |
| tar xvaf "$DOWNLOAD/$PACKAGE"-*.t* && cd "$PACKAGE"-* || exit 1 | |
| fi | |
| } | |
| # Usage: cleanup | |
| # Delete setupfor's dir, exiting if build failed (basically "rm -rf $PACKAGE") | |
| cleanup() { | |
| [ $? -ne 0 ] && exit 1 | |
| [ -z "$PACKAGE" ] && exit 1 | |
| [ ! -z "$NO_CLEANUP" ] && return | |
| cd .. && rm -rf "$PACKAGE"* || exit 1 | |
| } |