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: stable/11/release/Makefile.mirrors 349518 2019-06-28 20:28:20Z gjb $ 13# 14 15.include "${.CURDIR}/Makefile" 16 17RELEASEDIR?= /R 18FTPDIR?= ${RELEASEDIR}/ftp-stage 19.if exists(${RELEASEDIR}) 20STAGE_TARGETS?= iso-images-stage 21.endif 22SRCBRANCH!= ${SVN_CMD} info --show-item relative-url ${WORLDDIR} 23 24.if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD)) 25. if ${TARGET:Marm*} != "" || ${EMBEDDED_TARGET:Marm*} != "" 26EMBEDDED= 1 27. endif 28.endif 29 30# snapshot 31.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != "" 32SNAPSHOT= 1 33TLD?= ${FTPDIR}/snapshots 34. if !defined(SVNREVISION) || empty(SVNREVISION) 35. for _D in /usr/bin /usr/local/bin 36. for _S in svnversion svnliteversion 37. if exists(${_D}/${_S}) 38SVNVERSION?= ${_D}/${_S} 39. endif 40. endfor 41. endfor 42. if exists(${SVNVERSION}) && !empty(SVNVERSION) 43SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile 44. endif 45. endif # !defined(SVNREVISION) 46. if !defined(BUILDDATE) || empty(BUILDDATE) 47. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh) 48BUILDDATE!= cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d 49. else 50BUILDDATE!= date +%Y%m%d 51. endif 52. endif 53_SNAP_SUFFIX:= ${BUILDDATE}-r${SVNREVISION} 54.else 55# release 56SNAPSHOT= 57TLD?= ${FTPDIR}/releases 58.endif 59 60.if defined(EMBEDDED) && !empty(EMBEDDED) 61. if ${TARGET:Marm*} != "" && (${TARGET_ARCH:Marm*} != "" || ${TARGET_ARCH} == "aarch64") 62. if !defined(BOARDNAME) && empty(BOARDNAME) 63BOARDNAME:= ${KERNCONF} 64. else 65OLDNAME:= ${KERNCONF} 66. endif 67. if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != "" 68SNAPSHOT= 1 69. endif 70IMAGES:= img 71. endif # arm/armv6 72.endif # embedded 73 74.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES) 75STAGE_TARGETS+= vm-images-stage 76VM_DIR= ${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH} 77.endif 78 79CLEANFILES+= ${STAGE_TARGETS} 80CHECKSUM_FILES?= SHA512 SHA256 81SNAP_SUFFIX!= echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' ' 82ISO_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION} 83FTP_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH} 84 85remove-old-bits: 86 rm -rf ${FTPDIR} 87 88iso-images-stage: 89 mkdir -p ${ISO_DIR} 90 mkdir -p ${TLD}/ISO-IMAGES/${REVISION} 91.if defined(SNAPSHOT) && !empty(SNAPSHOT) 92 cd ${RELEASEDIR} && rm -f CHECKSUM.* 93. for IMAGE in ${IMAGES} 94. if defined(EMBEDDED) && !empty(EMBEDDED) 95. if defined(OLDNAME) && !empty(OLDNAME) 96 @# arm/armv6 IMX6 -> WANDBOARD, for example. 97 cd ${RELEASEDIR} && \ 98 mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \ 99 ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz 100. endif 101 cd ${RELEASEDIR} && \ 102 mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ 103 ${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz 104 cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \ 105 ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz 106 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 107 ln -s \ 108 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz 109. endif # not embedded 110. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) 111 cd ${RELEASEDIR} && \ 112 mv ${OSRELEASE}-${IMAGE} \ 113 ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} 114 cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \ 115 ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} 116 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 117 ln -s \ 118 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} 119. endif 120. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) 121 cd ${RELEASEDIR} && \ 122 mv ${OSRELEASE}-${IMAGE}.xz \ 123 ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz 124 cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \ 125 ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz 126 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 127 ln -s \ 128 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz 129. endif 130. endfor # images loop 131 cd ${RELEASEDIR} && rm -f CHECKSUM.* 132. for CHECKSUM in ${CHECKSUM_FILES} 133. if defined(EMBEDDED) && !empty(EMBEDDED) 134 cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ 135 CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} 136 cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \ 137 ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} 138 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 139 ln -s \ 140 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} 141. else # not embedded 142 cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ 143 CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} 144 cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \ 145 ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} 146 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 147 ln -s \ 148 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} 149. endif # 150. endfor # checksum files 151.else # not snapshot 152. for IMAGE in ${IMAGES} 153. if defined(EMBEDDED) && !empty(EMBEDDED) 154. if defined(OLDNAME) && !empty(OLDNAME) 155 @# arm/armv6 IMX6 -> WANDBOARD, for example. 156 cd ${RELEASEDIR} && \ 157 mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \ 158 ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz 159. endif 160 cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ 161 ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz 162 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 163 ln -s \ 164 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz 165. endif # not embedded 166. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) 167 cd ${RELEASEDIR} && \ 168 cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \ 169 ${ISO_DIR}/${OSRELEASE}-${IMAGE} 170 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 171 ln -s \ 172 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE} 173. endif 174. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) 175 cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \ 176 ${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz 177 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 178 ln -s \ 179 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz 180. endif 181. endfor # images loop 182 cd ${RELEASEDIR} && rm -f CHECKSUM.* 183. for CHECKSUM in ${CHECKSUM_FILES} 184. if defined(EMBEDDED) && !empty(EMBEDDED) 185 cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ 186 CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} 187 cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \ 188 ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} 189 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 190 ln -s \ 191 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} 192. else # not embedded 193 cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ 194 CHECKSUM.${CHECKSUM}-${OSRELEASE} 195 cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \ 196 ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} 197 cd ${TLD}/ISO-IMAGES/${REVISION} && \ 198 ln -s \ 199 ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE} 200. endif 201. endfor # checksum files 202.endif # release 203.if exists(${RELEASEDIR}/ftp) 204 mkdir -p ${FTP_DIR} 205 cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR} 206 echo ${BUILDDATE} > ${FTP_DIR}/BUILDDATE 207 echo ${SRCBRANCH} > ${FTP_DIR}/SRCBRANCH 208 echo r${SVNREVISION} > ${FTP_DIR}/REVISION 209 cd ${TLD}/${TARGET} && \ 210 ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \ 211 ${REVISION}-${BRANCH} 212.endif 213 214vm-images-stage: 215 mkdir -p ${VM_DIR} 216.if defined(SNAPSHOT) && !empty(SNAPSHOT) 217. if exists(${VM_DIR}/Latest) 218 rm -rf ${VM_DIR}/Latest 219. endif 220 mkdir -p ${VM_DIR}/Latest 221 mkdir -p ${VM_DIR}/${BUILDDATE} 222. for VMFORMAT in ${VMFORMATS} 223 cd ${RELEASEDIR}/vmimages && \ 224 mv ${OSRELEASE}.${VMFORMAT}.xz \ 225 ${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz 226 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 227 ${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz 228 cd ${VM_DIR}/Latest && \ 229 ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ 230 ${OSRELEASE}.${VMFORMAT}.xz 231. endfor 232 cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.* 233. for CHECKSUM in ${CHECKSUM_FILES} 234 cd ${RELEASEDIR}/vmimages && \ 235 ${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 236 cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 237 ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} 238 cd ${VM_DIR}/Latest && \ 239 ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ 240 CHECKSUM.${CHECKSUM} 241. endfor 242.else # not snapshot 243. if exists(${VM_DIR}/Latest) 244 rm -rf ${VM_DIR}/Latest 245. endif 246 mkdir -p ${VM_DIR}/Latest 247. for VMFORMAT in ${VMFORMATS} 248 cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \ 249 ${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz 250. endfor 251. for CHECKSUM in ${CHECKSUM_FILES} 252 cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \ 253 ${VM_DIR}/Latest/CHECKSUM.${CHECKSUM} 254. endfor 255.endif 256 257ftp-stage: remove-old-bits ${STAGE_TARGETS} 258 259