Makefile.gce revision 334963
1139826Simp# 253541Sshin# $FreeBSD: stable/10/release/Makefile.gce 334963 2018-06-11 17:22:27Z gjb $ 353541Sshin# 453541Sshin# 553541Sshin# Makefile for uploading Google Compute Engine disk images. 653541Sshin# 753541Sshin 853541SshinGCE_IMG?= ${.OBJDIR}/gce.raw 953541SshinGCE_UPLOAD_TGTS= gce-check-depends \ 1053541Sshin gce-do-package \ 1153541Sshin gce-do-upload 1253541Sshin# I do not yet have a better way to deal with the "must be run interactively" 1353541Sshin# thing, so this is a fail-safe "do not do anything." 1453541Sshin.if !defined(GCE_LOGIN_SKIP) || empty(GCE_LOGIN_SKIP) 1553541SshinGCE_UPLOAD_TGTS= gce-do-login 1653541Sshin.endif 1753541SshinCLEANFILES+= ${GCE_UPLOAD_TGTS} 1853541Sshin 1953541SshinGCE_BUCKET?= 2053541SshinGCE_LICENSE?= 2153541Sshin 2253541Sshin.if !defined(GCE_FAMILY) || empty(GCE_FAMILY) 2353541SshinGCE_FAMILY= ${TYPE:tl}-${REVISION:S,.,-,} 2453541Sshin.endif 2553541Sshin 2653541Sshin.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" 2753541Sshin_SNAPSHOT_DATE!= date +%Y%m%d 2853541SshinSNAPSHOT_DATE= -v${_SNAPSHOT_DATE} 2953541SshinGCE_FAMILY_SUFX= -snap 30139826Simp.endif 3153541Sshin 32171328Srwatson# Really? Uppercase characters are not allowed? Sigh... 33171328Srwatson# And don't even get me started on the '.'. 3453541SshinGCE_TARGET:= ${OSRELEASE:S,.raw,,:tl:S,.,-,g}${SNAPSHOT_DATE} 3553541Sshin 3653541Sshingce-upload: ${GCE_UPLOAD_TGTS} 3753541Sshin 3853541Sshingce-check-depends: 3953541Sshin.for VAR in _BUCKET 4053541Sshin. if !defined(GCE${VAR}) || empty(GCE${VAR}) 4153541Sshin @echo "Variable GCE${VAR} cannot be empty." 4253541Sshin @false 4353541Sshin. endif 4453541Sshin.endfor 4553541Sshin.if !exists(/usr/local/bin/gcloud) 4653541Sshin. if !exists(${PORTSDIR}/net/google-cloud-sdk/Makefile) 4753541Sshin. if !exists(/usr/local/sbin/pkg-static) 4853541Sshin env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf 4953541Sshin. endif 5053541Sshin env ASSUME_ALWAYS_YES=yes pkg install -y net/google-cloud-sdk 5153541Sshin. else 5253541Sshin make -C ${PORTSDIR}/net/google-cloud-sdk BATCH=1 all install clean 5353541Sshin. endif 5453541Sshin.endif 5553541Sshin 5653541Sshingce-do-package: 5753541Sshin @# Yes, really... Sigh. 5853541Sshin cd ${.OBJDIR} && mv gce.raw disk.raw 5953541Sshin cd ${.OBJDIR} && tar --format=gnutar -zcf \ 60174510Sobrien ${GCE_TARGET:S,${.OBJDIR}/,,}.tar.gz disk.raw 6153541Sshin cd ${.OBJDIR} && mv disk.raw gce.raw 6253541Sshin touch ${.OBJDIR}/${.TARGET} 6353541Sshin 6462587Sitojungce-do-login: 6553541Sshin @echo "This requires human interaction, which is not yet supported." 6655205Speter @true 6754263Sshin 6854263Sshingce-do-upload: 69171328Srwatson @# Fallthrough in case the bucket already exists. 7053541Sshin /usr/local/bin/gsutil mb gs://${GCE_BUCKET} || true 71171328Srwatson /usr/local/bin/gsutil cp ${.OBJDIR}/${GCE_TARGET}.tar.gz \ 72265946Skevlo gs://${GCE_BUCKET}/ 73171328Srwatson /usr/local/bin/gcloud compute images create ${GCE_TARGET} \ 7455205Speter --family=${GCE_FAMILY}${GCE_FAMILY_SUFX} ${GCE_LICENSE} \ 7553541Sshin --source-uri gs://${GCE_BUCKET}/${GCE_TARGET}.tar.gz 7653541Sshin touch ${.OBJDIR}/${.TARGET} 77 78