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