1284882Sgjb# 2284882Sgjb# $FreeBSD: stable/10/release/Makefile.gce 334963 2018-06-11 17:22:27Z gjb $ 3284882Sgjb# 4284882Sgjb# 5284882Sgjb# Makefile for uploading Google Compute Engine disk images. 6284882Sgjb# 7284882Sgjb 8284882SgjbGCE_IMG?= ${.OBJDIR}/gce.raw 9284882SgjbGCE_UPLOAD_TGTS= gce-check-depends \ 10284882Sgjb gce-do-package \ 11284882Sgjb gce-do-upload 12284882Sgjb# I do not yet have a better way to deal with the "must be run interactively" 13284882Sgjb# thing, so this is a fail-safe "do not do anything." 14284882Sgjb.if !defined(GCE_LOGIN_SKIP) || empty(GCE_LOGIN_SKIP) 15284882SgjbGCE_UPLOAD_TGTS= gce-do-login 16284882Sgjb.endif 17284882SgjbCLEANFILES+= ${GCE_UPLOAD_TGTS} 18284882Sgjb 19284882SgjbGCE_BUCKET?= 20333608SgjbGCE_LICENSE?= 21284882Sgjb 22331876Sgjb.if !defined(GCE_FAMILY) || empty(GCE_FAMILY) 23331876SgjbGCE_FAMILY= ${TYPE:tl}-${REVISION:S,.,-,} 24331876Sgjb.endif 25331876Sgjb 26284882Sgjb.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" 27334963Sgjb_SNAPSHOT_DATE!= date +%Y%m%d 28334963SgjbSNAPSHOT_DATE= -v${_SNAPSHOT_DATE} 29331876SgjbGCE_FAMILY_SUFX= -snap 30284882Sgjb.endif 31284882Sgjb 32284882Sgjb# Really? Uppercase characters are not allowed? Sigh... 33284882Sgjb# And don't even get me started on the '.'. 34284882SgjbGCE_TARGET:= ${OSRELEASE:S,.raw,,:tl:S,.,-,g}${SNAPSHOT_DATE} 35284882Sgjb 36284882Sgjbgce-upload: ${GCE_UPLOAD_TGTS} 37284882Sgjb 38284882Sgjbgce-check-depends: 39284882Sgjb.for VAR in _BUCKET 40284882Sgjb. if !defined(GCE${VAR}) || empty(GCE${VAR}) 41284882Sgjb @echo "Variable GCE${VAR} cannot be empty." 42284882Sgjb @false 43284882Sgjb. endif 44284882Sgjb.endfor 45303917Sgjb.if !exists(/usr/local/bin/gcloud) 46285049Sgjb. if !exists(${PORTSDIR}/net/google-cloud-sdk/Makefile) 47284882Sgjb. if !exists(/usr/local/sbin/pkg-static) 48284882Sgjb env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf 49284882Sgjb. endif 50285049Sgjb env ASSUME_ALWAYS_YES=yes pkg install -y net/google-cloud-sdk 51284882Sgjb. else 52285049Sgjb make -C ${PORTSDIR}/net/google-cloud-sdk BATCH=1 all install clean 53284882Sgjb. endif 54284882Sgjb.endif 55284882Sgjb 56284882Sgjbgce-do-package: 57284882Sgjb @# Yes, really... Sigh. 58284882Sgjb cd ${.OBJDIR} && mv gce.raw disk.raw 59284882Sgjb cd ${.OBJDIR} && tar --format=gnutar -zcf \ 60284882Sgjb ${GCE_TARGET:S,${.OBJDIR}/,,}.tar.gz disk.raw 61284882Sgjb cd ${.OBJDIR} && mv disk.raw gce.raw 62284882Sgjb touch ${.OBJDIR}/${.TARGET} 63284882Sgjb 64284882Sgjbgce-do-login: 65284882Sgjb @echo "This requires human interaction, which is not yet supported." 66284882Sgjb @true 67284882Sgjb 68284882Sgjbgce-do-upload: 69284882Sgjb @# Fallthrough in case the bucket already exists. 70284882Sgjb /usr/local/bin/gsutil mb gs://${GCE_BUCKET} || true 71284882Sgjb /usr/local/bin/gsutil cp ${.OBJDIR}/${GCE_TARGET}.tar.gz \ 72284882Sgjb gs://${GCE_BUCKET}/ 73303917Sgjb /usr/local/bin/gcloud compute images create ${GCE_TARGET} \ 74333608Sgjb --family=${GCE_FAMILY}${GCE_FAMILY_SUFX} ${GCE_LICENSE} \ 75303917Sgjb --source-uri gs://${GCE_BUCKET}/${GCE_TARGET}.tar.gz 76284882Sgjb touch ${.OBJDIR}/${.TARGET} 77284882Sgjb 78