ad0701380b578a37e181b2de7b88698cf94b9cde
[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 function die() {
21         echo "$1"
22         exit 1
23 }
24
25 STAGE3_IMAGES=$(docker images "${NAMESPACE}/gentoo")
26 STAGE3_MATCHES=$(echo "${STAGE3_IMAGES}" | grep "${DATE}")
27 if [ -z "${STAGE3_MATCHES}" ]; then
28         # import stage3 image from Gentoo mirrors
29
30         for FILE in "${STAGE3}" "${STAGE3_CONTENTS}" "${STAGE3_DIGESTS}"; do
31                 if [ ! -f "downloads/${FILE}" ]; then
32                         wget -O "downloads/${FILE}" "${ARCH_URL}/${FILE}"
33                 fi
34         done
35
36         gpg --verify "downloads/${STAGE3_DIGESTS}" || die "insecure digests"
37         SHA512_HASHES=$(grep -A1 SHA512 "downloads/${STAGE3_DIGESTS}" | grep -v '^--')
38         SHA512_CHECK=$(cd downloads/ && (echo "${SHA512_HASHES}" | sha512sum -c))
39         SHA512_FAILED=$(echo "${SHA512_CHECK}" | grep FAILED)
40         if [ -n "${SHA512_FAILED}" ]; then
41                 die "${SHA512_FAILED}"
42         fi
43
44         docker import - "${NAMESPACE}/gentoo:${DATE}" < "downloads/${STAGE3}" || die "failed to import"
45 fi
46
47 docker tag -f "${NAMESPACE}/gentoo:${DATE}" "${NAMESPACE}/gentoo:latest" || die "failed to tag"
48
49 for REPO in ${REPOS}; do
50         REPO_IMAGES=$(docker images "${NAMESPACE}/${REPO}")
51         REPO_MATCHES=$(echo "${REPO_IMAGES}" | grep "${DATE}")
52         if [ -z "${REPO_MATCHES}" ]; then
53                 cp "${REPO}/Dockerfile.template" "${REPO}/Dockerfile"
54                 sed -i "s|TAG|${DATE}|g" "${REPO}/Dockerfile"
55                 sed -i "s|NAMESPACE|${NAMESPACE}|g" "${REPO}/Dockerfile"
56                 sed -i "s|MAINTAINER.*|MAINTAINER ${AUTHOR}|g" "${REPO}/Dockerfile"
57                 docker build -t "${NAMESPACE}/${REPO}:${DATE}" "${REPO}" || die "failed to build"
58         fi
59         docker tag -f "${NAMESPACE}/${REPO}:${DATE}" "${NAMESPACE}/${REPO}:latest" || die "failed to tag"
60 done