aboutsummaryrefslogtreecommitdiff
path: root/scripts/root/plumbing
blob: ff302803f761fcaae50c9e7d939ee5faeabd175f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/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
}