1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/echo run this from "make root" 2*cf5a6c84SAndroid Build Coastguard Worker 3*cf5a6c84SAndroid Build Coastguard Worker# Plumbing to download files 4*cf5a6c84SAndroid Build Coastguard Worker 5*cf5a6c84SAndroid Build Coastguard Worker[ -z "$ROOT" ] && echo "no" && exit 1 6*cf5a6c84SAndroid Build Coastguard Workermkdir -p "${DOWNLOAD:=$PWD/root_download}" || exit 1 7*cf5a6c84SAndroid Build Coastguard Worker 8*cf5a6c84SAndroid Build Coastguard Worker### Functions to download, extract, and clean up after source packages. 9*cf5a6c84SAndroid Build Coastguard Worker 10*cf5a6c84SAndroid Build Coastguard Worker# Usage: download HASH URL 11*cf5a6c84SAndroid Build Coastguard Worker# Grabs source from URL confirming SHA1 hash (Basically "wget $2") 12*cf5a6c84SAndroid Build Coastguard Worker# If extracted source is in $DOWNLOAD (no version) build will use that instead 13*cf5a6c84SAndroid Build Coastguard Workerdownload() { 14*cf5a6c84SAndroid Build Coastguard Worker local FILE="$(basename "$2")" WGET=wget 15*cf5a6c84SAndroid Build Coastguard Worker [ -d "$DOWNLOAD/${FILE/-*/}" ] && echo "$FILE" local && return 0 16*cf5a6c84SAndroid Build Coastguard Worker X=0; while true; do 17*cf5a6c84SAndroid Build Coastguard Worker [ "$(sha1sum < "$DOWNLOAD/$FILE" 2>/dev/null)" == "$1 -" ] && 18*cf5a6c84SAndroid Build Coastguard Worker echo "$FILE" confirmed && break 19*cf5a6c84SAndroid Build Coastguard Worker rm -f $DOWNLOAD/${FILE/-[0-9]*/}-[0-9]* || exit 1 20*cf5a6c84SAndroid Build Coastguard Worker [ $X -eq 0 ] && X=1 || [ $X -eq 1 ] && X=2 WGET=/usr/bin/wget || exit 1 21*cf5a6c84SAndroid Build Coastguard Worker $WGET "$2" -O "$DOWNLOAD/$FILE" 22*cf5a6c84SAndroid Build Coastguard Worker done 23*cf5a6c84SAndroid Build Coastguard Worker} 24*cf5a6c84SAndroid Build Coastguard Worker 25*cf5a6c84SAndroid Build Coastguard Worker# Usage: setupfor PACKAGE 26*cf5a6c84SAndroid Build Coastguard Worker# Extracts source tarball (or snapshot a repo) to create disposable build dir. 27*cf5a6c84SAndroid Build Coastguard Worker# Basically "tar -xvz -C $TEMP -f $DOWNLOAD/$1.tar.gz && cd $NEWDIR" 28*cf5a6c84SAndroid Build Coastguard Workersetupfor() { 29*cf5a6c84SAndroid Build Coastguard Worker PACKAGE="$(basename "$1")" 30*cf5a6c84SAndroid Build Coastguard Worker announce "$PACKAGE" && cd "$TEMP" && rm -rf "$PACKAGE" || exit 1 31*cf5a6c84SAndroid Build Coastguard Worker if [ -d "$DOWNLOAD/$PACKAGE" ]; then 32*cf5a6c84SAndroid Build Coastguard Worker cp -la "$DOWNLOAD/$PACKAGE/." "$PACKAGE" && cd "$PACKAGE" || exit 1 33*cf5a6c84SAndroid Build Coastguard Worker else 34*cf5a6c84SAndroid Build Coastguard Worker local DIR=$(mktemp -dp.) 35*cf5a6c84SAndroid Build Coastguard Worker tar xvafC "$DOWNLOAD/$PACKAGE"-*.t* "$DIR" && 36*cf5a6c84SAndroid Build Coastguard Worker mv "$DIR"/* "$PACKAGE" && rmdir "$DIR" && cd "$PACKAGE" || exit 1 37*cf5a6c84SAndroid Build Coastguard Worker fi 38*cf5a6c84SAndroid Build Coastguard Worker} 39*cf5a6c84SAndroid Build Coastguard Worker 40*cf5a6c84SAndroid Build Coastguard Worker# Usage: cleanup 41*cf5a6c84SAndroid Build Coastguard Worker# Delete setupfor's dir, exiting if build failed (basically "rm -rf $PACKAGE") 42*cf5a6c84SAndroid Build Coastguard Workercleanup() { 43*cf5a6c84SAndroid Build Coastguard Worker [ $? -ne 0 ] && exit 1 44*cf5a6c84SAndroid Build Coastguard Worker [ -z "$PACKAGE" ] && exit 1 45*cf5a6c84SAndroid Build Coastguard Worker [ ! -z "$NO_CLEANUP" ] && return 46*cf5a6c84SAndroid Build Coastguard Worker cd .. && rm -rf "$PACKAGE"* || exit 1 47*cf5a6c84SAndroid Build Coastguard Worker} 48