1280928Scperciva#
2280928Scperciva# $FreeBSD: stable/10/release/Makefile.ec2 338323 2018-08-26 05:28:17Z cperciva $
3280928Scperciva#
4280928Scperciva#
5280928Scperciva# Makefile for creating an EC2 AMI from a disk image.
6280928Scperciva#
7280928Scperciva
8338323Scperciva# Figure out where SVN is
9338323Scperciva.if !defined(SVN_CMD) || empty(SVN_CMD)
10338323Scperciva. for _P in /usr/bin /usr/local/bin
11338323Scperciva.  for _S in svn svnlite
12338323Scperciva.   if exists(${_P}/${_S})
13338323ScpercivaSVN_CMD=   ${_P}/${_S}
14338323Scperciva.   endif
15338323Scperciva.  endfor
16338323Scperciva. endfor
17338323Scperciva.endif
18338323Scperciva.if exists(${SRCTOP}/.svn)
19338323Scperciva.  if empty(EC2_SVNBRANCH)
20338323Scperciva   EC2_SVNBRANCH!=	${SVN_CMD} info --show-item relative-url ${WORLDDIR} 2>/dev/null | sed -e 's/\^\///'
21338323Scperciva.  export EC2_SVNBRANCH
22338323Scperciva.  endif
23338323Scperciva.  if empty(EC2_SVNREV)
24338323Scperciva   EC2_SVNREV!=	${SVN_CMD} info --show-item last-changed-revision ${WORLDDIR} 2>/dev/null || true
25338323Scperciva.  export EC2_SVNREV
26338323Scperciva.  endif
27338323Scperciva.else
28338323ScpercivaEC2_SVNBRANCH=	unknown
29338323ScpercivaEC2_SVNREV=	unknown
30338323Scperciva.endif
31338323Scperciva
32284813Sgjb.if ${BRANCH} == "CURRENT" || ${BRANCH} == "STABLE" || ${BRANCH} == "PRERELEASE"
33285049SgjbAMINAMESUFFIX!=	date +-%Y-%m-%d
34280928Scperciva.endif
35338323Scperciva.if defined(EC2PUBLIC) && !empty(EC2PUBLIC)
36280928ScpercivaPUBLISH=	--public
37280928Scperciva.endif
38338323Scperciva.if defined(EC2PUBLICSNAP) && !empty(EC2PUBLICSNAP)
39338323ScpercivaPUBLICSNAP=	--publicsnap
40338323Scperciva.endif
41338323Scperciva.if defined(EC2SNSTOPIC) && !empty(EC2SNSTOPIC)
42338323ScpercivaEC2SNSREL=	${REVISION}-${BRANCH}
43338323ScpercivaEC2SNSVERS=	${EC2_SVNBRANCH}@${EC2_SVNREV}
44338323Scperciva.endif
45280928Scperciva
46282618SgjbCLEANFILES+=		ec2ami
47282618Sgjb
48282618Sgjb.if !exists(/usr/local/bin/bsdec2-image-upload)
49282618SgjbCW_EC2_PORTINSTALL=	cw-ec2-portinstall
50282618SgjbCLEANFILES+=		${CW_EC2_PORTINSTALL}
51282618Sgjb.else
52282618SgjbCW_EC2_PORTINSTALL=
53282618Sgjb.endif
54282618Sgjb
55282263Sgjbcw-ec2-portinstall:
56282263Sgjb.if exists(${PORTSDIR}/net/bsdec2-image-upload/Makefile)
57282263Sgjb	make -C ${PORTSDIR}/net/bsdec2-image-upload BATCH=1 all install clean
58282263Sgjb.else
59282263Sgjb. if !exists(/usr/local/sbin/pkg-static)
60282263Sgjb	env ASSUME_ALWAYS_YES=yes pkg bootstrap -y
61282263Sgjb. endif
62282263Sgjb	env ASSUME_ALWAYS_YES=yes pkg install -y net/bsdec2-image-upload
63280928Scperciva.endif
64282618Sgjb	@touch ${.TARGET}
65282263Sgjb
66282618Sgjbec2ami: cw-ec2 ${CW_EC2_PORTINSTALL}
67280928Scperciva.if !defined(AWSKEYFILE) || !exists(${AWSKEYFILE})
68280928Scperciva	@echo "--------------------------------------------------------------"
69280928Scperciva	@echo ">>> AWSKEYFILE must point at AWS keys for EC2 AMI creation"
70280928Scperciva	@echo "--------------------------------------------------------------"
71280928Scperciva	@false
72280928Scperciva.endif
73280928Scperciva.if !defined(AWSREGION)
74280928Scperciva	@echo "--------------------------------------------------------------"
75280928Scperciva	@echo ">>> AWSREGION must be specified EC2 AMI creation"
76280928Scperciva	@echo "--------------------------------------------------------------"
77280928Scperciva	@false
78280928Scperciva.endif
79280928Scperciva.if !defined(AWSBUCKET)
80280928Scperciva	@echo "--------------------------------------------------------------"
81280928Scperciva	@echo ">>> AWSBUCKET must be specified for EC2 AMI creation"
82280928Scperciva	@echo "--------------------------------------------------------------"
83280928Scperciva	@false
84280928Scperciva.endif
85338323Scperciva	/usr/local/bin/bsdec2-image-upload ${PUBLISH} ${PUBLICSNAP} \
86284005Sgjb	    ${.OBJDIR}/ec2.raw \
87284005Sgjb	    "${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX}" \
88338323Scperciva	    "${TYPE}/${TARGET} ${EC2_SVNBRANCH}@${EC2_SVNREV}" \
89338323Scperciva	    ${AWSREGION} ${AWSBUCKET} ${AWSKEYFILE} \
90338323Scperciva	    ${EC2SNSTOPIC} ${EC2SNSREL} ${EC2SNSVERS}
91282618Sgjb	@touch ${.TARGET}
92