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