Makefile.vagrant revision 289077
1184257Slulf#
2186743Slulf# $FreeBSD: stable/10/release/Makefile.vagrant 289077 2015-10-09 19:18:02Z bdrewery $
3184257Slulf#
4184257Slulf#
5184257Slulf# Makefile for uploading Vagrant boxes to Hashicorp Atlas
6184257Slulf#
7184257Slulf
8184257SlulfVAGRANT_IMG?=		${.OBJDIR}/vagrant.vmdk
9184257SlulfVAGRANT_UPLOAD_TGTS=	vagrant-check-depends
10184257SlulfCLEANFILES+=		${VAGRANT_UPLOAD_TGTS}
11184257Slulf
12184257Slulf.if defined(VAGRANT_UPLOAD_CONF) && !empty(VAGRANT_UPLOAD_CONF)
13184257Slulf. for VAR in _KEY _USERNAME
14184257SlulfVAGRANT${VAR}!=		grep -E ^VAGRANT${VAR} ${VAGRANT_UPLOAD_CONF} | awk -F'	' '{print $$2}'
15184257SlulfATLAS${VAR}:=		${VAGRANT${VAR}}
16184257Slulf. endfor
17184257Slulf.endif
18184257Slulf
19184257Slulf.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
20184257SlulfSNAPSHOT_DATE!=		date +-%Y%m%d
21184257Slulf.endif
22184257Slulf
23184257SlulfVAGRANT_VERSION!=	date +%Y.%m.%d
24184257SlulfVAGRANT_TARGET:=	${OSRELEASE}${SNAPSHOT_DATE}
25184257Slulf.if !empty(CLOUDWARE)
26184257Slulf. for _PROVIDER in ${CLOUDWARE}
27184257Slulf_provider=	${_PROVIDER}
28184257Slulf.  if ${_provider:MVAGRANT*}
29184257SlulfVAGRANT_PROVIDERS+=	${_PROVIDER:S/VAGRANT-//:tl}
30184257Slulf.  endif
31184257Slulf. endfor
32184257Slulf.endif
33184257SlulfVAGRANT_PROVIDERS?=	vmware virtualbox
34184257Slulf
35184257Slulf
36184257Slulfvagrant-check-depends:
37186698Slulf.for VAR in _KEY _USERNAME _VERSION
38184257Slulf. if !defined(VAGRANT${VAR}) || empty(VAGRANT${VAR})
39184257Slulf	@echo "Variable VAGRANT${VAR} cannot be empty."
40184257Slulf	@false
41184257Slulf. endif
42184257Slulf.endfor
43184257Slulf.if !exists(/usr/local/bin/curl)
44184257Slulf. if !exists(${PORTSDIR}/ftp/curl/Makefile)
45184257Slulf.  if !exists(/usr/local/sbin/pkg-static)
46184257Slulf	env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf
47184257Slulf.  endif
48184257Slulf	env ASSUME_ALWAYS_YES=yes pkg install -y curl
49184257Slulf. else
50184257Slulf	make -C ${PORTSDIR}/ftp/curl BATCH=1 all install clean
51184257Slulf. endif
52184257Slulf.endif
53184257Slulf
54184257Slulf.for PROVIDER in ${VAGRANT_PROVIDERS}
55184257Slulf_provider=	${PROVIDER}
56184257SlulfCLEANFILES+=	vagrant-do-package-${PROVIDER} ${VAGRANT_TARGET}.${PROVIDER}.box
57184257SlulfCLEANDIRS+=	${PROVIDER}
58184257SlulfVAGRANT_UPLOAD_TGTS+=	vagrant-do-upload-${PROVIDER}
59184257Slulf
60184257Slulf${PROVIDER}:
61184257Slulf	@mkdir -p ${PROVIDER}
62184257Slulf
63184257Slulf${VAGRANT_TARGET}.${PROVIDER}.box: ${PROVIDER} cw-vagrant-${PROVIDER} vagrant-create-${PROVIDER}-metadata
64184257Slulf	@echo "==> PACKAGING: ${VAGRANT_TARGET}.${PROVIDER}.box in `pwd`"
65184257Slulf	@cp vagrant-${PROVIDER}.vmdk ${PROVIDER}/vagrant.vmdk
66184257Slulf. if ${_provider} == virtualbox
67184257Slulf	@(cd ${.OBJDIR}/${PROVIDER} && echo '{"provider":"${PROVIDER}"}' > metadata.json)
68185134Slulf	@(cd ${.OBJDIR}/${PROVIDER} && tar -czf ../${VAGRANT_TARGET}.${PROVIDER}.box metadata.json box.ovf vagrant.vmdk)
69185134Slulf. elif ${_provider} == vmware
70184257Slulf	@(cd ${.OBJDIR}/${PROVIDER} && echo '{"provider":"${PROVIDER}_desktop"}' > metadata.json)
71184257Slulf	@(cd ${.OBJDIR}/${PROVIDER} && tar -czf ../${VAGRANT_TARGET}.${PROVIDER}.box metadata.json vagrant.vmx vagrant.vmdk)
72184257Slulf. endif
73185130Slulf
74184257SlulfCLEANFILES+=	vagrant-do-upload-${PROVIDER}
75184257Slulfvagrant-do-upload-${PROVIDER}: ${VAGRANT_TARGET}.${PROVIDER}.box
76184257Slulf. if ${_provider} == virtualbox
77184257Slulf	${.CURDIR}/scripts/atlas-upload.sh -b ${TYPE}-${REVISION}-${BRANCH} -f ${VAGRANT_TARGET}.${PROVIDER}.box -p ${PROVIDER} -k ${VAGRANT_KEY} -u ${VAGRANT_USERNAME} -v ${VAGRANT_VERSION}
78184257Slulf. elif ${_provider} == vmware
79185094Slulf	${.CURDIR}/scripts/atlas-upload.sh -b ${TYPE}-${REVISION}-${BRANCH} -f ${VAGRANT_TARGET}.${PROVIDER}.box -p ${PROVIDER}_desktop -k ${VAGRANT_KEY} -u ${VAGRANT_USERNAME} -v ${VAGRANT_VERSION}
80184257Slulf. endif
81184257Slulf	touch ${.OBJDIR}/${.TARGET}
82184257Slulf.endfor
83184257Slulf
84184257Slulfvagrant-upload:	${VAGRANT_UPLOAD_TGTS}
85184257Slulf
86184257Slulfvagrant-create-virtualbox-metadata: virtualbox/box.ovf
87185130Slulf
88184257Slulfvirtualbox/box.ovf: ${.CURDIR}/scripts/box.ovf
89184257Slulf	cp ${.ALLSRC} virtualbox/
90184257Slulf
91184257Slulfvmware/vagrant.vmx:
92184257Slulf	@(cd vmware && echo '.encoding = "UTF-8"' > vagrant.vmx)
93184257Slulf	@(cd vmware && echo 'bios.bootorder = "hdd,CDROM"' >> vagrant.vmx)
94184257Slulf	@(cd vmware && echo 'checkpoint.vmstate = ""' >> vagrant.vmx)
95184257Slulf	@(cd vmware && echo 'cleanshutdown = "TRUE"' >> vagrant.vmx)
96184257Slulf	@(cd vmware && echo 'config.version = "8"' >> vagrant.vmx)
97184257Slulf	@(cd vmware && echo 'displayname = "${VAGRANT_TARGET}"' >> vagrant.vmx)
98184257Slulf	@(cd vmware && echo 'ethernet0.addresstype = "generated"' >> vagrant.vmx)
99184257Slulf	@(cd vmware && echo 'ethernet0.bsdname = "en0"' >> vagrant.vmx)
100184257Slulf	@(cd vmware && echo 'ethernet0.connectiontype = "nat"' >> vagrant.vmx)
101184257Slulf	@(cd vmware && echo 'ethernet0.displayname = "Ethernet"' >> vagrant.vmx)
102184257Slulf	@(cd vmware && echo 'ethernet0.linkstatepropagation.enable = "FALSE"' >> vagrant.vmx)
103184257Slulf	@(cd vmware && echo 'ethernet0.pcislotnumber = "33"' >> vagrant.vmx)
104184257Slulf	@(cd vmware && echo 'ethernet0.present = "TRUE"' >> vagrant.vmx)
105184257Slulf	@(cd vmware && echo 'ethernet0.virtualdev = "e1000"' >> vagrant.vmx)
106184257Slulf	@(cd vmware && echo 'ethernet0.wakeonpcktrcv = "FALSE"' >> vagrant.vmx)
107184257Slulf	@(cd vmware && echo 'floppy0.present = "FALSE"' >> vagrant.vmx)
108184257Slulf	@(cd vmware && echo 'guestos = "freebsd-64"' >> vagrant.vmx)
109184257Slulf	@(cd vmware && echo 'gui.fullscreenatpoweron = "FALSE"' >> vagrant.vmx)
110184257Slulf	@(cd vmware && echo 'gui.viewmodeatpoweron = "windowed"' >> vagrant.vmx)
111184257Slulf	@(cd vmware && echo 'memsize = "512"' >> vagrant.vmx)
112184257Slulf	@(cd vmware && echo 'sound.startconnected = "FALSE"' >> vagrant.vmx)
113184257Slulf	@(cd vmware && echo 'softpoweroff = "TRUE"' >> vagrant.vmx)
114184257Slulf	@(cd vmware && echo 'scsi0.pcislotnumber = "16"' >> vagrant.vmx)
115184257Slulf	@(cd vmware && echo 'scsi0.present = "TRUE"' >> vagrant.vmx)
116184257Slulf	@(cd vmware && echo 'scsi0.virtualdev = "lsilogic"' >> vagrant.vmx)
117185130Slulf	@(cd vmware && echo 'scsi0:0.filename = "vagrant.vmdk"' >> vagrant.vmx)
118184257Slulf	@(cd vmware && echo 'scsi0:0.present = "TRUE"' >> vagrant.vmx)
119184257Slulf	@(cd vmware && echo 'tools.synctime = "TRUE"' >> vagrant.vmx)
120184257Slulf	@(cd vmware && echo 'usb.present = "FALSE"' >> vagrant.vmx)
121184257Slulf	@(cd vmware && echo 'virtualhw.productcompatibility = "hosted"' >> vagrant.vmx)
122184257Slulf	@(cd vmware && echo 'virtualhw.version = "9"' >> vagrant.vmx)
123184257Slulf
124184257Slulfvagrant-create-vmware-metadata: vmware/vagrant.vmx
125184257Slulf