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. if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) 213. for CW in ${CLOUDWARE} 214. if ${CW} == BASIC-CLOUDINIT 215. for VMFORMAT in ${${CW}_FORMAT} 216. for FS in ${${CW}_FSLIST} 217 cd ${RELEASEDIR}/vmimages && \ 218 mv ${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz \ 219 ${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz 220 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \ 221 ${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz 222 cd ${VM_DIR}/Latest && \ 223 ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \ 224 ${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz 225. endfor 226. endfor 227. endif 228. endfor 229. endif 230 cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.* 231. for CHECKSUM in ${CHECKSUM_FILES} 232 cd ${RELEASEDIR}/vmimages && \ 233 ${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 234 cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 235 ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 236 cd ${VM_DIR}/Latest && \ 237 ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 238 CHECKSUM.${CHECKSUM} 239. endfor 240.else # not snapshot 241. if exists(${VM_DIR}/Latest) 242 rm -rf ${VM_DIR}/Latest 243. endif 244 mkdir -p ${VM_DIR}/Latest 245. for VMFORMAT in ${VMFORMATS} 246 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \ 247 ${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz 248. for FS in ${VMFSLIST} 249 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${FS}.${VMFORMAT}.xz \ 250 ${VM_DIR}/Latest/${OSRELEASE}-${FS}.${VMFORMAT}.xz 251. endfor 252. endfor 253. if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) 254. for CW in ${CLOUDWARE} 255. if ${CW} == BASIC-CLOUDINIT 256. for VMFORMAT in ${${CW}_FORMAT} 257. for FS in ${${CW}_FSLIST} 258 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz \ 259 ${VM_DIR}/Latest/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz 260. endfor 261. endfor 262. endif 263. endfor 264. endif 265. for CHECKSUM in ${CHECKSUM_FILES} 266 cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \ 267 ${VM_DIR}/Latest/CHECKSUM.${CHECKSUM} 268. endfor 269.endif 270 271ci-images-stage: 272 mkdir -p ${CI_DIR} 273.if defined(SNAPSHOT) && !empty(SNAPSHOT) 274. if exists(${CI_DIR}/Latest) 275 rm -rf ${CI_DIR}/Latest 276. endif 277 mkdir -p ${CI_DIR}/Latest 278 mkdir -p ${CI_DIR}/${BUILDDATE} 279. for CW in ${CLOUDWARE} 280. if ${CW} == BASIC-CI 281. for VMFORMAT in ${${CW}_FORMAT} 282. for FS in ${${CW}_FSLIST} 283 cd ${RELEASEDIR}/ciimages && \ 284 mv ${OSRELEASE}-${CW}-${FS}.${VMFORMAT}.xz \ 285 ${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz 286 cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \ 287 ${CI_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz 288 cd ${CI_DIR}/Latest && \ 289 ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${FS}.${VMFORMAT}.xz \ 290 ${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz 291. endfor 292 cd ${RELEASEDIR}/ciimages && \ 293 mv ${OSRELEASE}-${CW}.${VMFORMAT}.xz \ 294 ${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz 295 cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 296 ${CI_DIR}/${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz 297 cd ${CI_DIR}/Latest && \ 298 ln -s ../${BUILDDATE}/${OSRELEASE}-${CW}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 299 ${OSRELEASE}-${CW}.${VMFORMAT}.xz 300. endfor 301. endif 302. endfor 303 cd ${RELEASEDIR}/ciimages && rm -f CHECKSUM.* 304. for CHECKSUM in ${CHECKSUM_FILES} 305 cd ${RELEASEDIR}/ciimages && \ 306 ${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 307 cp -p ${RELEASEDIR}/ciimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 308 ${CI_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 309 cd ${CI_DIR}/Latest && \ 310 ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 311 CHECKSUM.${CHECKSUM} 312. endfor 313.else # not snapshot 314. if exists(${CI_DIR}/Latest) 315 rm -rf ${CI_DIR}/Latest 316. endif 317 mkdir -p ${CI_DIR}/Latest 318. for CW in ${CLOUDWARE} 319. if ${CW} == BASIC-CI 320. for VMFORMAT in ${${CW}_FORMAT} 321. for FS in ${${CW}_FSLIST} 322 cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}-${FS}.${VMFORMAT}.xz \ 323 ${CI_DIR}/Latest/${OSRELEASE}-${CW}.${FS}.${VMFORMAT}.xz 324. endfor 325 cp -p ${RELEASEDIR}/ciimages/${OSRELEASE}-${CW}.${VMFORMAT}.xz \ 326 ${CI_DIR}/Latest/${OSRELEASE}-${CW}.${VMFORMAT}.xz 327. endfor 328. endif 329. endfor 330. for CHECKSUM in ${CHECKSUM_FILES} 331 cp -p ${RELEASEDIR}/ciimages/CHECKSUM.${CHECKSUM} \ 332 ${CI_DIR}/Latest/CHECKSUM.${CHECKSUM} 333. endfor 334.endif 335 336ftp-stage: remove-old-bits ${STAGE_TARGETS} 337 338