xref: /freebsd/release/Makefile.mirrors (revision 8df8b2d3e51d1b816201d8a1fe8bc29fe192e562)
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# $FreeBSD$
13#
14
15.include "${.CURDIR}/Makefile"
16
17RELEASEDIR?=		/R
18FTPDIR?=		${RELEASEDIR}/ftp-stage
19.if exists(${RELEASEDIR})
20STAGE_TARGETS?=		iso-images-stage
21.endif
22
23.if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD))
24. if ${TARGET:Marm*} != "" || ${EMBEDDED_TARGET:Marm*} != ""
25EMBEDDED=		1
26. endif
27.endif
28
29# snapshot
30.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != ""
31SNAPSHOT=		1
32TLD?=			${FTPDIR}/snapshots
33. if !defined(SVNREVISION) || empty(SVNREVISION)
34.  for _D in /usr/bin /usr/local/bin
35.   for _S in svnversion svnliteversion
36.    if exists(${_D}/${_S})
37SVNVERSION?=		${_D}/${_S}
38.    endif
39.   endfor
40.  endfor
41.  if exists(${SVNVERSION}) && !empty(SVNVERSION)
42SVNREVISION!=		${SVNVERSION} ${WORLDDIR}/Makefile
43.  endif
44. endif # !defined(SVNREVISION)
45. if !defined(BUILDDATE) || empty(BUILDDATE)
46.  if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh)
47BUILDDATE!=		cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d
48.  else
49BUILDDATE!=		date +%Y%m%d
50.  endif
51. endif
52_SNAP_SUFFIX:=		${BUILDDATE}-r${SVNREVISION}
53.else
54# release
55SNAPSHOT=
56TLD?=			${FTPDIR}/releases
57.endif
58
59.if defined(EMBEDDED) && !empty(EMBEDDED)
60. if ${TARGET:Marm*} != "" && (${TARGET_ARCH:Marm*} != "" || ${TARGET_ARCH} == "aarch64")
61.  if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != ""
62SNAPSHOT=		1
63.  endif
64IMAGES:=		img
65. endif # arm/armv6
66.endif # embedded
67
68.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
69STAGE_TARGETS+=		vm-images-stage
70VM_DIR=			${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
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	cd ${TLD}/${TARGET} && \
189		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
190			${REVISION}-${BRANCH}
191.endif
192
193vm-images-stage:
194	mkdir -p ${VM_DIR}
195.if defined(SNAPSHOT) && !empty(SNAPSHOT)
196. if exists(${VM_DIR}/Latest)
197	rm -rf ${VM_DIR}/Latest
198. endif
199	mkdir -p ${VM_DIR}/Latest
200	mkdir -p ${VM_DIR}/${BUILDDATE}
201. for VMFORMAT in ${VMFORMATS}
202	cd ${RELEASEDIR}/vmimages && \
203		mv ${OSRELEASE}.${VMFORMAT}.xz \
204		${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
205	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
206		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
207	cd ${VM_DIR}/Latest && \
208		ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
209		${OSRELEASE}.${VMFORMAT}.xz
210. endfor
211	cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.*
212. for CHECKSUM in ${CHECKSUM_FILES}
213	cd ${RELEASEDIR}/vmimages && \
214		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
215	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
216		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
217	cd ${VM_DIR}/Latest && \
218		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
219		CHECKSUM.${CHECKSUM}
220. endfor
221.else # not snapshot
222. if exists(${VM_DIR}/Latest)
223	rm -rf ${VM_DIR}/Latest
224. endif
225	mkdir -p ${VM_DIR}/Latest
226. for VMFORMAT in ${VMFORMATS}
227	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \
228		${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz
229. endfor
230. for CHECKSUM in ${CHECKSUM_FILES}
231	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \
232		${VM_DIR}/Latest/CHECKSUM.${CHECKSUM}
233. endfor
234.endif
235
236ftp-stage:	remove-old-bits ${STAGE_TARGETS}
237
238