+
+ msg "tag ${NAMESPACE}/portage-import:latest"
+ "${DOCKER}" tag -f "${NAMESPACE}/portage-import:${DATE}" "${NAMESPACE}/portage-import:latest" || die "failed to tag"
+}
+
+# extract Busybox for the portage image
+#
+# Arguments:
+#
+# 1: SUBDIR target subdirectory for the busybox binary
+extract_busybox()
+{
+ 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}/${SUBDIR}/":/tmp "${NAMESPACE}/gentoo:${DATE}" cp /bin/busybox /tmp/
+ "${DOCKER}" rm "${CONTAINER}"
+}
+
+# If it doesn't already exist:
+#
+# * create "${NAMESPACE}/${REPO}:${DATE}" from
+# "${REPO}/Dockerfile.template"
+#
+# Forcibly tag "${NAMESPACE}/${REPO}:${DATE}" with "latest"
+#
+# Arguments:
+#
+# 1: REPO
+build_repo()
+{
+ 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}" \
+ MAINTAINER="${AUTHOR}" \
+ envsubst '
+ ${NAMESPACE}
+ ${TAG}
+ ${MAINTAINER}
+ ' \
+ < "${REPO}/Dockerfile.template" > "${REPO}/Dockerfile"
+
+ msg "build ${NAMESPACE}/${REPO}:${DATE}"
+ "${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"
+}
+
+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}"
+
+case "${ACTION}" in
+build) build ;;
+missing) missing ;;
+--help) msg "usage: ${0} [--help] {build|missing}" ;;
+*) die "invalid action '${ACTION}'" ;;
+esac