Makefile.gce revision 284882
1232809Sjmallett#
2232809Sjmallett# $FreeBSD: head/release/Makefile.gce 284882 2015-06-27 01:29:59Z gjb $
3232809Sjmallett#
4232809Sjmallett#
5232809Sjmallett# Makefile for uploading Google Compute Engine disk images.
6232809Sjmallett#
7232809Sjmallett
8232809SjmallettGCE_IMG?=		${.OBJDIR}/gce.raw
9232809SjmallettGCE_UPLOAD_TGTS=	gce-check-depends \
10232809Sjmallett			gce-do-package \
11232809Sjmallett			gce-do-upload
12232809Sjmallett# I do not yet have a better way to deal with the "must be run interactively"
13232809Sjmallett# thing, so this is a fail-safe "do not do anything."
14232809Sjmallett.if !defined(GCE_LOGIN_SKIP) || empty(GCE_LOGIN_SKIP)
15232809SjmallettGCE_UPLOAD_TGTS=	gce-do-login
16232809Sjmallett.endif
17232809SjmallettCLEANFILES+=		${GCE_UPLOAD_TGTS}
18232809Sjmallett
19232809SjmallettGCE_BUCKET?=
20232809Sjmallett
21232809Sjmallett.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
22232809SjmallettSNAPSHOT_DATE!=		date +-%Y-%m-%d-%H-%M
23232809Sjmallett.endif
24232809Sjmallett
25232809Sjmallett# Really?  Uppercase characters are not allowed?  Sigh...
26232809Sjmallett# And don't even get me started on the '.'.
27232809SjmallettGCE_TARGET:=		${OSRELEASE:S,.raw,,:tl:S,.,-,g}${SNAPSHOT_DATE}
28232809Sjmallett
29232809Sjmallettgce-upload:		${GCE_UPLOAD_TGTS}
30232809Sjmallett
31232809Sjmallettgce-check-depends:
32232809Sjmallett.for VAR in _BUCKET
33232809Sjmallett. if !defined(GCE${VAR}) || empty(GCE${VAR})
34232809Sjmallett	@echo "Variable GCE${VAR} cannot be empty."
35232809Sjmallett	@false
36232809Sjmallett. endif
37232809Sjmallett.endfor
38232809Sjmallett.if !exists(/usr/local/bin/gcutil)
39232809Sjmallett. if !execho ists(${PORTSDIR}/net/google-cloud-api/Makefile)
40232809Sjmallett.  if !exists(/usr/local/sbin/pkg-static)
41232809Sjmallett	env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf
42232809Sjmallett.  endif
43232809Sjmallett	env ASSUME_ALWAYS_YES=yes pkg install -y net/google-cloud-api
44232809Sjmallett. else
45232809Sjmallett	make -C ${PORTSDIR}/net/google-cloud-api BATCH=1 all install clean
46232809Sjmallett. endif
47232809Sjmallett.endif
48232809Sjmallett
49232809Sjmallettgce-do-package:
50232809Sjmallett	@# Yes, really...  Sigh.
51232809Sjmallett	cd ${.OBJDIR} && mv gce.raw disk.raw
52232809Sjmallett	cd ${.OBJDIR} && tar --format=gnutar -zcf \
53232809Sjmallett		${GCE_TARGET:S,${.OBJDIR}/,,}.tar.gz disk.raw
54232809Sjmallett	cd ${.OBJDIR} && mv disk.raw gce.raw
55232809Sjmallett	touch ${.OBJDIR}/${.TARGET}
56232809Sjmallett
57232809Sjmallettgce-do-login:
58232809Sjmallett	@echo "This requires human interaction, which is not yet supported."
59232809Sjmallett	@true
60232809Sjmallett
61232809Sjmallettgce-do-upload:
62232809Sjmallett	@# Fallthrough in case the bucket already exists.
63232809Sjmallett	/usr/local/bin/gsutil mb gs://${GCE_BUCKET} || true
64232809Sjmallett	/usr/local/bin/gsutil cp ${.OBJDIR}/${GCE_TARGET}.tar.gz \
65232809Sjmallett		gs://${GCE_BUCKET}/
66232809Sjmallett	/usr/local/bin/gcutil addimage ${GCE_TARGET} \
67232809Sjmallett		gs://${GCE_BUCKET}/${GCE_TARGET}.tar.gz
68232809Sjmallett	touch ${.OBJDIR}/${.TARGET}
69232809Sjmallett
70232809Sjmallett