build.sh: Remove `function` from `die()` definition
[dockerfile.git] / build.sh
1 #!/bin/sh
2
3 AUTHOR="${AUTHOR:-W. Trevor King <wking@tremily.us>}"
4 NAMESPACE="${NAMESPACE:-wking}"
5 #PORTAGE="${PORTAGE:-/usr/portage}"
6 DATE="${DATE:-20131205}"
7 MIRROR="${MIRROR:-http://mirror.mcs.anl.gov/pub/gentoo/}"
8 ARCH_URL="${ARCH_URL:-${MIRROR}/releases/amd64/current-stage3/}"
9 STAGE3="${STAGE3:-stage3-amd64-${DATE}.tar.bz2}"
10 STAGE3_CONTENTS="${STAGE3_CONTENTS:-${STAGE3}.CONTENTS}"
11 STAGE3_DIGESTS="${STAGE3_DIGESTS:-${STAGE3}.DIGESTS.asc}"
12
13 REPOS="
14         gentoo-portage
15         gentoo-en-us
16         gentoo-syslog
17         buildbot
18         "
19
20 die()
21 {
22         echo "$1"
23         exit 1
24 }
25
26 STAGE3_IMAGES=$(docker images "${NAMESPACE}/gentoo")
27 STAGE3_MATCHES=$(echo "${STAGE3_IMAGES}" | grep "${DATE}")
28 if [ -z "${STAGE3_MATCHES}" ]; then
29         # import stage3 image from Gentoo mirrors
30
31         for FILE in "${STAGE3}" "${STAGE3_CONTENTS}" "${STAGE3_DIGESTS}"; do
32                 if [ ! -f "downloads/${FILE}" ]; then
33                         wget -O "downloads/${FILE}" "${ARCH_URL}/${FILE}"
34                 fi
35         done
36
37         gpg --verify "downloads/${STAGE3_DIGESTS}" || die "insecure digests"
38         SHA512_HASHES=$(grep -A1 SHA512 "downloads/${STAGE3_DIGESTS}" | grep -v '^--')
39         SHA512_CHECK=$(cd downloads/ && (echo "${SHA512_HASHES}" | sha512sum -c))
40         SHA512_FAILED=$(echo "${SHA512_CHECK}" | grep FAILED)
41         if [ -n "${SHA512_FAILED}" ]; then
42                 die "${SHA512_FAILED}"
43         fi
44
45         docker import - "${NAMESPACE}/gentoo:${DATE}" < "downloads/${STAGE3}" || die "failed to import"
46 fi
47
48 docker tag -f "${NAMESPACE}/gentoo:${DATE}" "${NAMESPACE}/gentoo:latest" || die "failed to tag"
49
50 for REPO in ${REPOS}; do
51         REPO_IMAGES=$(docker images "${NAMESPACE}/${REPO}")
52         REPO_MATCHES=$(echo "${REPO_IMAGES}" | grep "${DATE}")
53         if [ -z "${REPO_MATCHES}" ]; then
54                 cp "${REPO}/Dockerfile.template" "${REPO}/Dockerfile"
55                 sed -i "s|TAG|${DATE}|g" "${REPO}/Dockerfile"
56                 sed -i "s|NAMESPACE|${NAMESPACE}|g" "${REPO}/Dockerfile"
57                 sed -i "s|MAINTAINER.*|MAINTAINER ${AUTHOR}|g" "${REPO}/Dockerfile"
58                 docker build -t "${NAMESPACE}/${REPO}:${DATE}" "${REPO}" || die "failed to build"
59         fi
60         docker tag -f "${NAMESPACE}/${REPO}:${DATE}" "${NAMESPACE}/${REPO}:latest" || die "failed to tag"
61 done