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: stable/11/release/Makefile.mirrors 349518 2019-06-28 20:28:20Z gjb $
13282785Sgjb#
14282785Sgjb
15282785Sgjb.include "${.CURDIR}/Makefile"
16282785Sgjb
17282787SgjbRELEASEDIR?=		/R
18282799SgjbFTPDIR?=		${RELEASEDIR}/ftp-stage
19283574Sgjb.if exists(${RELEASEDIR})
20282785SgjbSTAGE_TARGETS?=		iso-images-stage
21283574Sgjb.endif
22349518SgjbSRCBRANCH!=		${SVN_CMD} info --show-item relative-url ${WORLDDIR}
23282785Sgjb
24283298Sgjb.if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD))
25325898Sgjb. if ${TARGET:Marm*} != "" || ${EMBEDDED_TARGET:Marm*} != ""
26283271SgjbEMBEDDED=		1
27283272Sgjb. endif
28283271Sgjb.endif
29283271Sgjb
30282785Sgjb# snapshot
31300814Sgjb.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != ""
32282785SgjbSNAPSHOT=		1
33282785SgjbTLD?=			${FTPDIR}/snapshots
34283580Sgjb. if !defined(SVNREVISION) || empty(SVNREVISION)
35283580Sgjb.  for _D in /usr/bin /usr/local/bin
36283580Sgjb.   for _S in svnversion svnliteversion
37283580Sgjb.    if exists(${_D}/${_S})
38282785SgjbSVNVERSION?=		${_D}/${_S}
39283580Sgjb.    endif
40283580Sgjb.   endfor
41282785Sgjb.  endfor
42283580Sgjb.  if exists(${SVNVERSION}) && !empty(SVNVERSION)
43283580SgjbSVNREVISION!=		${SVNVERSION} ${WORLDDIR}/Makefile
44283580Sgjb.  endif
45283593Sgjb. endif # !defined(SVNREVISION)
46283580Sgjb. if !defined(BUILDDATE) || empty(BUILDDATE)
47283580Sgjb.  if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh)
48283271SgjbBUILDDATE!=		cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d
49283580Sgjb.  else
50283271SgjbBUILDDATE!=		date +%Y%m%d
51283580Sgjb.  endif
52283271Sgjb. endif
53283618Sgjb_SNAP_SUFFIX:=		${BUILDDATE}-r${SVNREVISION}
54282785Sgjb.else
55282785Sgjb# release
56282785SgjbSNAPSHOT=
57282785SgjbTLD?=			${FTPDIR}/releases
58282785Sgjb.endif
59282785Sgjb
60283271Sgjb.if defined(EMBEDDED) && !empty(EMBEDDED)
61325898Sgjb. if ${TARGET:Marm*} != "" && (${TARGET_ARCH:Marm*} != "" || ${TARGET_ARCH} == "aarch64")
62283271Sgjb.  if !defined(BOARDNAME) && empty(BOARDNAME)
63283271SgjbBOARDNAME:=		${KERNCONF}
64283271Sgjb.  else
65283271SgjbOLDNAME:=		${KERNCONF}
66283271Sgjb.  endif
67300814Sgjb.  if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != ""
68283271SgjbSNAPSHOT=		1
69283271Sgjb.  endif
70283298SgjbIMAGES:=		img
71283271Sgjb. endif # arm/armv6
72283271Sgjb.endif # embedded
73283271Sgjb
74282785Sgjb.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
75282785SgjbSTAGE_TARGETS+=		vm-images-stage
76282785SgjbVM_DIR=			${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
77282785Sgjb.endif
78282785Sgjb
79282785SgjbCLEANFILES+=		${STAGE_TARGETS}
80289337SgjbCHECKSUM_FILES?=	SHA512 SHA256
81282785SgjbSNAP_SUFFIX!=		echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
82282785SgjbISO_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
83282785SgjbFTP_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
84282785Sgjb
85282789Sgjbremove-old-bits:
86282789Sgjb	rm -rf ${FTPDIR}
87282789Sgjb
88282785Sgjbiso-images-stage:
89282785Sgjb	mkdir -p ${ISO_DIR}
90282785Sgjb	mkdir -p ${TLD}/ISO-IMAGES/${REVISION}
91283576Sgjb.if defined(SNAPSHOT) && !empty(SNAPSHOT)
92283298Sgjb	cd ${RELEASEDIR} && rm -f CHECKSUM.*
93283576Sgjb. for IMAGE in ${IMAGES}
94283576Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
95283576Sgjb.   if defined(OLDNAME) && !empty(OLDNAME)
96283271Sgjb	@# arm/armv6 IMX6 -> WANDBOARD, for example.
97283298Sgjb	cd ${RELEASEDIR} && \
98283298Sgjb		mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \
99283298Sgjb		${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
100283576Sgjb.   endif
101283298Sgjb	cd ${RELEASEDIR} && \
102283298Sgjb		mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
103283298Sgjb		${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
104283298Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \
105283298Sgjb		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
106283298Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
107283298Sgjb		ln -s \
108283298Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
109283576Sgjb.  endif # not embedded
110283576Sgjb.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
111283298Sgjb	cd ${RELEASEDIR} && \
112283298Sgjb		mv ${OSRELEASE}-${IMAGE} \
113283573Sgjb		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
114283298Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \
115283298Sgjb		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
116282785Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
117282785Sgjb		ln -s \
118283298Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
119283576Sgjb.   endif
120283576Sgjb.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
121283298Sgjb	cd ${RELEASEDIR} && \
122283298Sgjb		mv ${OSRELEASE}-${IMAGE}.xz \
123283573Sgjb		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
124283298Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \
125283298Sgjb		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
126283265Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
127283265Sgjb		ln -s \
128283298Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
129283576Sgjb.   endif
130283576Sgjb. endfor # images loop
131283298Sgjb	cd ${RELEASEDIR} && rm -f CHECKSUM.*
132283576Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
133283576Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
134283298Sgjb	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
135283271Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
136283298Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \
137283298Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
138283271Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
139283271Sgjb		ln -s \
140283271Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
141283576Sgjb.  else # not embedded
142283298Sgjb	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
143283265Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
144283298Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \
145283298Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
146282796Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
147282794Sgjb		ln -s \
148283265Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
149283576Sgjb.  endif #
150283576Sgjb. endfor # checksum files
151283576Sgjb.else # not snapshot
152283576Sgjb. for IMAGE in ${IMAGES}
153283576Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
154283576Sgjb.   if defined(OLDNAME) && !empty(OLDNAME)
155283298Sgjb	@# arm/armv6 IMX6 -> WANDBOARD, for example.
156283298Sgjb	cd ${RELEASEDIR} && \
157283298Sgjb		mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \
158283298Sgjb		${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
159283576Sgjb.   endif
160283298Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
161283298Sgjb		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
162283298Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
163283298Sgjb		ln -s \
164283298Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
165283576Sgjb.  endif # not embedded
166283576Sgjb.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
167283298Sgjb	cd ${RELEASEDIR} && \
168283298Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \
169283298Sgjb		${ISO_DIR}/${OSRELEASE}-${IMAGE}
170283298Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
171283298Sgjb		ln -s \
172283298Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}
173283576Sgjb.   endif
174283576Sgjb.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
175283298Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \
176283298Sgjb		${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz
177283298Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
178283298Sgjb		ln -s \
179283298Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz
180283576Sgjb.   endif
181283576Sgjb. endfor # images loop
182283298Sgjb	cd ${RELEASEDIR} && rm -f CHECKSUM.*
183283576Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
184283576Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
185283298Sgjb	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
186283298Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
187283298Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \
188283298Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
189283298Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
190283298Sgjb		ln -s \
191283298Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
192283576Sgjb.  else # not embedded
193283298Sgjb	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
194283266Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}
195283298Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \
196283298Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
197283298Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
198283298Sgjb		ln -s \
199283298Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
200283576Sgjb.  endif
201283576Sgjb. endfor # checksum files
202283576Sgjb.endif # release
203283576Sgjb.if exists(${RELEASEDIR}/ftp)
204282785Sgjb	mkdir -p ${FTP_DIR}
205283298Sgjb	cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
206349518Sgjb	echo ${BUILDDATE} > ${FTP_DIR}/BUILDDATE
207349518Sgjb	echo ${SRCBRANCH} > ${FTP_DIR}/SRCBRANCH
208349518Sgjb	echo r${SVNREVISION} > ${FTP_DIR}/REVISION
209282785Sgjb	cd ${TLD}/${TARGET} && \
210282785Sgjb		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
211282785Sgjb			${REVISION}-${BRANCH}
212283576Sgjb.endif
213282785Sgjb
214282785Sgjbvm-images-stage:
215283302Sgjb	mkdir -p ${VM_DIR}
216283302Sgjb.if defined(SNAPSHOT) && !empty(SNAPSHOT)
217283302Sgjb. if exists(${VM_DIR}/Latest)
218283302Sgjb	rm -rf ${VM_DIR}/Latest
219283302Sgjb. endif
220283302Sgjb	mkdir -p ${VM_DIR}/Latest
221283302Sgjb	mkdir -p ${VM_DIR}/${BUILDDATE}
222283302Sgjb. for VMFORMAT in ${VMFORMATS}
223283302Sgjb	cd ${RELEASEDIR}/vmimages && \
224283302Sgjb		mv ${OSRELEASE}.${VMFORMAT}.xz \
225283302Sgjb		${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
226283302Sgjb	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
227283302Sgjb		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
228283302Sgjb	cd ${VM_DIR}/Latest && \
229283302Sgjb		ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
230283302Sgjb		${OSRELEASE}.${VMFORMAT}.xz
231283302Sgjb. endfor
232283302Sgjb	cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.*
233283302Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
234283302Sgjb	cd ${RELEASEDIR}/vmimages && \
235283302Sgjb		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
236283302Sgjb	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
237283302Sgjb		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
238283302Sgjb	cd ${VM_DIR}/Latest && \
239283302Sgjb		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
240283302Sgjb		CHECKSUM.${CHECKSUM}
241283302Sgjb. endfor
242283302Sgjb.else # not snapshot
243283302Sgjb. if exists(${VM_DIR}/Latest)
244283302Sgjb	rm -rf ${VM_DIR}/Latest
245283302Sgjb. endif
246283302Sgjb	mkdir -p ${VM_DIR}/Latest
247283302Sgjb. for VMFORMAT in ${VMFORMATS}
248283302Sgjb	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \
249283302Sgjb		${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz
250283302Sgjb. endfor
251283302Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
252283302Sgjb	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \
253283302Sgjb		${VM_DIR}/Latest/CHECKSUM.${CHECKSUM}
254283302Sgjb. endfor
255283302Sgjb.endif
256282785Sgjb
257282789Sgjbftp-stage:	remove-old-bits ${STAGE_TARGETS}
258282785Sgjb
259