From dc1c45001a7cc8862962a000f87295eb04c5f252 Mon Sep 17 00:00:00 2001 From: Glen Barber Date: Tue, 24 Feb 2015 22:27:02 +0000 Subject: [PATCH] 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 --- release/Makefile.vm | 14 ++++++++++- release/tools/gce-package.sh | 47 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100755 release/tools/gce-package.sh diff --git a/release/Makefile.vm b/release/Makefile.vm index 1b3c011bb65a..6ec7d6db7e1f 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 000000000000..5d8ec3311303 --- /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 -I -S " + 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 "$@"