Makefile.mirrors revision 283271
1282785Sgjb#
2282785Sgjb# This Makefile helps create the directory structure on ftp-master,
3282785Sgjb# making staging builds a bit more sane.
4282785Sgjb#
5282785Sgjb# You probably do not want to use this.  Really.
6282785Sgjb# You have been warned.
7282785Sgjb#
8282798Sgjb# Seriously.
9282798Sgjb#
10282798Sgjb# Don't use this unless you know why you're using it.
11282798Sgjb#
12282785Sgjb# $FreeBSD: head/release/Makefile.mirrors 283271 2015-05-21 22:11:57Z gjb $
13282785Sgjb#
14282785Sgjb
15282785Sgjb.include "${.CURDIR}/Makefile"
16282785Sgjb
17282787SgjbRELEASEDIR?=		/R
18282799SgjbFTPDIR?=		${RELEASEDIR}/ftp-stage
19282785SgjbSTAGE_TARGETS?=		iso-images-stage
20282785Sgjb
21283271Sgjb.if ${TARGET} == "arm" || ${EMBEDDED_TARGET} == "arm"
22283271SgjbEMBEDDED=		1
23283271Sgjb.endif
24283271Sgjb
25282785Sgjb# snapshot
26282785Sgjb.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT"
27282785SgjbSNAPSHOT=		1
28282785SgjbTLD?=			${FTPDIR}/snapshots
29282785Sgjb. for _D in /usr/bin /usr/local/bin
30282785Sgjb.  for _S in svnversion svnliteversion
31282785Sgjb.   if exists(${_D}/${_S})
32282785SgjbSVNVERSION?=		${_D}/${_S}
33282785Sgjb.   endif
34282785Sgjb.  endfor
35282785Sgjb. endfor
36283271Sgjb. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh)
37283271SgjbBUILDDATE!=		cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d
38283271Sgjb. else
39283271SgjbBUILDDATE!=		date +%Y%m%d
40283271Sgjb. endif
41282785Sgjb. if exists(${SVNVERSION}) && !empty(SVNVERSION)
42282785SgjbSVNREVISION!=		${SVNVERSION} ${WORLDDIR}/Makefile
43283271Sgjb_SNAP_SUFFIX:=		-r${SVNREVISION}-${BUILDDATE}
44283271Sgjb. else
45283271Sgjb_SNAP_SUFFIX:=		-${BUILDDATE}
46282785Sgjb. endif
47282785Sgjb.else
48282785Sgjb# release
49282785SgjbSNAPSHOT=
50282785SgjbTLD?=			${FTPDIR}/releases
51282785Sgjb.endif
52282785Sgjb
53283271Sgjb.if defined(EMBEDDED) && !empty(EMBEDDED)
54283271Sgjb. if ${TARGET} == "arm" && ${TARGET_ARCH} == "armv6"
55283271Sgjb.  if !defined(BOARDNAME) && empty(BOARDNAME)
56283271SgjbBOARDNAME:=		${KERNCONF}
57283271Sgjb.  else
58283271SgjbOLDNAME:=		${KERNCONF}
59283271Sgjb.  endif
60283271Sgjb.  if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT"
61283271SgjbSNAPSHOT=		1
62283271Sgjb.  endif
63283271SgjbIMAGES:=		${BOARDNAME}.img
64283271Sgjb. endif # arm/armv6
65283271Sgjb.endif # embedded
66283271Sgjb
67282785Sgjb.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
68282785SgjbSTAGE_TARGETS+=		vm-images-stage
69282785SgjbVM_DIR=			${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
70282785Sgjb.endif
71282785Sgjb
72282785SgjbCLEANFILES+=		${STAGE_TARGETS}
73282785SgjbCHECKSUM_FILES?=	SHA256 MD5
74282785SgjbSNAP_SUFFIX!=		echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
75282785SgjbISO_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
76282785SgjbFTP_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
77282785Sgjb
78282789Sgjbremove-old-bits:
79282789Sgjb	rm -rf ${FTPDIR}
80282789Sgjb
81282785Sgjbiso-images-stage:
82282785Sgjb	mkdir -p ${ISO_DIR}
83282785Sgjb	mkdir -p ${TLD}/ISO-IMAGES/${REVISION}
84282787Sgjb.if exists(${RELEASEDIR})
85282787Sgjb	@# Assume we have images to copy.
86282787Sgjb. for IMAGE in ${IMAGES}
87283271Sgjb	@# arm/armv6 IMX6 -> WANDBOARD, for example.
88283271Sgjb.  if defined(OLDNAME) && !empty(OLDNAME)
89283271Sgjb	cd ${RELEASEDIR} && mv ${OSRELEASE}-${IMAGE:S,${BOARDNAME},${OLDNAME},}.xz \
90283271Sgjb		${OSRELEASE}-${IMAGE}.xz
91283271Sgjb.  endif
92283271Sgjb.  if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
93282787Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \
94282787Sgjb		${ISO_DIR}/${OSRELEASE}-${IMAGE}
95283271Sgjb.  endif
96283271Sgjb.  if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
97282792Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \
98282787Sgjb		${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz
99283271Sgjb.  endif
100282793Sgjb.  if exists(${RELEASEDIR}/CHECKSUM.${CHECKSUM})
101282793Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM} \
102282793Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}
103282793Sgjb.  endif
104282791Sgjb. endfor
105282787Sgjb.endif
106282787Sgjb
107282785Sgjb.if defined(SNAPSHOT) && !empty(SNAPSHOT)
108282785Sgjb. for IMAGE in ${IMAGES}
109282785Sgjb	cd ${ISO_DIR} && mv ${OSRELEASE}-${IMAGE} \
110283271Sgjb		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} || true
111283265Sgjb	cd ${ISO_DIR} && mv ${OSRELEASE}-${IMAGE}.xz \
112283271Sgjb		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz || true
113282785Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
114282785Sgjb		ln -s \
115283271Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} || true
116283265Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
117283265Sgjb		ln -s \
118283271Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz || true
119283271Sgjb	cd ${TLD} && find -L . -type l | xargs rm
120282785Sgjb. endfor
121282785Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
122282785Sgjb.  if exists(${ISO_DIR}/CHECKSUM.${CHECKSUM})
123282785Sgjb	rm -f ${ISO_DIR}/CHECKSUM.${CHECKSUM}
124282785Sgjb.  endif
125283271Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
126282785Sgjb	cd ${ISO_DIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
127283271Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
128283271Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
129283271Sgjb		ln -s \
130283271Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
131283271Sgjb.  else
132283271Sgjb	cd ${ISO_DIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
133283265Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
134282796Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
135282794Sgjb		ln -s \
136283265Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
137283271Sgjb.  endif
138282785Sgjb. endfor
139282785Sgjb.else	# !snapshot
140282785Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && ln -s \
141283271Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE} || true
142283266Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && ln -s \
143283271Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz || true
144282785Sgjb	cd ${ISO_DIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
145283266Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}
146282785Sgjb.endif
147282787Sgjb.if exists(${RELEASEDIR}/ftp)
148282785Sgjb	mkdir -p ${FTP_DIR}
149282787Sgjb	cp ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
150282785Sgjb	cd ${TLD}/${TARGET} && \
151282785Sgjb		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
152282785Sgjb			${REVISION}-${BRANCH}
153282785Sgjb.endif
154282785Sgjb
155282785Sgjbvm-images-stage:
156282785Sgjb	@true
157282785Sgjb#	mkdir -p ${VM_DIR}
158282785Sgjb#.if defined(SNAPSHOT) && !empty(SNAPSHOT)
159282785Sgjb#	mkdir -p ${VM_DIR}/${BUILDDATE}
160282785Sgjb#. if exists(${VM_DIR}/Latest)
161282785Sgjb#	unlink ${VM_DIR}/Latest
162282785Sgjb#	cd ${VM_DIR} && ln -s ${BUILDDATE} Latest
163282785Sgjb#. endif
164282785Sgjb#. for VMIMAGE in ${VMIMAGES}
165282785Sgjb#	cd /R/vmimages && cp -p ${VMIMAGE}.xz \
166282785Sgjb#		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}-${VMIMAGE}.xz
167282785Sgjb#	cd ${VM_DIR}/Latest && ln -s \
168282785Sgjb#		../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}-${VMIMAGE}.xz \
169282785Sgjb#		${OSRELEASE}-${VMIMAGE}.xz
170282785Sgjb#. endfor
171282785Sgjb#. for CHECKSUM in ${CHECKSUM_FILES}
172282785Sgjb#.  if exists(${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM})
173282785Sgjb#	rm -f ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}
174282785Sgjb#.  endif
175282785Sgjb#	cd ${VM_DIR}/${BUILDDATE} && ${CHECKSUM:tl} ${OSRELEASE}* > \
176282785Sgjb#		CHECKSUM.${CHECKSUM}-${REVISION}-${BRANCH}-${SNAP_SUFFIX}
177282785Sgjb#	cd ${VM_DIR}/Latest && ln -s \
178282785Sgjb#		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
179282785Sgjb#		CHECKSUM.${CHECKSUM}
180282785Sgjb#. endfor
181282785Sgjb#.else	# !snapshot
182282785Sgjb#. for CHECKSUM in ${CHECKSUM_FILES}
183282785Sgjb#	cd /R/vmimages && cp -p CHECKSUM.${CHECKSUM}* \
184282785Sgjb#		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
185282785Sgjb#.endif
186282785Sgjb
187282789Sgjbftp-stage:	remove-old-bits ${STAGE_TARGETS}
188282785Sgjb
189