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 "$@"