xref: /freebsd/release/Makefile.mirrors (revision d511e97c54d3b143368ff3896b4ab51040ca8994)
1#
2# This Makefile helps create the directory structure on ftp-master,
3# making staging builds a bit more sane.
4#
5# You probably do not want to use this.  Really.
6# You have been warned.
7#
8# Seriously.
9#
10# Don't use this unless you know why you're using it.
11#
12#
13
14.include "${.CURDIR}/Makefile"
15
16RELEASEDIR?=		/R
17FTPDIR?=		${RELEASEDIR}/ftp-stage
18.if exists(${RELEASEDIR})
19STAGE_TARGETS?=		iso-images-stage
20.endif
21
22.if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD))
23. if ${TARGET:Marm*} != "" || ${EMBEDDED_TARGET:Marm*} != "" || ${TARGET:Mriscv*} != ""
24EMBEDDED=		1
25. endif
26.endif
27
28# snapshot
29.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != ""
30SNAPSHOT=		1
31TLD?=			${FTPDIR}/snapshots
32.if !defined(BUILDDATE) || empty(BUILDDATE)
33BUILDDATE!=		date +%Y%m%d
34.endif
35_SNAP_SUFFIX:=		${BUILDDATE}-${GITREV}-${GITCOUNT}
36.else
37# release
38SNAPSHOT=
39TLD?=			${FTPDIR}/releases
40.endif
41
42.if defined(EMBEDDED) && !empty(EMBEDDED)
43. if ${TARGET:Marm*} != "" && (${TARGET_ARCH:Marm*} != "" || ${TARGET_ARCH} == "aarch64") || ${TARGET:Mriscv*} != ""
44.  if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != ""
45SNAPSHOT=		1
46.  endif
47IMAGES:=		img
48. endif # arm/armv6
49.endif # embedded
50
51.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
52STAGE_TARGETS+=		vm-images-stage
53VM_DIR=			${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
54.endif
55
56.if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE)
57STAGE_TARGETS+=		ci-images-stage
58CI_DIR=			${TLD}/CI-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
59.endif
60
61CLEANFILES+=		${STAGE_TARGETS}
62CHECKSUM_FILES?=	SHA512 SHA256
63SNAP_SUFFIX!=		echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
64ISO_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
65FTP_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
66
67remove-old-bits:
68	rm -rf ${FTPDIR}
69
70iso-images-stage:
71	mkdir -p ${ISO_DIR}
72	mkdir -p ${TLD}/ISO-IMAGES/${REVISION}
73.if defined(SNAPSHOT) && !empty(SNAPSHOT)
74	cd ${RELEASEDIR} && rm -f CHECKSUM.*
75. for IMAGE in ${IMAGES}
76.  if defined(EMBEDDED) && !empty(EMBEDDED)
77	cd ${RELEASEDIR} && \
78		mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
79		${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
80	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \
81		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
82	cd ${TLD}/ISO-IMAGES/${REVISION} && \
83		ln -s \
84		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
85.  endif # not embedded
86.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
87	cd ${RELEASEDIR} && \
88		mv ${OSRELEASE}-${IMAGE} \
89		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
90	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \
91		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
92	cd ${TLD}/ISO-IMAGES/${REVISION} && \
93		ln -s \
94		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
95.   endif
96.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
97	cd ${RELEASEDIR} && \
98		mv ${OSRELEASE}-${IMAGE}.xz \
99		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
100	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \
101		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
102	cd ${TLD}/ISO-IMAGES/${REVISION} && \
103		ln -s \
104		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
105.   endif
106. endfor # images loop
107	cd ${RELEASEDIR} && rm -f CHECKSUM.*
108. for CHECKSUM in ${CHECKSUM_FILES}
109.  if defined(EMBEDDED) && !empty(EMBEDDED)
110	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
111		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
112	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \
113		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
114	cd ${TLD}/ISO-IMAGES/${REVISION} && \
115		ln -s \
116		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
117.  else # not embedded
118	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
119		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
120	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \
121		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
122	cd ${TLD}/ISO-IMAGES/${REVISION} && \
123		ln -s \
124		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
125.  endif #
126. endfor # checksum files
127.else # not snapshot
128. for IMAGE in ${IMAGES}
129.  if defined(EMBEDDED) && !empty(EMBEDDED)
130	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
131		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
132	cd ${TLD}/ISO-IMAGES/${REVISION} && \
133		ln -s \
134		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
135.  endif # not embedded
136.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
137	cd ${RELEASEDIR} && \
138	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \
139		${ISO_DIR}/${OSRELEASE}-${IMAGE}
140	cd ${TLD}/ISO-IMAGES/${REVISION} && \
141		ln -s \
142		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}
143.   endif
144.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
145	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \
146		${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz
147	cd ${TLD}/ISO-IMAGES/${REVISION} && \
148		ln -s \
149		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz
150.   endif
151. endfor # images loop
152	cd ${RELEASEDIR} && rm -f CHECKSUM.*
153. for CHECKSUM in ${CHECKSUM_FILES}
154.  if defined(EMBEDDED) && !empty(EMBEDDED)
155	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
156		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
157	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \
158		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
159	cd ${TLD}/ISO-IMAGES/${REVISION} && \
160		ln -s \
161		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
162.  else # not embedded
163	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
164		CHECKSUM.${CHECKSUM}-${OSRELEASE}
165	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \
166		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
167	cd ${TLD}/ISO-IMAGES/${REVISION} && \
168		ln -s \
169		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
170.  endif
171. endfor # checksum files
172.endif # release
173.if exists(${RELEASEDIR}/ftp)
174	mkdir -p ${FTP_DIR}
175	cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
176	echo ${BUILDDATE} > ${FTP_DIR}/BUILDDATE
177	echo ${GITBRANCH} > ${FTP_DIR}/GITBRANCH
178	echo ${GITREV} > ${FTP_DIR}/REVISION
179	cd ${TLD}/${TARGET} && \
180		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
181			${REVISION}-${BRANCH}
182.endif
183
184vm-images-stage:
185	mkdir -p ${VM_DIR}
186.if defined(SNAPSHOT) && !empty(SNAPSHOT)
187. if exists(${VM_DIR}/Latest)
188	rm -rf ${VM_DIR}/Latest
189. endif
190	mkdir -p ${VM_DIR}/Latest
191	mkdir -p ${VM_DIR}/${BUILDDATE}
192. for VMFORMAT in ${VMFORMATS}
193	cd ${RELEASEDIR}/vmimages && \
194		mv ${OSRELEASE}.${VMFORMAT}.xz \
195		${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
196	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
197		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
198	cd ${VM_DIR}/Latest && \
199		ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
200		${OSRELEASE}.${VMFORMAT}.xz
201.  for FS in ${VMFSLIST}
202	cd ${RELEASEDIR}/vmimages && \
203		mv ${OSRELEASE}-${FS}.${VMFORMAT}.xz \
204		${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz
205	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
206		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz
207	cd ${VM_DIR}/Latest && \
208		ln -s ../${BUILDDATE}/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
209		${OSRELEASE}-${FS}.${VMFORMAT}.xz
210.  endfor
211. endfor
212. for CW in ${CLOUDWARE}
213.  if ${CW} == BASIC-CLOUDINIT
214.   for VMFORMAT in ${${CW}_FORMAT}
215.    for FS in ${${CW}_FSLIST}
216	cd ${RELEASEDIR}/vmimages && \
217		mv ${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz \
218		${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz
219	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \
220		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz
221	cd ${VM_DIR}/Latest && \
222		ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \
223		${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz
224.    endfor
225.   endfor
226.  endif
227. endfor
228	cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.*
229. for CHECKSUM in ${CHECKSUM_FILES}
230	cd ${RELEASEDIR}/vmimages && \
231		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
232	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
233		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
234	cd ${VM_DIR}/Latest && \
235		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
236		CHECKSUM.${CHECKSUM}
237. endfor
238.else # not snapshot
239. if exists(${VM_DIR}/Latest)
240	rm -rf ${VM_DIR}/Latest
241. endif
242	mkdir -p ${VM_DIR}/Latest
243. for VMFORMAT in ${VMFORMATS}
244	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \
245		${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz
246.  for FS in ${VMFSLIST}
247	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}.${VMFORMAT}.xz \
248		${VM_DIR}/Latest/${OSRELEASE}-${FS}.${VMFORMAT}.xz
249.  endfor
250. endfor
251. for CW in ${CLOUDWARE}
252.  if ${CW} == BASIC-CLOUDINIT
253.   for VMFORMAT in ${${CW}_FORMAT}
254.    for FS in ${${CW}_FSLIST}
255	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz \
256		${VM_DIR}/Latest/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz
257.    endfor
258.   endfor
259.  endif
260. endfor
261. for CHECKSUM in ${CHECKSUM_FILES}
262	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \
263		${VM_DIR}/Latest/CHECKSUM.${CHECKSUM}
264. endfor
265.endif
266
267ci-images-stage:
268	mkdir -p ${CI_DIR}
269.if defined(SNAPSHOT) && !empty(SNAPSHOT)
270. if exists(${CI_DIR}/Latest)
271	rm -rf ${CI_DIR}/Latest
272. endif
273	mkdir -p ${CI_DIR}/Latest
274	mkdir -p ${CI_DIR}/${BUILDDATE}
275. for CW in ${CLOUDWARE}
276.  if ${CW} == BASIC-CI
277.   for VMFORMAT in ${${CW}_FORMAT}
278.    for FS in ${${CW}_FSLIST}
279	cd ${RELEASEDIR}/ciimages && \
280		mv ${OSRELEASE}-${CW}-${FS}.${VMFORMAT}.xz \
281		${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz
282	cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \
283		${CI_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz
284	cd ${CI_DIR}/Latest && \
285		ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \
286		${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz
287.    endfor
288	cd ${RELEASEDIR}/ciimages && \
289		mv ${OSRELEASE}-${CW}.${VMFORMAT}.xz \
290		${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz
291	cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
292		${CI_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz
293	cd ${CI_DIR}/Latest && \
294		ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
295		${OSRELEASE}-${CW}.${VMFORMAT}.xz
296.   endfor
297.  endif
298. endfor
299	cd ${RELEASEDIR}/ciimages && rm -f CHECKSUM.*
300. for CHECKSUM in ${CHECKSUM_FILES}
301	cd ${RELEASEDIR}/ciimages && \
302		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
303	cp -p ${RELEASEDIR}/ciimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
304		${CI_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
305	cd ${CI_DIR}/Latest && \
306		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
307		CHECKSUM.${CHECKSUM}
308. endfor
309.else # not snapshot
310. if exists(${CI_DIR}/Latest)
311	rm -rf ${CI_DIR}/Latest
312. endif
313	mkdir -p ${CI_DIR}/Latest
314. for CW in ${CLOUDWARE}
315.  if ${CW} == BASIC-CI
316.   for VMFORMAT in ${${CW}_FORMAT}
317.    for FS in ${${CW}_FSLIST}
318	cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${FS}.${VMFORMAT}.xz \
319		${CI_DIR}/Latest/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz
320.    endfor
321	cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}.${VMFORMAT}.xz \
322		${CI_DIR}/Latest/${OSRELEASE}-${CW}.${VMFORMAT}.xz
323.   endfor
324.  endif
325. endfor
326. for CHECKSUM in ${CHECKSUM_FILES}
327	cp -p ${RELEASEDIR}/ciimages/CHECKSUM.${CHECKSUM} \
328		${CI_DIR}/Latest/CHECKSUM.${CHECKSUM}
329. endfor
330.endif
331
332ftp-stage:	remove-old-bits ${STAGE_TARGETS}
333
334