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