1280928Scperciva#
2280928Scperciva# $FreeBSD: stable/11/release/Makefile.ec2 346309 2019-04-17 12:34:37Z cperciva $
3280928Scperciva#
4280928Scperciva#
5280928Scperciva# Makefile for creating an EC2 AMI from a disk image.
6280928Scperciva#
7280928Scperciva
8338322Scperciva# Figure out where SVN is
9338322Scperciva.if !defined(SVN_CMD) || empty(SVN_CMD)
10338322Scperciva. for _P in /usr/bin /usr/local/bin
11338322Scperciva.  for _S in svn svnlite
12338322Scperciva.   if exists(${_P}/${_S})
13338322ScpercivaSVN_CMD=   ${_P}/${_S}
14338322Scperciva.   endif
15338322Scperciva.  endfor
16338322Scperciva. endfor
17338322Scperciva.endif
18338322Scperciva.if exists(${SRCTOP}/.svn)
19338322Scperciva.  if empty(EC2_SVNBRANCH)
20338322Scperciva   EC2_SVNBRANCH!=	${SVN_CMD} info --show-item relative-url ${WORLDDIR} 2>/dev/null | sed -e 's/\^\///'
21338322Scperciva.  export EC2_SVNBRANCH
22338322Scperciva.  endif
23338322Scperciva.  if empty(EC2_SVNREV)
24338322Scperciva   EC2_SVNREV!=	${SVN_CMD} info --show-item last-changed-revision ${WORLDDIR} 2>/dev/null || true
25338322Scperciva.  export EC2_SVNREV
26338322Scperciva.  endif
27338322Scperciva.else
28338322ScpercivaEC2_SVNBRANCH=	unknown
29338322ScpercivaEC2_SVNREV=	unknown
30338322Scperciva.endif
31338322Scperciva
32284811Sgjb.if ${BRANCH} == "CURRENT" || ${BRANCH} == "STABLE" || ${BRANCH} == "PRERELEASE"
33285005SgjbAMINAMESUFFIX!=	date +-%Y-%m-%d
34280928Scperciva.endif
35338322Scperciva.if defined(EC2PUBLIC) && !empty(EC2PUBLIC)
36280928ScpercivaPUBLISH=	--public
37280928Scperciva.endif
38338322Scperciva.if defined(EC2PUBLICSNAP) && !empty(EC2PUBLICSNAP)
39338322ScpercivaPUBLICSNAP=	--publicsnap
40338322Scperciva.endif
41338322Scperciva.if defined(EC2SNSTOPIC) && !empty(EC2SNSTOPIC)
42338322ScpercivaEC2SNSREL=	${REVISION}-${BRANCH}
43338322ScpercivaEC2SNSVERS=	${EC2_SVNBRANCH}@${EC2_SVNREV}
44338322Scperciva.endif
45346309Scperciva.if ${TARGET_ARCH} != "amd64"
46346309ScpercivaEC2ARCH=	--${TARGET_ARCH:S/aarch64/arm64/}
47346309Scperciva.endif
48280928Scperciva
49282419SgjbCLEANFILES+=		ec2ami
50282419Sgjb
51282419Sgjb.if !exists(/usr/local/bin/bsdec2-image-upload)
52282419SgjbCW_EC2_PORTINSTALL=	cw-ec2-portinstall
53282419SgjbCLEANFILES+=		${CW_EC2_PORTINSTALL}
54282419Sgjb.else
55282419SgjbCW_EC2_PORTINSTALL=
56282419Sgjb.endif
57282419Sgjb
58282116Sgjbcw-ec2-portinstall:
59282116Sgjb.if exists(${PORTSDIR}/net/bsdec2-image-upload/Makefile)
60301716Scperciva	env - PATH=$$PATH make -C ${PORTSDIR}/net/bsdec2-image-upload BATCH=1 all install clean
61282116Sgjb.else
62282116Sgjb. if !exists(/usr/local/sbin/pkg-static)
63282116Sgjb	env ASSUME_ALWAYS_YES=yes pkg bootstrap -y
64282116Sgjb. endif
65282116Sgjb	env ASSUME_ALWAYS_YES=yes pkg install -y net/bsdec2-image-upload
66280928Scperciva.endif
67282419Sgjb	@touch ${.TARGET}
68282116Sgjb
69282419Sgjbec2ami: cw-ec2 ${CW_EC2_PORTINSTALL}
70280928Scperciva.if !defined(AWSKEYFILE) || !exists(${AWSKEYFILE})
71280928Scperciva	@echo "--------------------------------------------------------------"
72280928Scperciva	@echo ">>> AWSKEYFILE must point at AWS keys for EC2 AMI creation"
73280928Scperciva	@echo "--------------------------------------------------------------"
74280928Scperciva	@false
75280928Scperciva.endif
76280928Scperciva.if !defined(AWSREGION)
77280928Scperciva	@echo "--------------------------------------------------------------"
78280928Scperciva	@echo ">>> AWSREGION must be specified EC2 AMI creation"
79280928Scperciva	@echo "--------------------------------------------------------------"
80280928Scperciva	@false
81280928Scperciva.endif
82280928Scperciva.if !defined(AWSBUCKET)
83280928Scperciva	@echo "--------------------------------------------------------------"
84280928Scperciva	@echo ">>> AWSBUCKET must be specified for EC2 AMI creation"
85280928Scperciva	@echo "--------------------------------------------------------------"
86280928Scperciva	@false
87280928Scperciva.endif
88346309Scperciva	/usr/local/bin/bsdec2-image-upload ${PUBLISH} ${PUBLICSNAP} \
89346309Scperciva	    ${EC2ARCH} --sriov --ena \
90283919Sgjb	    ${.OBJDIR}/ec2.raw \
91283919Sgjb	    "${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX}" \
92338322Scperciva	    "${TYPE}/${TARGET} ${EC2_SVNBRANCH}@${EC2_SVNREV}" \
93338322Scperciva	    ${AWSREGION} ${AWSBUCKET} ${AWSKEYFILE} \
94338322Scperciva	    ${EC2SNSTOPIC} ${EC2SNSREL} ${EC2SNSVERS}
95282419Sgjb	@touch ${.TARGET}
96