Makefile.mirrors revision 283545
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: stable/10/release/Makefile.mirrors 283545 2015-05-25 22:12:30Z gjb $
13#
14
15.include "${.CURDIR}/Makefile"
16
17RELEASEDIR?=		/R
18FTPDIR?=		${RELEASEDIR}/ftp-stage
19STAGE_TARGETS?=		iso-images-stage
20
21.if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD))
22. if ${TARGET} == "arm" || ${EMBEDDED_TARGET} == "arm"
23EMBEDDED=		1
24. endif
25.endif
26
27# snapshot
28.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT"
29SNAPSHOT=		1
30TLD?=			${FTPDIR}/snapshots
31. for _D in /usr/bin /usr/local/bin
32.  for _S in svnversion svnliteversion
33.   if exists(${_D}/${_S})
34SVNVERSION?=		${_D}/${_S}
35.   endif
36.  endfor
37. endfor
38. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh)
39BUILDDATE!=		cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d
40. else
41BUILDDATE!=		date +%Y%m%d
42. endif
43. if exists(${SVNVERSION}) && !empty(SVNVERSION)
44SVNREVISION!=		${SVNVERSION} ${WORLDDIR}/Makefile
45_SNAP_SUFFIX:=		-r${SVNREVISION}-${BUILDDATE}
46. else
47_SNAP_SUFFIX:=		-${BUILDDATE}
48. endif
49.else
50# release
51SNAPSHOT=
52TLD?=			${FTPDIR}/releases
53.endif
54
55.if defined(EMBEDDED) && !empty(EMBEDDED)
56. if ${TARGET} == "arm" && ${TARGET_ARCH} == "armv6"
57.  if !defined(BOARDNAME) && empty(BOARDNAME)
58BOARDNAME:=		${KERNCONF}
59.  else
60OLDNAME:=		${KERNCONF}
61.  endif
62.  if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT"
63SNAPSHOT=		1
64.  endif
65IMAGES:=		img
66. endif # arm/armv6
67.endif # embedded
68
69.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
70STAGE_TARGETS+=		vm-images-stage
71VM_DIR=			${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
72.endif
73
74CLEANFILES+=		${STAGE_TARGETS}
75CHECKSUM_FILES?=	SHA256 MD5
76SNAP_SUFFIX!=		echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
77ISO_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
78FTP_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
79
80remove-old-bits:
81	rm -rf ${FTPDIR}
82
83iso-images-stage:
84	mkdir -p ${ISO_DIR}
85	mkdir -p ${TLD}/ISO-IMAGES/${REVISION}
86.if exists(${RELEASEDIR})
87	@# Assume we have images to copy.
88. if defined(SNAPSHOT) && !empty(SNAPSHOT)
89	cd ${RELEASEDIR} && rm -f CHECKSUM.*
90.  for IMAGE in ${IMAGES}
91.   if defined(EMBEDDED) && !empty(EMBEDDED)
92.    if defined(OLDNAME) && !empty(OLDNAME)
93	@# arm/armv6 IMX6 -> WANDBOARD, for example.
94	cd ${RELEASEDIR} && \
95		mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \
96		${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
97.    endif
98	cd ${RELEASEDIR} && \
99		mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
100		${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
101	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \
102		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
103	cd ${TLD}/ISO-IMAGES/${REVISION} && \
104		ln -s \
105		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
106.   endif # not embedded
107.    if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
108	cd ${RELEASEDIR} && \
109		mv ${OSRELEASE}-${IMAGE} \
110		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} || true
111	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \
112		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
113	cd ${TLD}/ISO-IMAGES/${REVISION} && \
114		ln -s \
115		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
116.    endif
117.    if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
118	cd ${RELEASEDIR} && \
119		mv ${OSRELEASE}-${IMAGE}.xz \
120		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz || true
121	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \
122		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
123	cd ${TLD}/ISO-IMAGES/${REVISION} && \
124		ln -s \
125		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
126.    endif
127.  endfor # images loop
128	cd ${RELEASEDIR} && rm -f CHECKSUM.*
129.  for CHECKSUM in ${CHECKSUM_FILES}
130.   if defined(EMBEDDED) && !empty(EMBEDDED)
131	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
132		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
133	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \
134		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
135	cd ${TLD}/ISO-IMAGES/${REVISION} && \
136		ln -s \
137		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
138.   else # not embedded
139	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
140		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
141	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \
142		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
143	cd ${TLD}/ISO-IMAGES/${REVISION} && \
144		ln -s \
145		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
146.   endif #
147.  endfor # checksum files
148. else # not snapshot
149.  for IMAGE in ${IMAGES}
150.   if defined(EMBEDDED) && !empty(EMBEDDED)
151.    if defined(OLDNAME) && !empty(OLDNAME)
152	@# arm/armv6 IMX6 -> WANDBOARD, for example.
153	cd ${RELEASEDIR} && \
154		mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \
155		${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
156.    endif
157	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
158		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
159	cd ${TLD}/ISO-IMAGES/${REVISION} && \
160		ln -s \
161		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
162.   endif # not embedded
163.    if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
164	cd ${RELEASEDIR} && \
165	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \
166		${ISO_DIR}/${OSRELEASE}-${IMAGE}
167	cd ${TLD}/ISO-IMAGES/${REVISION} && \
168		ln -s \
169		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}
170.    endif
171.    if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
172	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \
173		${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz
174	cd ${TLD}/ISO-IMAGES/${REVISION} && \
175		ln -s \
176		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz
177.    endif
178.  endfor # images loop
179	cd ${RELEASEDIR} && rm -f CHECKSUM.*
180.  for CHECKSUM in ${CHECKSUM_FILES}
181.   if defined(EMBEDDED) && !empty(EMBEDDED)
182	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
183		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
184	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \
185		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
186	cd ${TLD}/ISO-IMAGES/${REVISION} && \
187		ln -s \
188		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
189.   else # not embedded
190	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
191		CHECKSUM.${CHECKSUM}-${OSRELEASE}
192	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \
193		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
194	cd ${TLD}/ISO-IMAGES/${REVISION} && \
195		ln -s \
196		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
197.   endif
198.  endfor # checksum files
199. endif # release
200. if exists(${RELEASEDIR}/ftp)
201	mkdir -p ${FTP_DIR}
202	cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
203	cd ${TLD}/${TARGET} && \
204		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
205			${REVISION}-${BRANCH}
206. endif
207.endif # no RELEASEDIR
208
209vm-images-stage:
210	mkdir -p ${VM_DIR}
211.if defined(SNAPSHOT) && !empty(SNAPSHOT)
212. if exists(${VM_DIR}/Latest)
213	rm -rf ${VM_DIR}/Latest
214. endif
215	mkdir -p ${VM_DIR}/Latest
216	mkdir -p ${VM_DIR}/${BUILDDATE}
217. for VMFORMAT in ${VMFORMATS}
218	cd ${RELEASEDIR}/vmimages && \
219		mv ${OSRELEASE}.${VMFORMAT}.xz \
220		${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
221	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
222		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
223	cd ${VM_DIR}/Latest && \
224		ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
225		${OSRELEASE}.${VMFORMAT}.xz
226. endfor
227	cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.*
228. for CHECKSUM in ${CHECKSUM_FILES}
229	cd ${RELEASEDIR}/vmimages && \
230		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
231	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
232		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
233	cd ${VM_DIR}/Latest && \
234		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
235		CHECKSUM.${CHECKSUM}
236. endfor
237.else # not snapshot
238. if exists(${VM_DIR}/Latest)
239	rm -rf ${VM_DIR}/Latest
240. endif
241	mkdir -p ${VM_DIR}/Latest
242. for VMFORMAT in ${VMFORMATS}
243	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \
244		${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz
245. endfor
246. for CHECKSUM in ${CHECKSUM_FILES}
247	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \
248		${VM_DIR}/Latest/CHECKSUM.${CHECKSUM}
249. endfor
250.endif
251
252ftp-stage:	remove-old-bits ${STAGE_TARGETS}
253
254