2 # This Makefile helps create the directory structure on ftp-master,
3 # making staging builds a bit more sane.
5 # You probably do not want to use this. Really.
6 # You have been warned.
10 # Don't use this unless you know why you're using it.
15 .include "${.CURDIR}/Makefile"
18 FTPDIR?= ${RELEASEDIR}/ftp-stage
19 .if exists(${RELEASEDIR})
20 STAGE_TARGETS?= iso-images-stage
23 .if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD))
24 . if ${TARGET:Marm*} != "" || ${EMBEDDED_TARGET:Marm*} != ""
30 .if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != ""
32 TLD?= ${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})
37 SVNVERSION?= ${_D}/${_S}
41 . if exists(${SVNVERSION}) && !empty(SVNVERSION)
42 SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile
44 . endif # !defined(SVNREVISION)
45 . if !defined(BUILDDATE) || empty(BUILDDATE)
46 . if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh)
47 BUILDDATE!= cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d
49 BUILDDATE!= date +%Y%m%d
52 _SNAP_SUFFIX:= ${BUILDDATE}-r${SVNREVISION}
56 TLD?= ${FTPDIR}/releases
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*} != ""
68 .if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
69 STAGE_TARGETS+= vm-images-stage
70 VM_DIR= ${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
73 CLEANFILES+= ${STAGE_TARGETS}
74 CHECKSUM_FILES?= SHA512 SHA256
75 SNAP_SUFFIX!= echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
76 ISO_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
77 FTP_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
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)
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} && \
96 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
97 . endif # not embedded
98 . if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
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} && \
106 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
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} && \
116 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
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} && \
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} && \
136 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
138 . endfor # checksum files
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} && \
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} && \
154 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}
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} && \
161 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz
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} && \
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} && \
181 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
183 . endfor # checksum files
185 .if exists(${RELEASEDIR}/ftp)
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}
195 .if defined(SNAPSHOT) && !empty(SNAPSHOT)
196 . if exists(${VM_DIR}/Latest)
197 rm -rf ${VM_DIR}/Latest
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
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} \
222 . if exists(${VM_DIR}/Latest)
223 rm -rf ${VM_DIR}/Latest
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
230 . for CHECKSUM in ${CHECKSUM_FILES}
231 cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \
232 ${VM_DIR}/Latest/CHECKSUM.${CHECKSUM}
236 ftp-stage: remove-old-bits ${STAGE_TARGETS}