aboutsummaryrefslogtreecommitdiff
path: root/release/Makefile.gce
diff options
context:
space:
mode:
authorGlen Barber <gjb@FreeBSD.org>2015-06-27 01:29:59 +0000
committerGlen Barber <gjb@FreeBSD.org>2015-06-27 01:29:59 +0000
commiteb64cd58f53b03010e8dc24f025d328eb85c37a0 (patch)
tree5e9ff1c2ffc0a43a424e9ccd446eecb953bf006a /release/Makefile.gce
parent9ebcef9a748a8de8d0d8046de8ac2f368749ebed (diff)
Notes
Diffstat (limited to 'release/Makefile.gce')
-rw-r--r--release/Makefile.gce69
1 files changed, 69 insertions, 0 deletions
diff --git a/release/Makefile.gce b/release/Makefile.gce
new file mode 100644
index 0000000000000..c7d6a75fb3000
--- /dev/null
+++ b/release/Makefile.gce
@@ -0,0 +1,69 @@
+#
+# $FreeBSD$
+#
+#
+# Makefile for uploading Google Compute Engine disk images.
+#
+
+GCE_IMG?= ${.OBJDIR}/gce.raw
+GCE_UPLOAD_TGTS= gce-check-depends \
+ gce-do-package \
+ gce-do-upload
+# I do not yet have a better way to deal with the "must be run interactively"
+# thing, so this is a fail-safe "do not do anything."
+.if !defined(GCE_LOGIN_SKIP) || empty(GCE_LOGIN_SKIP)
+GCE_UPLOAD_TGTS= gce-do-login
+.endif
+CLEANFILES+= ${GCE_UPLOAD_TGTS}
+
+GCE_BUCKET?=
+
+.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
+SNAPSHOT_DATE!= date +-%Y-%m-%d-%H-%M
+.endif
+
+# Really? Uppercase characters are not allowed? Sigh...
+# And don't even get me started on the '.'.
+GCE_TARGET:= ${OSRELEASE:S,.raw,,:tl:S,.,-,g}${SNAPSHOT_DATE}
+
+gce-upload: ${GCE_UPLOAD_TGTS}
+
+gce-check-depends:
+.for VAR in _BUCKET
+. if !defined(GCE${VAR}) || empty(GCE${VAR})
+ @echo "Variable GCE${VAR} cannot be empty."
+ @false
+. endif
+.endfor
+.if !exists(/usr/local/bin/gcutil)
+. if !execho ists(${PORTSDIR}/net/google-cloud-api/Makefile)
+. if !exists(/usr/local/sbin/pkg-static)
+ env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf
+. endif
+ env ASSUME_ALWAYS_YES=yes pkg install -y net/google-cloud-api
+. else
+ make -C ${PORTSDIR}/net/google-cloud-api BATCH=1 all install clean
+. endif
+.endif
+
+gce-do-package:
+ @# Yes, really... Sigh.
+ cd ${.OBJDIR} && mv gce.raw disk.raw
+ cd ${.OBJDIR} && tar --format=gnutar -zcf \
+ ${GCE_TARGET:S,${.OBJDIR}/,,}.tar.gz disk.raw
+ cd ${.OBJDIR} && mv disk.raw gce.raw
+ touch ${.OBJDIR}/${.TARGET}
+
+gce-do-login:
+ @echo "This requires human interaction, which is not yet supported."
+ @true
+
+gce-do-upload:
+ @# Fallthrough in case the bucket already exists.
+ /usr/local/bin/gsutil mb gs://${GCE_BUCKET} || true
+ /usr/local/bin/gsutil cp ${.OBJDIR}/${GCE_TARGET}.tar.gz \
+ gs://${GCE_BUCKET}/
+ /usr/local/bin/gcutil addimage ${GCE_TARGET} \
+ gs://${GCE_BUCKET}/${GCE_TARGET}.tar.gz
+ touch ${.OBJDIR}/${.TARGET}
+