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
56CLEANFILES+=		${STAGE_TARGETS}
57CHECKSUM_FILES?=	SHA512 SHA256
58SNAP_SUFFIX!=		echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
59ISO_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
60FTP_DIR=		${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
61
62remove-old-bits:
63	rm -rf ${FTPDIR}
64
65iso-images-stage:
66	mkdir -p ${ISO_DIR}
67	mkdir -p ${TLD}/ISO-IMAGES/${REVISION}
68.if defined(SNAPSHOT) && !empty(SNAPSHOT)
69	cd ${RELEASEDIR} && rm -f CHECKSUM.*
70. for IMAGE in ${IMAGES}
71.  if defined(EMBEDDED) && !empty(EMBEDDED)
72	cd ${RELEASEDIR} && \
73		mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
74		${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
75	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \
76		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
77	cd ${TLD}/ISO-IMAGES/${REVISION} && \
78		ln -s \
79		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
80.  endif # not embedded
81.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
82	cd ${RELEASEDIR} && \
83		mv ${OSRELEASE}-${IMAGE} \
84		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
85	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \
86		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
87	cd ${TLD}/ISO-IMAGES/${REVISION} && \
88		ln -s \
89		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
90.   endif
91.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
92	cd ${RELEASEDIR} && \
93		mv ${OSRELEASE}-${IMAGE}.xz \
94		${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
95	cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \
96		${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
97	cd ${TLD}/ISO-IMAGES/${REVISION} && \
98		ln -s \
99		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
100.   endif
101. endfor # images loop
102	cd ${RELEASEDIR} && rm -f CHECKSUM.*
103. for CHECKSUM in ${CHECKSUM_FILES}
104.  if defined(EMBEDDED) && !empty(EMBEDDED)
105	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
106		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
107	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \
108		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
109	cd ${TLD}/ISO-IMAGES/${REVISION} && \
110		ln -s \
111		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
112.  else # not embedded
113	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
114		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
115	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \
116		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
117	cd ${TLD}/ISO-IMAGES/${REVISION} && \
118		ln -s \
119		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
120.  endif #
121. endfor # checksum files
122.else # not snapshot
123. for IMAGE in ${IMAGES}
124.  if defined(EMBEDDED) && !empty(EMBEDDED)
125	cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
126		${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
127	cd ${TLD}/ISO-IMAGES/${REVISION} && \
128		ln -s \
129		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
130.  endif # not embedded
131.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
132	cd ${RELEASEDIR} && \
133	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \
134		${ISO_DIR}/${OSRELEASE}-${IMAGE}
135	cd ${TLD}/ISO-IMAGES/${REVISION} && \
136		ln -s \
137		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}
138.   endif
139.   if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
140	cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \
141		${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz
142	cd ${TLD}/ISO-IMAGES/${REVISION} && \
143		ln -s \
144		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz
145.   endif
146. endfor # images loop
147	cd ${RELEASEDIR} && rm -f CHECKSUM.*
148. for CHECKSUM in ${CHECKSUM_FILES}
149.  if defined(EMBEDDED) && !empty(EMBEDDED)
150	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
151		CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
152	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \
153		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
154	cd ${TLD}/ISO-IMAGES/${REVISION} && \
155		ln -s \
156		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
157.  else # not embedded
158	cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
159		CHECKSUM.${CHECKSUM}-${OSRELEASE}
160	cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \
161		${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
162	cd ${TLD}/ISO-IMAGES/${REVISION} && \
163		ln -s \
164		../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
165.  endif
166. endfor # checksum files
167.endif # release
168.if exists(${RELEASEDIR}/ftp)
169	mkdir -p ${FTP_DIR}
170	cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
171	echo ${BUILDDATE} > ${FTP_DIR}/BUILDDATE
172	echo ${GITBRANCH} > ${FTP_DIR}/GITBRANCH
173	echo ${GITREV} > ${FTP_DIR}/REVISION
174	cd ${TLD}/${TARGET} && \
175		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
176			${REVISION}-${BRANCH}
177.endif
178
179vm-images-stage:
180	mkdir -p ${VM_DIR}
181.if defined(SNAPSHOT) && !empty(SNAPSHOT)
182. if exists(${VM_DIR}/Latest)
183	rm -rf ${VM_DIR}/Latest
184. endif
185	mkdir -p ${VM_DIR}/Latest
186	mkdir -p ${VM_DIR}/${BUILDDATE}
187. for VMFORMAT in ${VMFORMATS}
188	cd ${RELEASEDIR}/vmimages && \
189		mv ${OSRELEASE}.${VMFORMAT}.xz \
190		${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
191	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
192		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
193	cd ${VM_DIR}/Latest && \
194		ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
195		${OSRELEASE}.${VMFORMAT}.xz
196.  for FS in ${VMFSLIST}
197	cd ${RELEASEDIR}/vmimages && \
198		mv ${OSRELEASE}-${FS}.${VMFORMAT}.xz \
199		${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz
200	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
201		${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz
202	cd ${VM_DIR}/Latest && \
203		ln -s ../${BUILDDATE}/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
204		${OSRELEASE}-${FS}.${VMFORMAT}.xz
205.  endfor
206. endfor
207	cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.*
208. for CHECKSUM in ${CHECKSUM_FILES}
209	cd ${RELEASEDIR}/vmimages && \
210		${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
211	cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
212		${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
213	cd ${VM_DIR}/Latest && \
214		ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
215		CHECKSUM.${CHECKSUM}
216. endfor
217.else # not snapshot
218. if exists(${VM_DIR}/Latest)
219	rm -rf ${VM_DIR}/Latest
220. endif
221	mkdir -p ${VM_DIR}/Latest
222. for VMFORMAT in ${VMFORMATS}
223	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \
224		${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz
225.  for FS in ${VMFSLIST}
226	cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}.${VMFORMAT}.xz \
227		${VM_DIR}/Latest/${OSRELEASE}-${FS}.${VMFORMAT}.xz
228.  endfor
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