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 56.if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) 57STAGE_TARGETS+= ci-images-stage 58CI_DIR= ${TLD}/CI-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH} 59.endif 60 61CLEANFILES+= ${STAGE_TARGETS} 62CHECKSUM_FILES?= SHA512 SHA256 63SNAP_SUFFIX!= echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' ' 64ISO_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION} 65FTP_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH} 66 67remove-old-bits: 68 rm -rf ${FTPDIR} 69 70iso-images-stage: 71 mkdir -p ${ISO_DIR} 72 mkdir -p ${TLD}/ISO-IMAGES/${REVISION} 73.if defined(SNAPSHOT) && !empty(SNAPSHOT) 74 cd ${RELEASEDIR} && rm -f CHECKSUM.* 75. for IMAGE in ${IMAGES} 76. if defined(EMBEDDED) && !empty(EMBEDDED) 77 cd ${RELEASEDIR} && \ 78 mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ 79 ${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz 80 cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \ 81 ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz 82 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 83 ln -s \ 84 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz 85. endif # not embedded 86. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) 87 cd ${RELEASEDIR} && \ 88 mv ${OSRELEASE}-${IMAGE} \ 89 ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} 90 cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \ 91 ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} 92 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 93 ln -s \ 94 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} 95. endif 96. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) 97 cd ${RELEASEDIR} && \ 98 mv ${OSRELEASE}-${IMAGE}.xz \ 99 ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz 100 cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \ 101 ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz 102 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 103 ln -s \ 104 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz 105. endif 106. endfor # images loop 107 cd ${RELEASEDIR} && rm -f CHECKSUM.* 108. for CHECKSUM in ${CHECKSUM_FILES} 109. if defined(EMBEDDED) && !empty(EMBEDDED) 110 cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ 111 CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} 112 cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \ 113 ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} 114 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 115 ln -s \ 116 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} 117. else # not embedded 118 cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ 119 CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} 120 cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \ 121 ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} 122 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 123 ln -s \ 124 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} 125. endif # 126. endfor # checksum files 127.else # not snapshot 128. for IMAGE in ${IMAGES} 129. if defined(EMBEDDED) && !empty(EMBEDDED) 130 cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ 131 ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz 132 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 133 ln -s \ 134 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz 135. endif # not embedded 136. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) 137 cd ${RELEASEDIR} && \ 138 cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \ 139 ${ISO_DIR}/${OSRELEASE}-${IMAGE} 140 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 141 ln -s \ 142 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE} 143. endif 144. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) 145 cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \ 146 ${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz 147 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 148 ln -s \ 149 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz 150. endif 151. endfor # images loop 152 cd ${RELEASEDIR} && rm -f CHECKSUM.* 153. for CHECKSUM in ${CHECKSUM_FILES} 154. if defined(EMBEDDED) && !empty(EMBEDDED) 155 cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ 156 CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} 157 cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \ 158 ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} 159 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 160 ln -s \ 161 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} 162. else # not embedded 163 cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ 164 CHECKSUM.${CHECKSUM}-${OSRELEASE} 165 cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \ 166 ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} 167 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 168 ln -s \ 169 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE} 170. endif 171. endfor # checksum files 172.endif # release 173.if exists(${RELEASEDIR}/ftp) 174 mkdir -p ${FTP_DIR} 175 cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR} 176 echo ${BUILDDATE} > ${FTP_DIR}/BUILDDATE 177 echo ${GITBRANCH} > ${FTP_DIR}/GITBRANCH 178 echo ${GITREV} > ${FTP_DIR}/REVISION 179 cd ${TLD}/${TARGET} && \ 180 ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \ 181 ${REVISION}-${BRANCH} 182.endif 183 184vm-images-stage: 185 mkdir -p ${VM_DIR} 186.if defined(SNAPSHOT) && !empty(SNAPSHOT) 187. if exists(${VM_DIR}/Latest) 188 rm -rf ${VM_DIR}/Latest 189. endif 190 mkdir -p ${VM_DIR}/Latest 191 mkdir -p ${VM_DIR}/${BUILDDATE} 192. for VMFORMAT in ${VMFORMATS} 193 cd ${RELEASEDIR}/vmimages && \ 194 mv ${OSRELEASE}.${VMFORMAT}.xz \ 195 ${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz 196 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 197 ${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz 198 cd ${VM_DIR}/Latest && \ 199 ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 200 ${OSRELEASE}.${VMFORMAT}.xz 201. for FS in ${VMFSLIST} 202 cd ${RELEASEDIR}/vmimages && \ 203 mv ${OSRELEASE}-${FS}.${VMFORMAT}.xz \ 204 ${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz 205 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 206 ${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz 207 cd ${VM_DIR}/Latest && \ 208 ln -s ../${BUILDDATE}/${OSRELEASE}-${FS}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 209 ${OSRELEASE}-${FS}.${VMFORMAT}.xz 210. endfor 211. endfor 212. for CW in ${CLOUDWARE} 213. if ${CW} == BASIC-CLOUDINIT 214. for VMFORMAT in ${${CW}_FORMAT} 215. for FS in ${${CW}_FSLIST} 216 cd ${RELEASEDIR}/vmimages && \ 217 mv ${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz \ 218 ${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz 219 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \ 220 ${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz 221 cd ${VM_DIR}/Latest && \ 222 ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \ 223 ${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz 224. endfor 225. endfor 226. endif 227. endfor 228 cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.* 229. for CHECKSUM in ${CHECKSUM_FILES} 230 cd ${RELEASEDIR}/vmimages && \ 231 ${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 232 cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 233 ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 234 cd ${VM_DIR}/Latest && \ 235 ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 236 CHECKSUM.${CHECKSUM} 237. endfor 238.else # not snapshot 239. if exists(${VM_DIR}/Latest) 240 rm -rf ${VM_DIR}/Latest 241. endif 242 mkdir -p ${VM_DIR}/Latest 243. for VMFORMAT in ${VMFORMATS} 244 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \ 245 ${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz 246. for FS in ${VMFSLIST} 247 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}.${VMFORMAT}.xz \ 248 ${VM_DIR}/Latest/${OSRELEASE}-${FS}.${VMFORMAT}.xz 249. endfor 250. endfor 251. for CW in ${CLOUDWARE} 252. if ${CW} == BASIC-CLOUDINIT 253. for VMFORMAT in ${${CW}_FORMAT} 254. for FS in ${${CW}_FSLIST} 255 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz \ 256 ${VM_DIR}/Latest/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz 257. endfor 258. endfor 259. endif 260. endfor 261. for CHECKSUM in ${CHECKSUM_FILES} 262 cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \ 263 ${VM_DIR}/Latest/CHECKSUM.${CHECKSUM} 264. endfor 265.endif 266 267ci-images-stage: 268 mkdir -p ${CI_DIR} 269.if defined(SNAPSHOT) && !empty(SNAPSHOT) 270. if exists(${CI_DIR}/Latest) 271 rm -rf ${CI_DIR}/Latest 272. endif 273 mkdir -p ${CI_DIR}/Latest 274 mkdir -p ${CI_DIR}/${BUILDDATE} 275. for CW in ${CLOUDWARE} 276. if ${CW} == BASIC-CI 277. for VMFORMAT in ${${CW}_FORMAT} 278. for FS in ${${CW}_FSLIST} 279 cd ${RELEASEDIR}/ciimages && \ 280 mv ${OSRELEASE}-${CW}-${FS}.${VMFORMAT}.xz \ 281 ${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz 282 cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \ 283 ${CI_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz 284 cd ${CI_DIR}/Latest && \ 285 ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \ 286 ${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz 287. endfor 288 cd ${RELEASEDIR}/ciimages && \ 289 mv ${OSRELEASE}-${CW}.${VMFORMAT}.xz \ 290 ${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz 291 cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 292 ${CI_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz 293 cd ${CI_DIR}/Latest && \ 294 ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 295 ${OSRELEASE}-${CW}.${VMFORMAT}.xz 296. endfor 297. endif 298. endfor 299 cd ${RELEASEDIR}/ciimages && rm -f CHECKSUM.* 300. for CHECKSUM in ${CHECKSUM_FILES} 301 cd ${RELEASEDIR}/ciimages && \ 302 ${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 303 cp -p ${RELEASEDIR}/ciimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 304 ${CI_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 305 cd ${CI_DIR}/Latest && \ 306 ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 307 CHECKSUM.${CHECKSUM} 308. endfor 309.else # not snapshot 310. if exists(${CI_DIR}/Latest) 311 rm -rf ${CI_DIR}/Latest 312. endif 313 mkdir -p ${CI_DIR}/Latest 314. for CW in ${CLOUDWARE} 315. if ${CW} == BASIC-CI 316. for VMFORMAT in ${${CW}_FORMAT} 317. for FS in ${${CW}_FSLIST} 318 cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${FS}.${VMFORMAT}.xz \ 319 ${CI_DIR}/Latest/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz 320. endfor 321 cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}.${VMFORMAT}.xz \ 322 ${CI_DIR}/Latest/${OSRELEASE}-${CW}.${VMFORMAT}.xz 323. endfor 324. endif 325. endfor 326. for CHECKSUM in ${CHECKSUM_FILES} 327 cp -p ${RELEASEDIR}/ciimages/CHECKSUM.${CHECKSUM} \ 328 ${CI_DIR}/Latest/CHECKSUM.${CHECKSUM} 329. endfor 330.endif 331 332ftp-stage: remove-old-bits ${STAGE_TARGETS} 333 334