summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjb <gjb@FreeBSD.org>2015-02-24 22:27:02 +0000
committergjb <gjb@FreeBSD.org>2015-02-24 22:27:02 +0000
commit1a0d38818e867b19f837592c481c2f345c6acd49 (patch)
tree7e5fa6d3bccb32bb1d92747731459da441760e82
parentc7fee6c3047ed11ce81121276b83f3f8804a50eb (diff)
downloadFreeBSD-src-1a0d38818e867b19f837592c481c2f345c6acd49.zip
FreeBSD-src-1a0d38818e867b19f837592c481c2f345c6acd49.tar.gz
Add a CLOUDPACKAGE variable to contain a list of targets for
post-install packaging cloud provider images. Add a 'gce-package.sh' script to generate the final output image ready for upload to the GCE platform. Right now, this is the only image that has a specific output format (GNU-tar), and this implementation is expected to be temporary. This is not directly connected to the other release targets. MFC after: 1 week X-MFC-with: r279249, r279250 Sponsored by: The FreeBSD Foundation
-rw-r--r--release/Makefile.vm14
-rwxr-xr-xrelease/tools/gce-package.sh47
2 files changed, 60 insertions, 1 deletions
diff --git a/release/Makefile.vm b/release/Makefile.vm
index 1b3c011..6ec7d6d 100644
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -34,8 +34,10 @@ CLOUDTARGETS+= cw-${_CW:tl}
CLEANDIRS+= cw-${_CW:tl}
CLEANFILES+= ${_CW:tl}.img \
${_CW:tl}.${${_CW:tu}_FORMAT} \
- ${_CW:tl}.${${_CW:tu}_FORMAT}.raw
+ ${_CW:tl}.${${_CW:tu}_FORMAT}.raw \
+ cw${_CW:tl}-package
CLOUDINSTALL+= cw${_CW:tl}-install
+CLOUDPACKAGE+= cw${_CW:tl}-package
${_CW:tu}IMAGE= ${_CW:tl}.${${_CW:tu}_FORMAT}
. if exists(${.CURDIR}/tools/${_CW:tl}.conf) && !defined(${_CW:tu}CONF)
${_CW:tu}CONF?= ${.CURDIR}/tools/${_CW:tl}.conf
@@ -59,6 +61,16 @@ cw${_CW:tl}-install:
cd ${DESTDIR}/${_CW:tl} && md5 ${${_CW}_DISK}* > \
${DESTDIR}/${_CW:tl}/CHECKSUM.MD5
+cw${_CW:tl}-package:
+ @# Special target to handle packaging cloud images in the formats
+ @# specific to each hosting provider.
+.if exists(${.CURDIR}/tools/${_CW:tl}-package.sh)
+ env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
+ ${.CURDIR}/tools/${_CW:tl}-package.sh \
+ -D ${DESTDIR} -I ${${_CW}_DISK} -S ${WORLDDIR}
+.endif
+ touch ${.TARGET}
+
. endfor
.endif
diff --git a/release/tools/gce-package.sh b/release/tools/gce-package.sh
new file mode 100755
index 0000000..5d8ec33
--- /dev/null
+++ b/release/tools/gce-package.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# Script to handle packaging cloud images for GCE.
+#
+# XXX:
+# This script only exists to help in automating image creation,
+# and reimplementing this is intended (in other words, this is
+# temporary).
+
+usage() {
+ echo "Usage:"
+ echo "$(basename ${0}) -D <destdir> -I <input_file> -S <src_tree>"
+ exit 1
+}
+
+main() {
+ while getopts "D:I:W:" opt; do
+ case ${opt} in
+ D)
+ DESTDIR="${OPTARG}"
+ ;;
+ I)
+ INFILE="${OPTARG}"
+ ;;
+ S)
+ WORLDDIR="${OPTARG}"
+ ;;
+ *)
+ usage
+ ;;
+ esac
+ done
+ shift $(( ${OPTIND} - 1 ))
+
+ if [ -z "${DESTDIR}" -o -z "${INFILE}" -o -z "${WORLDDIR}" ]; then
+ usage
+ fi
+
+ OUTFILE="$(make -C ${WORLDDIR}/release -V OSRELEASE).tar.gz"
+
+ cd ${DESTDIR} && tar --format=gnutar -zcf ${OUTFILE} ${INFILE}
+}
+
+main "$@"
OpenPOWER on IntegriCloud