xref: /freebsd-14.2/release/Makefile.mirrors (revision 2594b767)
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
61.if defined(WITH_OCIIMAGES) && !empty(WITH_OCIIMAGES)
62STAGE_TARGETS+=		oci-images-stage
63OCI_DIR=		${TLD}/OCI-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
64.endif
65
66CLEANFILES+=		${STAGE_TARGETS}
67CHECKSUM_FILES?=	SHA512 SHA256
68SNAP_SUFFIX!=		echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
69ISO_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
70FTP_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
71
72remove-old-bits:
73	rm -rf ${FTPDIR}
74
75iso-images-stage:
76	mkdir -p ${ISO_DIR}
77	mkdir -p ${TLD}/ISO-IMAGES/${REVISION}
78.if defined(SNAPSHOT) && !empty(SNAPSHOT)
79	cd ${RELEASEDIR} && rm -f CHECKSUM.*
80. for IMAGE in ${IMAGES}
81.  if defined(EMBEDDED) && !empty(EMBEDDED)
82	cd ${RELEASEDIR} && \
83		mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
84		${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
85	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \
86		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
87	cd ${TLD}/ISO-IMAGES/${REVISION} && \
88		ln -s \
89		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
90.  endif # not embedded
91.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
92	cd ${RELEASEDIR} && \
93		mv ${OSRELEASE}-${IMAGE} \
94		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
95	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \
96		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
97	cd ${TLD}/ISO-IMAGES/${REVISION} && \
98		ln -s \
99		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
100.   endif
101.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
102	cd ${RELEASEDIR} && \
103		mv ${OSRELEASE}-${IMAGE}.xz \
104		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
105	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \
106		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
107	cd ${TLD}/ISO-IMAGES/${REVISION} && \
108		ln -s \
109		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
110.   endif
111. endfor # images loop
112	cd ${RELEASEDIR} && rm -f CHECKSUM.*
113. for CHECKSUM in ${CHECKSUM_FILES}
114.  if defined(EMBEDDED) && !empty(EMBEDDED)
115	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
116		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
117	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \
118		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
119	cd ${TLD}/ISO-IMAGES/${REVISION} && \
120		ln -s \
121		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
122.  else # not embedded
123	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
124		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
125	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \
126		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
127	cd ${TLD}/ISO-IMAGES/${REVISION} && \
128		ln -s \
129		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
130.  endif #
131. endfor # checksum files
132.else # not snapshot
133. for IMAGE in ${IMAGES}
134.  if defined(EMBEDDED) && !empty(EMBEDDED)
135	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
136		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
137	cd ${TLD}/ISO-IMAGES/${REVISION} && \
138		ln -s \
139		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
140.  endif # not embedded
141.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
142	cd ${RELEASEDIR} && \
143	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \
144		${ISO_DIR}/${OSRELEASE}-${IMAGE}
145	cd ${TLD}/ISO-IMAGES/${REVISION} && \
146		ln -s \
147		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}
148.   endif
149.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
150	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \
151		${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz
152	cd ${TLD}/ISO-IMAGES/${REVISION} && \
153		ln -s \
154		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz
155.   endif
156. endfor # images loop
157	cd ${RELEASEDIR} && rm -f CHECKSUM.*
158. for CHECKSUM in ${CHECKSUM_FILES}
159.  if defined(EMBEDDED) && !empty(EMBEDDED)
160	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
161		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
162	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \
163		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
164	cd ${TLD}/ISO-IMAGES/${REVISION} && \
165		ln -s \
166		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
167.  else # not embedded
168	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
169		CHECKSUM.${CHECKSUM}-${OSRELEASE}
170	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \
171		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
172	cd ${TLD}/ISO-IMAGES/${REVISION} && \
173		ln -s \
174		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
175.  endif
176. endfor # checksum files
177.endif # release
178.if exists(${RELEASEDIR}/ftp)
179	mkdir -p ${FTP_DIR}
180	cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
181	echo ${BUILDDATE} > ${FTP_DIR}/BUILDDATE
182	echo ${GITBRANCH} > ${FTP_DIR}/GITBRANCH
183	echo ${GITREV} > ${FTP_DIR}/REVISION
184	cd ${TLD}/${TARGET} && \
185		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
186			${REVISION}-${BRANCH}
187.endif
188
189vm-images-stage:
190	mkdir -p ${VM_DIR}
191.if defined(SNAPSHOT) && !empty(SNAPSHOT)
192. if exists(${VM_DIR}/Latest)
193	rm -rf ${VM_DIR}/Latest
194. endif
195	mkdir -p ${VM_DIR}/Latest
196	mkdir -p ${VM_DIR}/${BUILDDATE}
197. for VMFORMAT in ${VMFORMATS}
198	cd ${RELEASEDIR}/vmimages && \
199		mv ${OSRELEASE}.${VMFORMAT}.xz \
200		${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
201	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
202		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
203	cd ${VM_DIR}/Latest && \
204		ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
205		${OSRELEASE}.${VMFORMAT}.xz
206.  for FS in ${VMFSLIST}
207	cd ${RELEASEDIR}/vmimages && \
208		mv ${OSRELEASE}-${FS}.${VMFORMAT}.xz \
209		${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz
210	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
211		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz
212	cd ${VM_DIR}/Latest && \
213		ln -s ../${BUILDDATE}/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
214		${OSRELEASE}-${FS}.${VMFORMAT}.xz
215.  endfor
216. endfor
217. if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE)
218.  for CW in ${CLOUDWARE}
219.   if ${CW} == BASIC-CLOUDINIT
220.    for VMFORMAT in ${${CW}_FORMAT}
221.     for FS in ${${CW}_FSLIST}
222	cd ${RELEASEDIR}/vmimages && \
223		mv ${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz \
224		${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz
225	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \
226		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz
227	cd ${VM_DIR}/Latest && \
228		ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \
229		${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz
230.     endfor
231.    endfor
232.   endif
233.  endfor
234. endif
235	cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.*
236. for CHECKSUM in ${CHECKSUM_FILES}
237	cd ${RELEASEDIR}/vmimages && \
238		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
239	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
240		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
241	cd ${VM_DIR}/Latest && \
242		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
243		CHECKSUM.${CHECKSUM}
244. endfor
245.else # not snapshot
246. if exists(${VM_DIR}/Latest)
247	rm -rf ${VM_DIR}/Latest
248. endif
249	mkdir -p ${VM_DIR}/Latest
250. for VMFORMAT in ${VMFORMATS}
251	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \
252		${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz
253.  for FS in ${VMFSLIST}
254	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}.${VMFORMAT}.xz \
255		${VM_DIR}/Latest/${OSRELEASE}-${FS}.${VMFORMAT}.xz
256.  endfor
257. endfor
258. if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE)
259.  for CW in ${CLOUDWARE}
260.   if ${CW} == BASIC-CLOUDINIT
261.    for VMFORMAT in ${${CW}_FORMAT}
262.     for FS in ${${CW}_FSLIST}
263	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz \
264		${VM_DIR}/Latest/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz
265.     endfor
266.    endfor
267.   endif
268.  endfor
269. endif
270. for CHECKSUM in ${CHECKSUM_FILES}
271	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \
272		${VM_DIR}/Latest/CHECKSUM.${CHECKSUM}
273. endfor
274.endif
275
276ci-images-stage:
277	mkdir -p ${CI_DIR}
278.if defined(SNAPSHOT) && !empty(SNAPSHOT)
279. if exists(${CI_DIR}/Latest)
280	rm -rf ${CI_DIR}/Latest
281. endif
282	mkdir -p ${CI_DIR}/Latest
283	mkdir -p ${CI_DIR}/${BUILDDATE}
284. for CW in ${CLOUDWARE}
285.  if ${CW} == BASIC-CI
286.   for VMFORMAT in ${${CW}_FORMAT}
287.    for FS in ${${CW}_FSLIST}
288	cd ${RELEASEDIR}/ciimages && \
289		mv ${OSRELEASE}-${CW}-${FS}.${VMFORMAT}.xz \
290		${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz
291	cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \
292		${CI_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz
293	cd ${CI_DIR}/Latest && \
294		ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \
295		${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz
296.    endfor
297	cd ${RELEASEDIR}/ciimages && \
298		mv ${OSRELEASE}-${CW}.${VMFORMAT}.xz \
299		${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz
300	cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
301		${CI_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz
302	cd ${CI_DIR}/Latest && \
303		ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
304		${OSRELEASE}-${CW}.${VMFORMAT}.xz
305.   endfor
306.  endif
307. endfor
308	cd ${RELEASEDIR}/ciimages && rm -f CHECKSUM.*
309. for CHECKSUM in ${CHECKSUM_FILES}
310	cd ${RELEASEDIR}/ciimages && \
311		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
312	cp -p ${RELEASEDIR}/ciimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
313		${CI_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
314	cd ${CI_DIR}/Latest && \
315		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
316		CHECKSUM.${CHECKSUM}
317. endfor
318.else # not snapshot
319. if exists(${CI_DIR}/Latest)
320	rm -rf ${CI_DIR}/Latest
321. endif
322	mkdir -p ${CI_DIR}/Latest
323. for CW in ${CLOUDWARE}
324.  if ${CW} == BASIC-CI
325.   for VMFORMAT in ${${CW}_FORMAT}
326.    for FS in ${${CW}_FSLIST}
327	cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${FS}.${VMFORMAT}.xz \
328		${CI_DIR}/Latest/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz
329.    endfor
330	cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}.${VMFORMAT}.xz \
331		${CI_DIR}/Latest/${OSRELEASE}-${CW}.${VMFORMAT}.xz
332.   endfor
333.  endif
334. endfor
335. for CHECKSUM in ${CHECKSUM_FILES}
336	cp -p ${RELEASEDIR}/ciimages/CHECKSUM.${CHECKSUM} \
337		${CI_DIR}/Latest/CHECKSUM.${CHECKSUM}
338. endfor
339.endif
340
341oci-images-stage:
342	mkdir -p ${OCI_DIR}
343.if defined(SNAPSHOT) && !empty(SNAPSHOT)
344. if exists(${OCI_DIR}/Latest)
345	rm -rf ${OCI_DIR}/Latest
346. endif
347	mkdir -p ${OCI_DIR}/Latest
348	mkdir -p ${OCI_DIR}/${BUILDDATE}
349. for _IMG in ${OCI_IMAGES}
350	cd ${RELEASEDIR}/ociimages && \
351		mv container-image-${_IMG}.txz \
352		${OSRELEASE}-container-image-${SNAP_SUFFIX}-${_IMG}.txz
353	cp ${RELEASEDIR}/ociimages/${OSRELEASE}-container-image-${SNAP_SUFFIX}-${_IMG}.txz \
354		${OCI_DIR}/${BUILDDATE}/${OSRELEASE}-container-image-${SNAP_SUFFIX}-${_IMG}.txz
355	cd ${OCI_DIR}/Latest && \
356		ln -s ../${BUILDDATE}/${OSRELEASE}-container-image-${SNAP_SUFFIX}-${_IMG}.txz \
357		${OSRELEASE}-container-image-${_IMG}.txz
358. endfor
359	cd ${RELEASEDIR}/ociimages && rm -f CHECKSUM.*
360. for CHECKSUM in ${CHECKSUM_FILES}
361	cd ${RELEASEDIR}/ociimages && \
362		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
363	cp -p ${RELEASEDIR}/ociimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
364		${OCI_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
365	cd ${OCI_DIR}/Latest && \
366		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
367		CHECKSUM.${CHECKSUM}
368. endfor
369.else # not snapshot
370. if exists(${OCI_DIR}/Latest)
371	rm -rf ${OCI_DIR}/Latest
372. endif
373	mkdir -p ${OCI_DIR}/Latest
374. for _IMG in ${OCI_IMAGES}
375	cd ${RELEASEDIR}/ociimages && \
376		mv container-image-${_IMG}.txz \
377		${OSRELEASE}-container-image-${_IMG}.txz
378	cp ${RELEASEDIR}/ociimages/${OSRELEASE}-container-image-${_IMG}.txz \
379		${OCI_DIR}/Latest/${OSRELEASE}-container-image-${_IMG}.txz
380. endfor
381. for CHECKSUM in ${CHECKSUM_FILES}
382	cd ${RELEASEDIR}/ociimages && \
383		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
384	cp -p ${RELEASEDIR}/ociimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
385		${OCI_DIR}/Latest/CHECKSUM.${CHECKSUM}
386. endfor
387.endif
388
389ftp-stage:	remove-old-bits ${STAGE_TARGETS}
390
391