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