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#
8283545Sgjb# Seriously.
9283545Sgjb#
10283545Sgjb# Don't use this unless you know why you're using it.
11283545Sgjb#
12282785Sgjb# $FreeBSD: stable/10/release/Makefile.mirrors 325899 2017-11-16 16:00:01Z gjb $
13282785Sgjb#
14282785Sgjb
15282785Sgjb.include "${.CURDIR}/Makefile"
16282785Sgjb
17283545SgjbRELEASEDIR?=		/R
18283545SgjbFTPDIR?=		${RELEASEDIR}/ftp-stage
19283672Sgjb.if exists(${RELEASEDIR})
20282785SgjbSTAGE_TARGETS?=		iso-images-stage
21283672Sgjb.endif
22282785Sgjb
23283545Sgjb.if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD))
24325899Sgjb. if ${TARGET:Marm*} != "" || ${EMBEDDED_TARGET:Marm*} != ""
25283545SgjbEMBEDDED=		1
26283545Sgjb. endif
27283545Sgjb.endif
28283545Sgjb
29282785Sgjb# snapshot
30284813Sgjb.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
31282785SgjbSNAPSHOT=		1
32282785SgjbTLD?=			${FTPDIR}/snapshots
33283672Sgjb. if !defined(SVNREVISION) || empty(SVNREVISION)
34283672Sgjb.  for _D in /usr/bin /usr/local/bin
35283672Sgjb.   for _S in svnversion svnliteversion
36283672Sgjb.    if exists(${_D}/${_S})
37282785SgjbSVNVERSION?=		${_D}/${_S}
38283672Sgjb.    endif
39283672Sgjb.   endfor
40282785Sgjb.  endfor
41283672Sgjb.  if exists(${SVNVERSION}) && !empty(SVNVERSION)
42283672SgjbSVNREVISION!=		${SVNVERSION} ${WORLDDIR}/Makefile
43283672Sgjb.  endif
44283672Sgjb. endif # !defined(SVNREVISION)
45283672Sgjb. if !defined(BUILDDATE) || empty(BUILDDATE)
46283672Sgjb.  if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh)
47283545SgjbBUILDDATE!=		cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d
48283672Sgjb.  else
49283545SgjbBUILDDATE!=		date +%Y%m%d
50283672Sgjb.  endif
51283545Sgjb. endif
52283672Sgjb_SNAP_SUFFIX:=		${BUILDDATE}-r${SVNREVISION}
53282785Sgjb.else
54282785Sgjb# release
55282785SgjbSNAPSHOT=
56282785SgjbTLD?=			${FTPDIR}/releases
57282785Sgjb.endif
58282785Sgjb
59283545Sgjb.if defined(EMBEDDED) && !empty(EMBEDDED)
60325899Sgjb. if ${TARGET:Marm*} != "" && ${TARGET_ARCH:Marm*} != ""
61283545Sgjb.  if !defined(BOARDNAME) && empty(BOARDNAME)
62283545SgjbBOARDNAME:=		${KERNCONF}
63283545Sgjb.  else
64283545SgjbOLDNAME:=		${KERNCONF}
65283545Sgjb.  endif
66284813Sgjb.  if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
67283545SgjbSNAPSHOT=		1
68283545Sgjb.  endif
69283545SgjbIMAGES:=		img
70283545Sgjb. endif # arm/armv6
71283545Sgjb.endif # embedded
72283545Sgjb
73282785Sgjb.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
74282785SgjbSTAGE_TARGETS+=		vm-images-stage
75282785SgjbVM_DIR=			${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
76282785Sgjb.endif
77282785Sgjb
78282785SgjbCLEANFILES+=		${STAGE_TARGETS}
79289555SgjbCHECKSUM_FILES?=	SHA512 SHA256
80282785SgjbSNAP_SUFFIX!=		echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
81282785SgjbISO_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
82282785SgjbFTP_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
83282785Sgjb
84283545Sgjbremove-old-bits:
85283545Sgjb	rm -rf ${FTPDIR}
86283545Sgjb
87282785Sgjbiso-images-stage:
88282785Sgjb	mkdir -p ${ISO_DIR}
89282785Sgjb	mkdir -p ${TLD}/ISO-IMAGES/${REVISION}
90283672Sgjb.if defined(SNAPSHOT) && !empty(SNAPSHOT)
91283545Sgjb	cd ${RELEASEDIR} && rm -f CHECKSUM.*
92283672Sgjb. for IMAGE in ${IMAGES}
93283672Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
94283672Sgjb.   if defined(OLDNAME) && !empty(OLDNAME)
95283545Sgjb	@# arm/armv6 IMX6 -> WANDBOARD, for example.
96283545Sgjb	cd ${RELEASEDIR} && \
97283545Sgjb		mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \
98283545Sgjb		${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
99283672Sgjb.   endif
100283545Sgjb	cd ${RELEASEDIR} && \
101283545Sgjb		mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
102283545Sgjb		${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
103283545Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \
104283545Sgjb		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
105282785Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
106282785Sgjb		ln -s \
107283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
108283672Sgjb.  endif # not embedded
109283672Sgjb.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
110283545Sgjb	cd ${RELEASEDIR} && \
111283545Sgjb		mv ${OSRELEASE}-${IMAGE} \
112283672Sgjb		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
113283545Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \
114283545Sgjb		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
115283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
116283545Sgjb		ln -s \
117283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
118283672Sgjb.   endif
119283672Sgjb.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
120283545Sgjb	cd ${RELEASEDIR} && \
121283545Sgjb		mv ${OSRELEASE}-${IMAGE}.xz \
122283672Sgjb		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
123283545Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \
124283545Sgjb		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
125283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
126283545Sgjb		ln -s \
127283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
128283672Sgjb.   endif
129283672Sgjb. endfor # images loop
130283545Sgjb	cd ${RELEASEDIR} && rm -f CHECKSUM.*
131283672Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
132283672Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
133283545Sgjb	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
134283545Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
135283545Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \
136283545Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
137283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
138283545Sgjb		ln -s \
139283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
140283672Sgjb.  else # not embedded
141283545Sgjb	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
142283545Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
143283545Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \
144283545Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
145283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
146283545Sgjb		ln -s \
147283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
148283672Sgjb.  endif #
149283672Sgjb. endfor # checksum files
150283672Sgjb.else # not snapshot
151283672Sgjb. for IMAGE in ${IMAGES}
152283672Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
153283672Sgjb.   if defined(OLDNAME) && !empty(OLDNAME)
154283545Sgjb	@# arm/armv6 IMX6 -> WANDBOARD, for example.
155283545Sgjb	cd ${RELEASEDIR} && \
156283545Sgjb		mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \
157283545Sgjb		${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
158283672Sgjb.   endif
159283545Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
160283545Sgjb		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
161283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
162283545Sgjb		ln -s \
163283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
164283672Sgjb.  endif # not embedded
165283672Sgjb.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
166283545Sgjb	cd ${RELEASEDIR} && \
167283545Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \
168283545Sgjb		${ISO_DIR}/${OSRELEASE}-${IMAGE}
169283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
170283545Sgjb		ln -s \
171283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}
172283672Sgjb.   endif
173283672Sgjb.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
174283545Sgjb	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \
175283545Sgjb		${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz
176283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
177283545Sgjb		ln -s \
178283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz
179283672Sgjb.   endif
180283672Sgjb. endfor # images loop
181283545Sgjb	cd ${RELEASEDIR} && rm -f CHECKSUM.*
182283672Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
183283672Sgjb.  if defined(EMBEDDED) && !empty(EMBEDDED)
184283545Sgjb	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
185283545Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
186283545Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \
187283545Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
188283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
189283545Sgjb		ln -s \
190283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
191283672Sgjb.  else # not embedded
192283545Sgjb	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
193283545Sgjb		CHECKSUM.${CHECKSUM}-${OSRELEASE}
194283545Sgjb	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \
195283545Sgjb		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
196283545Sgjb	cd ${TLD}/ISO-IMAGES/${REVISION} && \
197283545Sgjb		ln -s \
198283545Sgjb		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
199283672Sgjb.  endif
200283672Sgjb. endfor # checksum files
201283672Sgjb.endif # release
202283672Sgjb.if exists(${RELEASEDIR}/ftp)
203282785Sgjb	mkdir -p ${FTP_DIR}
204283545Sgjb	cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
205282785Sgjb	cd ${TLD}/${TARGET} && \
206282785Sgjb		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
207282785Sgjb			${REVISION}-${BRANCH}
208283672Sgjb.endif
209282785Sgjb
210282785Sgjbvm-images-stage:
211283545Sgjb	mkdir -p ${VM_DIR}
212283545Sgjb.if defined(SNAPSHOT) && !empty(SNAPSHOT)
213283545Sgjb. if exists(${VM_DIR}/Latest)
214283545Sgjb	rm -rf ${VM_DIR}/Latest
215283545Sgjb. endif
216283545Sgjb	mkdir -p ${VM_DIR}/Latest
217283545Sgjb	mkdir -p ${VM_DIR}/${BUILDDATE}
218283545Sgjb. for VMFORMAT in ${VMFORMATS}
219283545Sgjb	cd ${RELEASEDIR}/vmimages && \
220283545Sgjb		mv ${OSRELEASE}.${VMFORMAT}.xz \
221283545Sgjb		${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
222283545Sgjb	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
223283545Sgjb		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
224283545Sgjb	cd ${VM_DIR}/Latest && \
225283545Sgjb		ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
226283545Sgjb		${OSRELEASE}.${VMFORMAT}.xz
227283545Sgjb. endfor
228283545Sgjb	cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.*
229283545Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
230283545Sgjb	cd ${RELEASEDIR}/vmimages && \
231283545Sgjb		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
232283545Sgjb	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
233283545Sgjb		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
234283545Sgjb	cd ${VM_DIR}/Latest && \
235283545Sgjb		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
236283545Sgjb		CHECKSUM.${CHECKSUM}
237283545Sgjb. endfor
238283545Sgjb.else # not snapshot
239283545Sgjb. if exists(${VM_DIR}/Latest)
240283545Sgjb	rm -rf ${VM_DIR}/Latest
241283545Sgjb. endif
242283545Sgjb	mkdir -p ${VM_DIR}/Latest
243283545Sgjb. for VMFORMAT in ${VMFORMATS}
244283545Sgjb	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \
245283545Sgjb		${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz
246283545Sgjb. endfor
247283545Sgjb. for CHECKSUM in ${CHECKSUM_FILES}
248283545Sgjb	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \
249283545Sgjb		${VM_DIR}/Latest/CHECKSUM.${CHECKSUM}
250283545Sgjb. endfor
251283545Sgjb.endif
252282785Sgjb
253283545Sgjbftp-stage:	remove-old-bits ${STAGE_TARGETS}
254282785Sgjb
255