Rework how we layout the CD/DVD ISO images for releases. Note that this

is only the first stage and does not yet handle packages (which will move
to their own disc(s)).
- By default, include the live filesystem on disc1, so that disc1 is now
  both an install disc and a fixit disc.  The images can still be split
  into two separate discs by specifying SEPARATE_LIVEFS=yes.
- Remove /usr/ports from the live filesystem disc as the merged images
  do not fit on even i386 otherwise.  Also, the merged image already
  contains a tarball of the entire ports tree, so /usr/ports was a
  duplicate anyway.
- Stop building port READMES for the release sinc they are no longer used
  (/usr/ports in the live filesystem was the last remaining user).
- Split cdrom.1 into three targets.  cdrom.1 builds the live filesystem
  image.  cdrom.2 builds the disc1 image.  Note that if SEPARATE_LIVEFS
  is not specified these both write to the same area.  cdrom.3 builds
  the bootonly image and the UFS miniroot.
- The various distribution directories are now in a <buildname>
  subdirectory of disc1 rather than being in the root so that the merged
  image's root is not quite as cluttered.
- The disc1 image is now called disc1.iso and we no longer build a
  miniinst.iso image.  If CD_EXTRA_BITS is defined, then the iso.1 target
  will simply include those bits in the disc1 image that it builds.

MFC after:	1 day
Requested by:	re (scottl, etc.)
This commit is contained in:
John Baldwin 2005-03-02 22:46:07 +00:00
parent d61e43fe1e
commit 92f6e2c87f

View File

@ -63,10 +63,8 @@ PORTSRELEASETAG?= ${AUXRELEASETAG}
# If you want to pass flags to the world build such as -j X, use
# WORLD_FLAGS. Similarly, you can specify make flags for kernel
# builds via KERNEL_FLAGS.
# Similarly, you can specify make flags for make readmes via PORTREADMES_FLAGS.
#WORLD_FLAGS=-j4
#KERNEL_FLAGS=-j4
#PORTREADMES_FLAGS=-j4
TARGET_ARCH?= ${MACHINE_ARCH}
.if ${TARGET_ARCH} == ${MACHINE_ARCH}
@ -130,9 +128,9 @@ RELEASEPORTSMODULE= ${MINIMALDOCPORTS}
.endif
# Make changing names of disc1/disc2 CD's possible.
DISC1_LABEL?= fbsd_miniinst
DISC1_NAME?= miniinst
DISC2_LABEL?= fbsd_livefs
DISC1_LABEL?= FreeBSD_Install
DISC1_NAME?= disc1
DISC2_LABEL?= FreeBSD_LiveFS
DISC2_NAME?= disc2
# Helper variable
@ -251,15 +249,13 @@ CD= ${_R}/cdrom
CD_BOOT= ${CD}/bootonly
.endif
CD_DISC1= ${CD}/disc1
.if defined(SEPARATE_LIVEFS)
CD_DISC2= ${CD}/disc2
_MK?= ${CHROOTDIR}/mk
# Some architectures may not have space for the ports tree on disc2.
# For these architectures there is no sense building the README.html
# files no matter what.
.if ${TARGET_ARCH} == "ia64"
NOPORTREADMES= yes
CD_LIVEFS= ${CD_DISC2}
.else
CD_LIVEFS= ${CD_DISC1}
.endif
_MK?= ${CHROOTDIR}/mk
# Where the bootstrap ports (see DOCPORTS) get installed.
LOCALDIR= /usr/local/bin
@ -287,7 +283,7 @@ EXTRAS+= floppies.3
.endif
EXTRAS+= ftp.1
.if !defined(NOCDROM)
EXTRAS+= cdrom.1
EXTRAS+= cdrom.1 cdrom.2 cdrom.3
.if defined(MAKE_ISOS)
EXTRAS+= iso.1
.endif
@ -423,8 +419,7 @@ release rerelease:
.if !defined(NOPORTS)
cd ${CHROOTDIR}/usr/ports && ${CVSPREFIX} cvs -R ${CVSARGS} -q \
update ${CVSCMDARGS} -P -d
rm -f ${CHROOTDIR}/tmp/.skip_ports_index \
${CHROOTDIR}/tmp/.skip_ports_readmes
rm -f ${CHROOTDIR}/tmp/.skip_ports_index
.endif
.if defined(DOMINIMALDOCPORTS) && ${DOMINIMALDOCPORTS} == "YES"
for i in ${MINIMALDOCPORTS}; do \
@ -480,6 +475,7 @@ release rerelease:
NO_SENDMAIL \
RELEASETAG \
RELNOTES_LANG \
SEPARATE_LIVEFS \
TARGET \
TARGET_ARCH \
WORLD_FLAGS
@ -519,13 +515,6 @@ release rerelease:
echo " touch /tmp/.skip_ports_index" >> ${_MK}
echo " echo \">>> make index finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${_MK}
echo "fi" >> ${_MK}
echo "if [ ! -f /tmp/.skip_ports_readmes ]; then" >> ${_MK}
echo " echo \">>> make readmes started on \`LC_ALL=C TZ=GMT date\`\"" >> ${_MK}
echo " cd /usr/ports" >> ${_MK}
echo " make ${PORTREADMES_FLAGS} readmes" >> ${_MK}
echo " touch /tmp/.skip_ports_readmes" >> ${_MK}
echo " echo \">>> make readmes finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${_MK}
echo "fi" >> ${_MK}
echo "cd /usr/src/release" >> ${_MK}
echo "make obj" >> ${_MK}
echo "make \$${_RELTARGET}" >> ${_MK}
@ -533,9 +522,6 @@ release rerelease:
chmod 755 ${_MK}
.if defined(NOPORTS)
touch ${CHROOTDIR}/tmp/.skip_ports_index
.endif
.if defined(NOPORTS) || defined(NOPORTREADMES)
touch ${CHROOTDIR}/tmp/.skip_ports_readmes
.endif
# Ensure md.ko is loaded if md(4) is not statically compiled into
# the kernel
@ -669,7 +655,7 @@ release.6:
@mkdir -p ${RD}/dists/ports
@echo rolling ports/ports tarball
@tar --exclude CVS --exclude 'ports/distfiles/*' \
--exclude README.html -czf ${RD}/dists/ports/ports.tgz -C /usr ports
-czf ${RD}/dists/ports/ports.tgz -C /usr ports
@cp ${.CURDIR}/scripts/ports-install.sh ${RD}/dists/ports/install.sh
@(cd ${RD}/dists/ports; \
rm -f CHECKSUM.MD5; \
@ -900,33 +886,47 @@ ftp.1:
@echo "CD_VERSION = ${BUILDNAME}" > ${FD}/cdrom.inf
touch ${.TARGET}
#
# --==## Setup a suitable cdrom-area ##==--
#
# Build a live filesystem cdrom image
cdrom.1:
@echo "Setting up CDROM distribution area"
@mkdir -p ${CD_BOOT} ${CD_DISC1} ${CD_DISC2}
-@ln -s . ${CD_DISC1}/${BUILDNAME}
.if defined(MAKE_FLOPPIES)
@cd ${RD} && find floppies -print | cpio -dumpl ${CD_DISC1}
.endif
@cd ${RD}/dists && find . -print | cpio -dumpl ${CD_DISC1}
@echo "Building CDROM live filesystem image"
@mkdir -p ${CD_LIVEFS}
@for i in ${DISTRIBUTIONS} ; \
do \
if [ -d ${RD}/trees/$${i} ] ; then \
chflags -R noschg ${RD}/trees/$${i} || true ; \
( cd ${RD}/trees/$${i} && \
find . -depth -print | cpio -dumpl ${CD_DISC2} ) ; \
find . -depth -print | cpio -dumpl ${CD_LIVEFS} ) ; \
fi \
done
@rm -f ${CD_DISC2}/.profile
@cp ${.CURDIR}/fixit.profile ${CD_DISC2}/.profile
@echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC1}/cdrom.inf
@echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC2}/cdrom.inf
.if !defined(NOPORTS) && !defined(NOPORTREADMES)
@tar --exclude CVS --exclude 'ports/distfiles/*' -czf - \
-C /usr ports | (cd ${CD_DISC2}/usr; tar -xpBf -)
@rm -f ${CD_LIVEFS}/.profile
@cp ${.CURDIR}/fixit.profile ${CD_LIVEFS}/.profile
.if ${TARGET} != "pc98"
@echo "Setting up CDROM boot area"
@rm -f ${CD_LIVEFS}/boot/loader.conf
@cp ${RD}/mfsroot/mfsroot.gz ${CD_LIVEFS}/boot/mfsroot.gz
@echo 'mfsroot_load="YES"' > ${CD_LIVEFS}/boot/loader.conf
@echo 'mfsroot_type="mfs_root"' >> ${CD_LIVEFS}/boot/loader.conf
@echo 'mfsroot_name="/boot/mfsroot"' >> ${CD_LIVEFS}/boot/loader.conf
.if exists(${RD}/trees/base/boot/device.hints)
# Break the link to device.hints so we can modify it
@rm -f ${CD_LIVEFS}/boot/device.hints
@cp ${RD}/trees/base/boot/device.hints ${CD_LIVEFS}/boot/device.hints
.if ${TARGET} == "i386" || ${TARGET_ARCH} == "amd64"
@echo 'hint.atkbd.0.flags="0x1"' >> ${CD_LIVEFS}/boot/device.hints
.endif
.endif
.endif
@echo "CD_VERSION = ${BUILDNAME}" > ${CD_LIVEFS}/cdrom.inf
touch ${.TARGET}
# Build disc1 cdrom image
cdrom.2:
@echo "Building CDROM disc1 filesystem image"
@mkdir -p ${CD_DISC1}/${BUILDNAME}
.if defined(MAKE_FLOPPIES)
@cd ${RD} && find floppies -print | cpio -dumpl ${CD_DISC1}
.endif
@cd ${RD}/dists && find . -print | cpio -dumpl ${CD_DISC1}/${BUILDNAME}
.if !defined(NODOC)
@for i in ${DIST_DOCS_ARCH_INDEP}; do \
cp ${RND}/${RELNOTES_LANG}/$$i/article.txt \
@ -944,31 +944,27 @@ cdrom.1:
@mv ${CD_DISC1}/INSTALLATION.TXT ${CD_DISC1}/INSTALL.TXT
@mv ${CD_DISC1}/INSTALLATION.HTM ${CD_DISC1}/INSTALL.HTM
.endif
.if ${TARGET} != "pc98"
@echo "Setting up boot area"
@rm -f ${CD_DISC2}/boot/loader.conf
@cp ${RD}/mfsroot/mfsroot.gz ${CD_DISC2}/boot/mfsroot.gz
@echo 'mfsroot_load="YES"' > ${CD_DISC2}/boot/loader.conf
@echo 'mfsroot_type="mfs_root"' >> ${CD_DISC2}/boot/loader.conf
@echo 'mfsroot_name="/boot/mfsroot"' >> ${CD_DISC2}/boot/loader.conf
.if exists(${RD}/trees/base/boot/device.hints)
# Break the link to device.hints so we can modify it
@rm -f ${CD_DISC2}/boot/device.hints
@cp ${RD}/trees/base/boot/device.hints ${CD_DISC2}/boot/device.hints
.if ${TARGET} == "i386" || ${TARGET_ARCH} == "amd64"
@echo 'hint.atkbd.0.flags="0x1"' >> ${CD_DISC2}/boot/device.hints
.endif
.if defined(SEPARATE_LIVEFS)
@cp -Rp ${CD_LIVEFS}/boot ${CD_DISC1}
@echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC1}/cdrom.inf
.endif
touch ${.TARGET}
#
# --==## Setup a suitable cdrom-area ##==--
#
cdrom.3:
.if defined(CD_BOOT)
@cp -Rp ${CD_DISC2}/boot ${CD_BOOT}
@echo "Building bootonly CDROM filesystem image"
@mkdir -p ${CD_BOOT}
@cp -Rp ${CD_LIVEFS}/boot ${CD_BOOT}
.if defined(MINIROOT)
@echo "Building bootonly UFS filesystem image"
@mkdir -p ${FD}/miniroot
@sh -e ${DOFS_SH} ${FD}/miniroot/miniroot.ufs \
${RD} ${MNT} 0 ${CD_BOOT} 8192 auto
@gzip -9v ${FD}/miniroot/miniroot.ufs
.endif
.endif
@cp -Rp ${CD_DISC2}/boot ${CD_DISC1}
.endif
touch ${.TARGET}
@ -982,16 +978,12 @@ iso.1:
.endif
@sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \
${DISC1_LABEL} \
${CD}/${BUILDNAME}-${TARGET}-${DISC1_NAME}.iso ${CD_DISC1}
${CD}/${BUILDNAME}-${TARGET}-${DISC1_NAME}.iso ${CD_DISC1} \
${CD_EXTRA_BITS}
.if defined(SEPARATE_LIVEFS)
@sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \
${DISC2_LABEL} \
${CD}/${BUILDNAME}-${TARGET}-${DISC2_NAME}.iso ${CD_DISC2}
.if defined(CD_EXTRA_BITS)
@sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \
fbsd_boot \
${CD}/${BUILDNAME}-${TARGET}-disc1.iso ${CD_DISC1} \
${CD_EXTRA_BITS} \
&& false
.endif
@(cd ${CD} && md5 *.iso > ${BUILDNAME}-${TARGET}-iso.CHECKSUM.MD5)
touch ${.TARGET}