summaryrefslogtreecommitdiffstats
path: root/release/Makefile.mirrors
diff options
context:
space:
mode:
authorgjb <gjb@FreeBSD.org>2015-05-25 22:12:30 +0000
committergjb <gjb@FreeBSD.org>2015-05-25 22:12:30 +0000
commite8dfad85657458740ad232334919c76a0e47eb84 (patch)
treeb076837abbc232136f7922d909ac421e3e9f3b63 /release/Makefile.mirrors
parentb7743f6ee40fa0d16376b3437757b54911a6c06b (diff)
downloadFreeBSD-src-e8dfad85657458740ad232334919c76a0e47eb84.zip
FreeBSD-src-e8dfad85657458740ad232334919c76a0e47eb84.tar.gz
MFC r282785, r282787, r282789, r282790, r282791, r282792, r282793,
r282794, r282795, r282796, r282797, r282798, r282799, r283265, r283266, r283268, r283271, r283272, r283298, r283302: Add a new file, Makefile.mirrors, which is intended to replace a 474-line kludge of a shell script to pre-create the directory hierarchy on ftp-master. This is not in any way connected to the build, and there is no intention to do so. This only intent here is to try to make things a little bit easier. Always use the 'make install' directory as the source for images. For RE purposes, we use the default (/R within the chroot), so this helps avoid copying files multiple times and xz(1)-compressing additional times when not needed. Fix staging virtual machine images for ftp propagation. This Makefile is not for general consumption. Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'release/Makefile.mirrors')
-rw-r--r--release/Makefile.mirrors253
1 files changed, 253 insertions, 0 deletions
diff --git a/release/Makefile.mirrors b/release/Makefile.mirrors
new file mode 100644
index 0000000..f534c19
--- /dev/null
+++ b/release/Makefile.mirrors
@@ -0,0 +1,253 @@
+#
+# This Makefile helps create the directory structure on ftp-master,
+# making staging builds a bit more sane.
+#
+# You probably do not want to use this. Really.
+# You have been warned.
+#
+# Seriously.
+#
+# Don't use this unless you know why you're using it.
+#
+# $FreeBSD$
+#
+
+.include "${.CURDIR}/Makefile"
+
+RELEASEDIR?= /R
+FTPDIR?= ${RELEASEDIR}/ftp-stage
+STAGE_TARGETS?= iso-images-stage
+
+.if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD))
+. if ${TARGET} == "arm" || ${EMBEDDED_TARGET} == "arm"
+EMBEDDED= 1
+. endif
+.endif
+
+# snapshot
+.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT"
+SNAPSHOT= 1
+TLD?= ${FTPDIR}/snapshots
+. for _D in /usr/bin /usr/local/bin
+. for _S in svnversion svnliteversion
+. if exists(${_D}/${_S})
+SVNVERSION?= ${_D}/${_S}
+. endif
+. endfor
+. endfor
+. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh)
+BUILDDATE!= cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d
+. else
+BUILDDATE!= date +%Y%m%d
+. endif
+. if exists(${SVNVERSION}) && !empty(SVNVERSION)
+SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile
+_SNAP_SUFFIX:= -r${SVNREVISION}-${BUILDDATE}
+. else
+_SNAP_SUFFIX:= -${BUILDDATE}
+. endif
+.else
+# release
+SNAPSHOT=
+TLD?= ${FTPDIR}/releases
+.endif
+
+.if defined(EMBEDDED) && !empty(EMBEDDED)
+. if ${TARGET} == "arm" && ${TARGET_ARCH} == "armv6"
+. if !defined(BOARDNAME) && empty(BOARDNAME)
+BOARDNAME:= ${KERNCONF}
+. else
+OLDNAME:= ${KERNCONF}
+. endif
+. if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT"
+SNAPSHOT= 1
+. endif
+IMAGES:= img
+. endif # arm/armv6
+.endif # embedded
+
+.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
+STAGE_TARGETS+= vm-images-stage
+VM_DIR= ${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH}
+.endif
+
+CLEANFILES+= ${STAGE_TARGETS}
+CHECKSUM_FILES?= SHA256 MD5
+SNAP_SUFFIX!= echo ${_SNAP_SUFFIX:S,^-,,1} | tr -d ' '
+ISO_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}
+FTP_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH}
+
+remove-old-bits:
+ rm -rf ${FTPDIR}
+
+iso-images-stage:
+ mkdir -p ${ISO_DIR}
+ mkdir -p ${TLD}/ISO-IMAGES/${REVISION}
+.if exists(${RELEASEDIR})
+ @# Assume we have images to copy.
+. if defined(SNAPSHOT) && !empty(SNAPSHOT)
+ cd ${RELEASEDIR} && rm -f CHECKSUM.*
+. for IMAGE in ${IMAGES}
+. if defined(EMBEDDED) && !empty(EMBEDDED)
+. if defined(OLDNAME) && !empty(OLDNAME)
+ @# arm/armv6 IMX6 -> WANDBOARD, for example.
+ cd ${RELEASEDIR} && \
+ mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \
+ ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
+. endif
+ cd ${RELEASEDIR} && \
+ mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
+ ${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
+ cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \
+ ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz
+. endif # not embedded
+. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
+ cd ${RELEASEDIR} && \
+ mv ${OSRELEASE}-${IMAGE} \
+ ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} || true
+ cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \
+ ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}
+. endif
+. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
+ cd ${RELEASEDIR} && \
+ mv ${OSRELEASE}-${IMAGE}.xz \
+ ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz || true
+ cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \
+ ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz
+. endif
+. endfor # images loop
+ cd ${RELEASEDIR} && rm -f CHECKSUM.*
+. for CHECKSUM in ${CHECKSUM_FILES}
+. if defined(EMBEDDED) && !empty(EMBEDDED)
+ cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
+ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
+ cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \
+ ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}
+. else # not embedded
+ cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
+ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
+ cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \
+ ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX}
+. endif #
+. endfor # checksum files
+. else # not snapshot
+. for IMAGE in ${IMAGES}
+. if defined(EMBEDDED) && !empty(EMBEDDED)
+. if defined(OLDNAME) && !empty(OLDNAME)
+ @# arm/armv6 IMX6 -> WANDBOARD, for example.
+ cd ${RELEASEDIR} && \
+ mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \
+ ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
+. endif
+ cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \
+ ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz
+. endif # not embedded
+. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE})
+ cd ${RELEASEDIR} && \
+ cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \
+ ${ISO_DIR}/${OSRELEASE}-${IMAGE}
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}
+. endif
+. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz)
+ cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \
+ ${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz
+. endif
+. endfor # images loop
+ cd ${RELEASEDIR} && rm -f CHECKSUM.*
+. for CHECKSUM in ${CHECKSUM_FILES}
+. if defined(EMBEDDED) && !empty(EMBEDDED)
+ cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
+ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
+ cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \
+ ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}
+. else # not embedded
+ cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \
+ CHECKSUM.${CHECKSUM}-${OSRELEASE}
+ cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \
+ ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
+ cd ${TLD}/ISO-IMAGES/${REVISION} && \
+ ln -s \
+ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}
+. endif
+. endfor # checksum files
+. endif # release
+. if exists(${RELEASEDIR}/ftp)
+ mkdir -p ${FTP_DIR}
+ cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
+ cd ${TLD}/${TARGET} && \
+ ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
+ ${REVISION}-${BRANCH}
+. endif
+.endif # no RELEASEDIR
+
+vm-images-stage:
+ mkdir -p ${VM_DIR}
+.if defined(SNAPSHOT) && !empty(SNAPSHOT)
+. if exists(${VM_DIR}/Latest)
+ rm -rf ${VM_DIR}/Latest
+. endif
+ mkdir -p ${VM_DIR}/Latest
+ mkdir -p ${VM_DIR}/${BUILDDATE}
+. for VMFORMAT in ${VMFORMATS}
+ cd ${RELEASEDIR}/vmimages && \
+ mv ${OSRELEASE}.${VMFORMAT}.xz \
+ ${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
+ cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
+ ${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz
+ cd ${VM_DIR}/Latest && \
+ ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \
+ ${OSRELEASE}.${VMFORMAT}.xz
+. endfor
+ cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.*
+. for CHECKSUM in ${CHECKSUM_FILES}
+ cd ${RELEASEDIR}/vmimages && \
+ ${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
+ cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
+ ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX}
+ cd ${VM_DIR}/Latest && \
+ ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \
+ CHECKSUM.${CHECKSUM}
+. endfor
+.else # not snapshot
+. if exists(${VM_DIR}/Latest)
+ rm -rf ${VM_DIR}/Latest
+. endif
+ mkdir -p ${VM_DIR}/Latest
+. for VMFORMAT in ${VMFORMATS}
+ cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \
+ ${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz
+. endfor
+. for CHECKSUM in ${CHECKSUM_FILES}
+ cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \
+ ${VM_DIR}/Latest/CHECKSUM.${CHECKSUM}
+. endfor
+.endif
+
+ftp-stage: remove-old-bits ${STAGE_TARGETS}
+
OpenPOWER on IntegriCloud