xref: /freebsd/release/Makefile.vagrant (revision 41f7db3a4fb09016dbba71ad616a7f21a81b0b78)
1*41f7db3aSBrad Davis#
2*41f7db3aSBrad Davis# $FreeBSD$
3*41f7db3aSBrad Davis#
4*41f7db3aSBrad Davis#
5*41f7db3aSBrad Davis# Makefile for uploading Vagrant boxes to Hashicorp Atlas
6*41f7db3aSBrad Davis#
7*41f7db3aSBrad Davis
8*41f7db3aSBrad DavisVAGRANT_UPLOAD_TGTS=	vagrant-check-depends \
9*41f7db3aSBrad Davis			vagrant-do-package-vmware
10*41f7db3aSBrad Davis#			atlas-do-upload
11*41f7db3aSBrad DavisCLEANFILES+=		${VAGRANT_UPLOAD_TGTS}
12*41f7db3aSBrad Davis
13*41f7db3aSBrad Davis.if defined(VAGRANT_UPLOAD_CONF) && !empty(VAGRANT_UPLOAD_CONF)
14*41f7db3aSBrad Davis. for VAR in _ACCOUNT _KEY
15*41f7db3aSBrad DavisVAGRANT${VAR}!=	grep -E ^VAGRANT${VAR} ${VAGRANT_UPLOAD_CONF} | awk -F'	' '{print $$2}'
16*41f7db3aSBrad Davis. endfor
17*41f7db3aSBrad Davis.endif
18*41f7db3aSBrad Davis
19*41f7db3aSBrad Davis.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
20*41f7db3aSBrad DavisSNAPSHOT_DATE!=		date +-%Y-%m-%d-%H-%M
21*41f7db3aSBrad Davis.endif
22*41f7db3aSBrad Davis
23*41f7db3aSBrad DavisVAGRANT_TARGET:=	${OSRELEASE}${SNAPSHOT_DATE}.box
24*41f7db3aSBrad Davis
25*41f7db3aSBrad Davisvagrant-upload:		${VAGRANT_UPLOAD_TGTS}
26*41f7db3aSBrad Davis
27*41f7db3aSBrad Davisvagrant-check-depends:
28*41f7db3aSBrad Davis.for VAR in _ACCOUNT _KEY
29*41f7db3aSBrad Davis. if !defined(VAGRANT${VAR}) || empty(VAGRANT${VAR})
30*41f7db3aSBrad Davis	@echo "Variable VAGRANT${VAR} cannot be empty."
31*41f7db3aSBrad Davis	@false
32*41f7db3aSBrad Davis. endif
33*41f7db3aSBrad Davis.endfor
34*41f7db3aSBrad Davis.if !exists(/usr/local/bin/curl)
35*41f7db3aSBrad Davis. if !exists(${PORTSDIR}/ftp/curl/Makefile)
36*41f7db3aSBrad Davis.  if !exists(/usr/local/sbin/pkg-static)
37*41f7db3aSBrad Davis	env ASSUME_ALWAYS_YES=yes pkg bootstrap -yf
38*41f7db3aSBrad Davis.  endif
39*41f7db3aSBrad Davis	env ASSUME_ALWAYS_YES=yes pkg install -y ftp/curl
40*41f7db3aSBrad Davis. else
41*41f7db3aSBrad Davis	make -C ${PORTSDIR}/ftp/curl BATCH=1 all install clean
42*41f7db3aSBrad Davis. endif
43*41f7db3aSBrad Davis.endif
44*41f7db3aSBrad Davis
45*41f7db3aSBrad Davisvagrant-do-package: cw-vagrant
46*41f7db3aSBrad Davis
47*41f7db3aSBrad Davisvagrant-do-package-vmware: vagrant-create-vmware-vmx vagrant-do-package
48*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo '{"provider":"vmware_desktop"}' > metadata.json
49*41f7db3aSBrad Davis	cd ${.OBJDIR} && tar -czf ${VAGRANT_TARGET} metadata.json vagrant.vmx vagrant.vmdk
50*41f7db3aSBrad Davis	touch ${.OBJDIR}/${.TARGET}
51*41f7db3aSBrad Davis
52*41f7db3aSBrad Davisatlas-create-upload:
53*41f7db3aSBrad Davis.for PROVIDER in vmware_desktop virtualbox
54*41f7db3aSBrad Davis	/usr/local/bin/curl "https://vagrant.hashicorp.com/api/v1/box/${ATLAS_USERNAME}/${ATLAS_NAME}/version/${ATLAS_VERSION}/provider/${PROVIDER}/upload?access_token=${ATLAS_KEY}"
55*41f7db3aSBrad Davis.endfor
56*41f7db3aSBrad Davis	touch ${.OBJDIR}/${.TARGET}
57*41f7db3aSBrad Davis
58*41f7db3aSBrad Davisatlas-do-upload:
59*41f7db3aSBrad Davis	/usr/local/bin/curl -X PUT --upload-file \
60*41f7db3aSBrad Davis		${VAGRANT_IMG} ${ATLAS_UPLOAD_PATH}
61*41f7db3aSBrad Davis	touch ${.OBJDIR}/${.TARGET}
62*41f7db3aSBrad Davis
63*41f7db3aSBrad Davisvagrant-create-vmware-vmx:
64*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo '.encoding = "UTF-8"' > vagrant.vmx
65*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'bios.bootorder = "hdd,CDROM"' >> vagrant.vmx
66*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'checkpoint.vmstate = ""' >> vagrant.vmx
67*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'cleanshutdown = "TRUE"' >> vagrant.vmx
68*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'config.version = "8"' >> vagrant.vmx
69*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'displayname = "${VAGRANT_TARGET}"' >> vagrant.vmx
70*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.addresstype = "generated"' >> vagrant.vmx
71*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.bsdname = "en0"' >> vagrant.vmx
72*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.connectiontype = "nat"' >> vagrant.vmx
73*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.displayname = "Ethernet"' >> vagrant.vmx
74*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.linkstatepropagation.enable = "FALSE"' >> vagrant.vmx
75*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.pcislotnumber = "33"' >> vagrant.vmx
76*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.present = "TRUE"' >> vagrant.vmx
77*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.virtualdev = "e1000"' >> vagrant.vmx
78*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'ethernet0.wakeonpcktrcv = "FALSE"' >> vagrant.vmx
79*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'floppy0.present = "FALSE"' >> vagrant.vmx
80*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'guestos = "freebsd-64"' >> vagrant.vmx
81*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'gui.fullscreenatpoweron = "FALSE"' >> vagrant.vmx
82*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'gui.viewmodeatpoweron = "windowed"' >> vagrant.vmx
83*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'memsize = "512"' >> vagrant.vmx
84*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'sound.startconnected = "FALSE"' >> vagrant.vmx
85*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'softpoweroff = "TRUE"' >> vagrant.vmx
86*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'scsi0.pcislotnumber = "16"' >> vagrant.vmx
87*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'scsi0.present = "TRUE"' >> vagrant.vmx
88*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'scsi0.virtualdev = "lsilogic"' >> vagrant.vmx
89*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'scsi0:0.filename = "vagrant.vmdk"' >> vagrant.vmx
90*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'scsi0:0.present = "TRUE"' >> vagrant.vmx
91*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'tools.synctime = "TRUE"' >> vagrant.vmx
92*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'usb.present = "FALSE"' >> vagrant.vmx
93*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'virtualhw.productcompatibility = "hosted"' >> vagrant.vmx
94*41f7db3aSBrad Davis	@cd ${.OBJDIR} && echo 'virtualhw.version = "9"' >> vagrant.vmx
95