AUTHOR="${AUTHOR:-W. Trevor King <wking@tremily.us>}"
NAMESPACE="${NAMESPACE:-wking}"
-DATE="${DATE:-20131226}"
+DATE="${DATE:-20140206}"
MIRROR="${MIRROR:-http://distfiles.gentoo.org/}"
-ARCH_URL="${ARCH_URL:-${MIRROR}releases/amd64/current-stage3/}"
+ARCH_URL="${ARCH_URL:-${MIRROR}releases/amd64/autobuilds/${DATE}/}"
STAGE3="${STAGE3:-stage3-amd64-${DATE}.tar.bz2}"
STAGE3_CONTENTS="${STAGE3_CONTENTS:-${STAGE3}.CONTENTS}"
STAGE3_DIGESTS="${STAGE3_DIGESTS:-${STAGE3}.DIGESTS.asc}"
DOCKER_IO=$(command -v docker.io)
DOCKER="${DOCKER:-${DOCKER_IO:-docker}}"
+BUILD_OPTS="${BUILD_OPTS:-}"
REPOS="${REPOS:-
portage
gentoo-en-us
gentoo-syslog
gentoo-java
+ gentoo-layman
buildbot
+ docker-registry
elasticsearch
memcached
nginx
nginx-proxy
kibana
+ kibana-azure
postgresql
redis
stunnel
for FILE in "${STAGE3}" "${STAGE3_CONTENTS}" "${STAGE3_DIGESTS}"; do
if [ ! -f "downloads/${FILE}" ]; then
- wget -O "downloads/${FILE}" "${ARCH_URL}${FILE}"
+ wget -O "downloads/${FILE}" "${ARCH_URL}${FILE}" ||
+ die "failed to download ${ARCH_URL}${FILE}"
fi
done
for FILE in "${PORTAGE}" "${PORTAGE_SIG}"; do
if [ ! -f "downloads/${FILE}" ]; then
- wget -O "downloads/${FILE}" "${PORTAGE_URL}${FILE}"
+ wget -O "downloads/${FILE}" "${PORTAGE_URL}${FILE}" ||
+ die "failed to download ${PORTAGE_URL}${FILE}"
fi
done
}
# extract Busybox for the portage image
+#
+# Arguments:
+#
+# 1: SUBDIR target subdirectory for the busybox binary
extract_busybox()
{
- msg "extract Busybox for the portage image"
+ SUBDIR="${1}"
+ msg "extract Busybox binary to ${SUBDIR}"
THIS_DIR=$(dirname $($REALPATH $0))
CONTAINER="${NAMESPACE}-gentoo-${DATE}-extract-busybox"
- "${DOCKER}" run -name "${CONTAINER}" -v "${THIS_DIR}/portage/":/tmp "${NAMESPACE}/gentoo:${DATE}" cp /bin/busybox /tmp/
+ "${DOCKER}" run --name "${CONTAINER}" -v "${THIS_DIR}/${SUBDIR}/":/tmp "${NAMESPACE}/gentoo:${DATE}" cp /bin/busybox /tmp/
"${DOCKER}" rm "${CONTAINER}"
}
REPO="${1}"
msg "build repo ${REPO}"
if ! repo_exists "${REPO}"; then
+ if [ "${REPO}" = portage ]; then
+ extract_busybox "${REPO}"
+ fi
+
env -i \
NAMESPACE="${NAMESPACE}" \
TAG="${DATE}" \
< "${REPO}/Dockerfile.template" > "${REPO}/Dockerfile"
msg "build ${NAMESPACE}/${REPO}:${DATE}"
- "${DOCKER}" build -t "${NAMESPACE}/${REPO}:${DATE}" "${REPO}" || die "failed to build"
+ "${DOCKER}" build ${BUILD_OPTS} -t "${NAMESPACE}/${REPO}:${DATE}" "${REPO}" || die "failed to build"
fi
msg "tag ${NAMESPACE}/${REPO}:latest"
"${DOCKER}" tag -f "${NAMESPACE}/${REPO}:${DATE}" "${NAMESPACE}/${REPO}:latest" || die "failed to tag"
}
-import_stage3
-import_portage
-extract_busybox
+build()
+{
+ import_stage3
+ import_portage
+
+ for REPO in ${REPOS}; do
+ build_repo "${REPO}"
+ done
+}
+
+missing()
+{
+ for REPO in gentoo portage-import ${REPOS}; do
+ if ! repo_exists "${REPO}"; then
+ msg "${REPO}"
+ fi
+ done
+}
+
+ACTION="${1:-build}"
-for REPO in ${REPOS}; do
- build_repo "${REPO}"
-done
+case "${ACTION}" in
+build) build ;;
+missing) missing ;;
+--help) msg "usage: ${0} [--help] {build|missing}" ;;
+*) die "invalid action '${ACTION}'" ;;
+esac