freebsd-dev/release/Makefile

358 lines
11 KiB
Makefile
Raw Normal View History

1999-08-28 01:35:59 +00:00
# $FreeBSD$
#
# Makefile for building releases and release media.
#
# User-driven targets:
# cdrom: Builds release CD-ROM media (disc1.iso)
# dvdrom: Builds release DVD-ROM media (dvd1.iso)
# memstick: Builds memory stick image (memstick.img)
# mini-memstick: Builds minimal memory stick image (mini-memstick.img)
# ftp: Sets up FTP distribution area (ftp)
# release: Build all media and FTP distribution area
# install: Copies all release media into ${DESTDIR}
#
# Variables affecting the build process:
# WORLDDIR: location of src tree -- must have built world and default kernel
# (by default, the directory above this one)
# PORTSDIR: location of ports tree to distribute (default: /usr/ports)
# DOCDIR: location of doc tree (default: /usr/doc)
2013-11-30 17:07:53 +00:00
# NOPKG: if set, do not distribute third-party packages
# NOPORTS: if set, do not distribute ports tree
# NOSRC: if set, do not distribute source tree
# NODOC: if set, do not generate release documentation
# WITH_DVD: if set, generate dvd1.iso
# WITH_COMPRESSED_IMAGES: if set, compress installation images with xz(1)
# (uncompressed images are not removed)
# WITH_VMIMAGES: if set, build virtual machine images with the release
# WITH_COMPRESSED_VMIMAGES: if set, compress virtual machine disk images
# with xz(1) (extremely time consuming)
# TARGET/TARGET_ARCH: architecture of built release
#
WORLDDIR?= ${.CURDIR}/..
PORTSDIR?= /usr/ports
DOCDIR?= /usr/doc
RELNOTES_LANG?= en_US.ISO8859-1
XZCMD?= /usr/bin/xz
.if !defined(TARGET) || empty(TARGET)
TARGET= ${MACHINE}
.endif
.if !defined(TARGET_ARCH) || empty(TARGET_ARCH)
.if ${TARGET} == ${MACHINE}
TARGET_ARCH= ${MACHINE_ARCH}
.else
TARGET_ARCH= ${TARGET}
.endif
.endif
IMAKE= ${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}
DISTDIR= dist
# Define OSRELEASE by using newvars.sh
.if !defined(OSRELEASE) || empty(OSRELEASE)
.for _V in TYPE BRANCH REVISION
${_V}!= eval $$(awk '/^${_V}=/{print}' ${.CURDIR}/../sys/conf/newvers.sh); echo $$${_V}
.endfor
.for _V in ${TARGET_ARCH}
.if !empty(TARGET:M${_V})
OSRELEASE= ${TYPE}-${REVISION}-${BRANCH}-${TARGET}
.else
OSRELEASE= ${TYPE}-${REVISION}-${BRANCH}-${TARGET}-${TARGET_ARCH}
.endif
.endfor
.endif
VOLUME_LABEL= ${OSRELEASE:C/[-\.]/_/g:S/^$${TYPE}_//}
.if !exists(${DOCDIR})
NODOC= true
.endif
.if !exists(${PORTSDIR})
NOPORTS= true
.endif
EXTRA_PACKAGES=
.if !defined(NOPORTS)
EXTRA_PACKAGES+= ports.txz
.endif
1997-06-24 23:08:18 +00:00
.if !defined(NOSRC)
EXTRA_PACKAGES+= src.txz
1997-06-24 23:08:18 +00:00
.endif
.if !defined(NODOC)
EXTRA_PACKAGES+= reldoc
.endif
RELEASE_TARGETS= ftp
IMAGES=
.if exists(${.CURDIR}/${TARGET}/mkisoimages.sh)
RELEASE_TARGETS+= cdrom
IMAGES+= disc1.iso bootonly.iso
. if defined(WITH_DVD) && !empty(WITH_DVD)
RELEASE_TARGETS+= dvdrom
IMAGES+= dvd1.iso
. endif
.endif
.if exists(${.CURDIR}/${TARGET}/make-memstick.sh)
RELEASE_TARGETS+= memstick.img
RELEASE_TARGETS+= mini-memstick.img
IMAGES+= memstick.img
IMAGES+= mini-memstick.img
.endif
Overhaul our boot floppy generation system so that it scales better and requires minimal care and feeding for future releases. - Consolidate multitude of floppy related constants down to a normal FLOPPY set for 1.44 floppies and on PC98 a SMALLFLOPPY set for 1.2 floppies. Also, cleanup the i386 arch section by not duplicating constants that are the same on both machine types (i386 and pc98). - Update the ZIPNSPLIT macro to generate a file chunks that will actually fit onto 1.44 floppies formatted with UFS1. Unfortunately, split(1) seems to be somewhat buggy, so the files generated are slightly larger than the argument passed to split. - Split the release.10 target into 3 targers: floppies.1, floppies.2 and floppies.3 that are added to EXTRAS only if NOFLOPPIES is defined. floppies.1 builds the install floppies, floppies.2 builds the fixit floppy, and floppies.3 generates the md5 sums and READMEs for the floppies/ directory. - Drop the by now largely obsolete and less useful boot.flp picture. This was more useful when the mfsroot lived inside the kernel rather than being loaded from a separate file by the loader. - Only build a single mfsroot containing no modules that is used for all installation methods. - Use split-file.sh to split up a gzipped GENERIC kernel into however many floppies it takes for the boot kernel. Currently, a stock 5.2 GENERIC kernel including WITNESS, INVARIANTS, DDB, and other assorted bloat fits onto 2 additional floppies besides the boot floppy with some room to spare. - If SPLIT_MFSROOT is defined, the mfsroot.gz file is similar split into however many floppies are needed. Currently it is not defined as the mfsroot.gz fits onto the current boot.flp with room to spare. - Add a 'makeFloppySet' target which builds a floppy set for a file that was split using split-file.sh. - Rename the doMFSKERN target to 'buildBootFloppy' as that more closely matches what it does now. We no longer build a custom BOOTMFS kernel for each boot floppy. - We no longer build a 2.88 boot.flp image to use with emulated CD booting. The non-emulated cdboot works for almost everyone who boots off of CD and if it doesn't work on a particular machine, the user can always boot from the 1.44 floppy images. - We no longer build a driver floppy or stick kernel modules in the mfsroot since we now use a stock kernel when booting from floppy.
2004-01-26 19:58:38 +00:00
VMTARGETS= vm-base vm-image
VMFORMATS?= vhd vmdk qcow2 raw
VMSIZE?= 20G
VMBASE?= vm
AZURECONF?= ${.CURDIR}/tools/azure.conf
CLEANFILES= packagesystem *.txz MANIFEST system ${IMAGES}
.if defined(WITH_COMPRESSED_IMAGES) && !empty(WITH_COMPRESSED_IMAGES)
. for I in ${IMAGES}
CLEANFILES+= ${I}.xz
. endfor
.endif
.if defined(WITH_DVD) && !empty(WITH_DVD)
CLEANFILES+= pkg-stage
.endif
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
CLEANFILES+= ${VMBASE}.img
. for FORMAT in ${VMFORMATS}
CLEANFILES+= ${VMBASE}.${FORMAT}
. endfor
.endif
CLEANDIRS= dist ftp release bootonly dvd
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
CLEANDIRS+= ${VMTARGETS}
.endif
.if exists(${.CURDIR}/${TARGET}/mk-azure.sh)
CLEANFILES+= ${OSRELEASE}.vhd \
${OSRELEASE}.vhd.raw \
azure.img
CLEANDIRS+= vm-azure
.endif
beforeclean:
chflags -R noschg .
.include <bsd.obj.mk>
clean: beforeclean
base.txz:
mkdir -p ${DISTDIR}
cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${.OBJDIR}/${DISTDIR}
# Set up mergemaster root database
sh ${.CURDIR}/scripts/mm-mtree.sh -m ${WORLDDIR} -F \
"TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" -D "${.OBJDIR}/${DISTDIR}/base"
etcupdate extract -B -M "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" \
-s ${WORLDDIR} -d "${.OBJDIR}/${DISTDIR}/base/var/db/etcupdate"
# Package all components
cd ${WORLDDIR} && ${IMAKE} packageworld DISTDIR=${.OBJDIR}/${DISTDIR}
mv ${DISTDIR}/*.txz .
kernel.txz:
mkdir -p ${DISTDIR}
cd ${WORLDDIR} && ${IMAKE} distributekernel packagekernel DISTDIR=${.OBJDIR}/${DISTDIR}
mv ${DISTDIR}/kernel*.txz .
src.txz:
mkdir -p ${DISTDIR}/usr
ln -fs ${WORLDDIR} ${DISTDIR}/usr/src
cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/src.txz --exclude .svn --exclude .zfs \
--exclude .git --exclude @ --exclude usr/src/release/dist usr/src
ports.txz:
mkdir -p ${DISTDIR}/usr
ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports
cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/ports.txz \
--exclude .git --exclude .svn \
--exclude usr/ports/distfiles --exclude usr/ports/packages \
--exclude 'usr/ports/INDEX*' --exclude work usr/ports
reldoc:
cd ${.CURDIR}/doc && ${MAKE} all install clean 'FORMATS=html txt' \
INSTALL_COMPRESSED='' URLS_ABSOLUTE=YES DOCDIR=${.OBJDIR}/rdoc
mkdir -p reldoc
.for i in hardware readme relnotes errata
ln -f rdoc/${RELNOTES_LANG}/${i}/article.txt reldoc/${i:tu}.TXT
ln -f rdoc/${RELNOTES_LANG}/${i}/article.html reldoc/${i:tu}.HTM
.endfor
cp rdoc/${RELNOTES_LANG}/readme/docbook.css reldoc
system: packagesystem
# Install system
mkdir -p release
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
DESTDIR=${.OBJDIR}/release MK_RESCUE=no MK_KERNEL_SYMBOLS=no \
Merge ^/projects/release-debugdist into ^/head: r262491, r262493, r262516, r267345, r267397: r262491: Add DEBUG_DISTRIBUTIONS, and set it to include base and EXTRA_DISTRIBUTIONS, excluding 'doc', since the documentation distribution does not have corresponding debug information. Use DEBUG_DISTRIBUTIONS in the 'distributeworld installworld' and 'packageworld' targets, to reduce the number of occurances of excluding distributions that do not have .debug files. r262493: In release/Makefile, explicitly set WITHOUT_DEBUG_FILES=1 for dvdrom and cdrom targets. (Later reverted.) Exclude the *.debug.txz distributions from dvdrom and cdrom images, but include them for ftp distribution. r262516: Rename ${dist}.debug.txz to ${dist}-dbg.txz to prevent the following output: eval: ${base....}: Bad substitution eval: ${doc....}: Bad substitution eval: ${games....}: Bad substitution eval: ${lib32....}: Bad substitution This also follows other naming conventions seen in the wild. r267345: Explicitly set MK_DEBUG_FILES=no, which overrides the WITH_DEBUG_FILES=1 and WITHOUT_DEBUG_FILES=1 collisions previously experienced. This change allows us to create the {base,kernel}_debug.txz distributions without accidentally installing the *.debug files on the medium itself. r267397: Remove evaluations of MK_DEBUG_FILES where not needed. If DEBUG_DISTRIBUTIONS is empty, which is true if MK_DEBUG_FILES evaluates to 'no' above, the loop does nothing. MFC after: 1 month Tested on: head@r267801 Reviewed by: brooks [1], emaste, imp [1] [1] earlier version Sponsored by: The FreeBSD Foundation
2014-07-01 19:04:04 +00:00
MK_PROFILE=no MK_SENDMAIL=no MK_TESTS=no MK_LIB32=no \
MK_DEBUG_FILES=no
# Copy distfiles
mkdir -p release/usr/freebsd-dist
Merge ^/projects/release-debugdist into ^/head: r262491, r262493, r262516, r267345, r267397: r262491: Add DEBUG_DISTRIBUTIONS, and set it to include base and EXTRA_DISTRIBUTIONS, excluding 'doc', since the documentation distribution does not have corresponding debug information. Use DEBUG_DISTRIBUTIONS in the 'distributeworld installworld' and 'packageworld' targets, to reduce the number of occurances of excluding distributions that do not have .debug files. r262493: In release/Makefile, explicitly set WITHOUT_DEBUG_FILES=1 for dvdrom and cdrom targets. (Later reverted.) Exclude the *.debug.txz distributions from dvdrom and cdrom images, but include them for ftp distribution. r262516: Rename ${dist}.debug.txz to ${dist}-dbg.txz to prevent the following output: eval: ${base....}: Bad substitution eval: ${doc....}: Bad substitution eval: ${games....}: Bad substitution eval: ${lib32....}: Bad substitution This also follows other naming conventions seen in the wild. r267345: Explicitly set MK_DEBUG_FILES=no, which overrides the WITH_DEBUG_FILES=1 and WITHOUT_DEBUG_FILES=1 collisions previously experienced. This change allows us to create the {base,kernel}_debug.txz distributions without accidentally installing the *.debug files on the medium itself. r267397: Remove evaluations of MK_DEBUG_FILES where not needed. If DEBUG_DISTRIBUTIONS is empty, which is true if MK_DEBUG_FILES evaluates to 'no' above, the loop does nothing. MFC after: 1 month Tested on: head@r267801 Reviewed by: brooks [1], emaste, imp [1] [1] earlier version Sponsored by: The FreeBSD Foundation
2014-07-01 19:04:04 +00:00
for dist in MANIFEST $$(ls *.txz | grep -v -- '-dbg'); \
do cp $${dist} release/usr/freebsd-dist; \
done
# Copy documentation, if generated
.if !defined(NODOC)
cp reldoc/* release
.endif
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf release/etc/resolv.conf
echo sendmail_enable=\"NONE\" > release/etc/rc.conf
echo hostid_enable=\"NO\" >> release/etc/rc.conf
echo debug.witness.trace=0 >> release/etc/sysctl.conf
cp ${.CURDIR}/rc.local release/etc
touch ${.TARGET}
bootonly: packagesystem
# Install system
mkdir -p bootonly
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
DESTDIR=${.OBJDIR}/bootonly MK_AMD=no MK_AT=no \
MK_GAMES=no MK_GROFF=no \
MK_INSTALLLIB=no MK_LIB32=no MK_MAIL=no \
MK_NCP=no MK_TOOLCHAIN=no MK_PROFILE=no \
MK_INSTALLIB=no MK_RESCUE=no MK_DICT=no \
Merge ^/projects/release-debugdist into ^/head: r262491, r262493, r262516, r267345, r267397: r262491: Add DEBUG_DISTRIBUTIONS, and set it to include base and EXTRA_DISTRIBUTIONS, excluding 'doc', since the documentation distribution does not have corresponding debug information. Use DEBUG_DISTRIBUTIONS in the 'distributeworld installworld' and 'packageworld' targets, to reduce the number of occurances of excluding distributions that do not have .debug files. r262493: In release/Makefile, explicitly set WITHOUT_DEBUG_FILES=1 for dvdrom and cdrom targets. (Later reverted.) Exclude the *.debug.txz distributions from dvdrom and cdrom images, but include them for ftp distribution. r262516: Rename ${dist}.debug.txz to ${dist}-dbg.txz to prevent the following output: eval: ${base....}: Bad substitution eval: ${doc....}: Bad substitution eval: ${games....}: Bad substitution eval: ${lib32....}: Bad substitution This also follows other naming conventions seen in the wild. r267345: Explicitly set MK_DEBUG_FILES=no, which overrides the WITH_DEBUG_FILES=1 and WITHOUT_DEBUG_FILES=1 collisions previously experienced. This change allows us to create the {base,kernel}_debug.txz distributions without accidentally installing the *.debug files on the medium itself. r267397: Remove evaluations of MK_DEBUG_FILES where not needed. If DEBUG_DISTRIBUTIONS is empty, which is true if MK_DEBUG_FILES evaluates to 'no' above, the loop does nothing. MFC after: 1 month Tested on: head@r267801 Reviewed by: brooks [1], emaste, imp [1] [1] earlier version Sponsored by: The FreeBSD Foundation
2014-07-01 19:04:04 +00:00
MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no
# Copy manifest only (no distfiles) to get checksums
mkdir -p bootonly/usr/freebsd-dist
cp MANIFEST bootonly/usr/freebsd-dist
# Copy documentation, if generated
.if !defined(NODOC)
cp reldoc/* bootonly
.endif
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf bootonly/etc/resolv.conf
echo sendmail_enable=\"NONE\" > bootonly/etc/rc.conf
echo hostid_enable=\"NO\" >> bootonly/etc/rc.conf
echo debug.witness.trace=0 >> bootonly/etc/sysctl.conf
cp ${.CURDIR}/rc.local bootonly/etc
dvd:
# Install system
mkdir -p ${.TARGET}
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
DESTDIR=${.OBJDIR}/${.TARGET} MK_RESCUE=no MK_KERNEL_SYMBOLS=no \
Merge ^/projects/release-debugdist into ^/head: r262491, r262493, r262516, r267345, r267397: r262491: Add DEBUG_DISTRIBUTIONS, and set it to include base and EXTRA_DISTRIBUTIONS, excluding 'doc', since the documentation distribution does not have corresponding debug information. Use DEBUG_DISTRIBUTIONS in the 'distributeworld installworld' and 'packageworld' targets, to reduce the number of occurances of excluding distributions that do not have .debug files. r262493: In release/Makefile, explicitly set WITHOUT_DEBUG_FILES=1 for dvdrom and cdrom targets. (Later reverted.) Exclude the *.debug.txz distributions from dvdrom and cdrom images, but include them for ftp distribution. r262516: Rename ${dist}.debug.txz to ${dist}-dbg.txz to prevent the following output: eval: ${base....}: Bad substitution eval: ${doc....}: Bad substitution eval: ${games....}: Bad substitution eval: ${lib32....}: Bad substitution This also follows other naming conventions seen in the wild. r267345: Explicitly set MK_DEBUG_FILES=no, which overrides the WITH_DEBUG_FILES=1 and WITHOUT_DEBUG_FILES=1 collisions previously experienced. This change allows us to create the {base,kernel}_debug.txz distributions without accidentally installing the *.debug files on the medium itself. r267397: Remove evaluations of MK_DEBUG_FILES where not needed. If DEBUG_DISTRIBUTIONS is empty, which is true if MK_DEBUG_FILES evaluates to 'no' above, the loop does nothing. MFC after: 1 month Tested on: head@r267801 Reviewed by: brooks [1], emaste, imp [1] [1] earlier version Sponsored by: The FreeBSD Foundation
2014-07-01 19:04:04 +00:00
MK_TESTS=no MK_DEBUG_FILES=no
# Copy distfiles
mkdir -p ${.TARGET}/usr/freebsd-dist
Merge ^/projects/release-debugdist into ^/head: r262491, r262493, r262516, r267345, r267397: r262491: Add DEBUG_DISTRIBUTIONS, and set it to include base and EXTRA_DISTRIBUTIONS, excluding 'doc', since the documentation distribution does not have corresponding debug information. Use DEBUG_DISTRIBUTIONS in the 'distributeworld installworld' and 'packageworld' targets, to reduce the number of occurances of excluding distributions that do not have .debug files. r262493: In release/Makefile, explicitly set WITHOUT_DEBUG_FILES=1 for dvdrom and cdrom targets. (Later reverted.) Exclude the *.debug.txz distributions from dvdrom and cdrom images, but include them for ftp distribution. r262516: Rename ${dist}.debug.txz to ${dist}-dbg.txz to prevent the following output: eval: ${base....}: Bad substitution eval: ${doc....}: Bad substitution eval: ${games....}: Bad substitution eval: ${lib32....}: Bad substitution This also follows other naming conventions seen in the wild. r267345: Explicitly set MK_DEBUG_FILES=no, which overrides the WITH_DEBUG_FILES=1 and WITHOUT_DEBUG_FILES=1 collisions previously experienced. This change allows us to create the {base,kernel}_debug.txz distributions without accidentally installing the *.debug files on the medium itself. r267397: Remove evaluations of MK_DEBUG_FILES where not needed. If DEBUG_DISTRIBUTIONS is empty, which is true if MK_DEBUG_FILES evaluates to 'no' above, the loop does nothing. MFC after: 1 month Tested on: head@r267801 Reviewed by: brooks [1], emaste, imp [1] [1] earlier version Sponsored by: The FreeBSD Foundation
2014-07-01 19:04:04 +00:00
for dist in MANIFEST $$(ls *.txz | grep -v -- '-dbg'); \
do cp $${dist} ${.TARGET}/usr/freebsd-dist; \
done
# Copy documentation, if generated
.if !defined(NODOC)
cp reldoc/* ${.TARGET}
.endif
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
echo sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
echo debug.witness.trace=0 >> ${.TARGET}/etc/sysctl.conf
cp ${.CURDIR}/rc.local ${.TARGET}/etc
touch ${.TARGET}
release.iso: disc1.iso
disc1.iso: system
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_CD ${.TARGET} release
dvd1.iso: dvd pkg-stage
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_DVD ${.TARGET} dvd
bootonly.iso: bootonly
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_BO ${.TARGET} bootonly
memstick: memstick.img
memstick.img: system
sh ${.CURDIR}/${TARGET}/make-memstick.sh release ${.TARGET}
mini-memstick: mini-memstick.img
mini-memstick.img: system
sh ${.CURDIR}/${TARGET}/make-memstick.sh bootonly ${.TARGET}
packagesystem: base.txz kernel.txz ${EXTRA_PACKAGES}
sh ${.CURDIR}/scripts/make-manifest.sh *.txz > MANIFEST
touch ${.TARGET}
1995-02-26 01:35:32 +00:00
pkg-stage:
.if !defined(NOPKG)
env REPOS_DIR=${.CURDIR}/pkg_repos/ \
sh ${.CURDIR}/scripts/pkg-stage.sh
mkdir -p ${.OBJDIR}/dvd/packages/repos/
cp ${.CURDIR}/scripts/FreeBSD_install_cdrom.conf \
${.OBJDIR}/dvd/packages/repos/
.endif
touch ${.TARGET}
cdrom: disc1.iso bootonly.iso
dvdrom: dvd1.iso
ftp: packagesystem
rm -rf ftp
mkdir -p ftp
cp *.txz MANIFEST ftp
Overhaul our boot floppy generation system so that it scales better and requires minimal care and feeding for future releases. - Consolidate multitude of floppy related constants down to a normal FLOPPY set for 1.44 floppies and on PC98 a SMALLFLOPPY set for 1.2 floppies. Also, cleanup the i386 arch section by not duplicating constants that are the same on both machine types (i386 and pc98). - Update the ZIPNSPLIT macro to generate a file chunks that will actually fit onto 1.44 floppies formatted with UFS1. Unfortunately, split(1) seems to be somewhat buggy, so the files generated are slightly larger than the argument passed to split. - Split the release.10 target into 3 targers: floppies.1, floppies.2 and floppies.3 that are added to EXTRAS only if NOFLOPPIES is defined. floppies.1 builds the install floppies, floppies.2 builds the fixit floppy, and floppies.3 generates the md5 sums and READMEs for the floppies/ directory. - Drop the by now largely obsolete and less useful boot.flp picture. This was more useful when the mfsroot lived inside the kernel rather than being loaded from a separate file by the loader. - Only build a single mfsroot containing no modules that is used for all installation methods. - Use split-file.sh to split up a gzipped GENERIC kernel into however many floppies it takes for the boot kernel. Currently, a stock 5.2 GENERIC kernel including WITNESS, INVARIANTS, DDB, and other assorted bloat fits onto 2 additional floppies besides the boot floppy with some room to spare. - If SPLIT_MFSROOT is defined, the mfsroot.gz file is similar split into however many floppies are needed. Currently it is not defined as the mfsroot.gz fits onto the current boot.flp with room to spare. - Add a 'makeFloppySet' target which builds a floppy set for a file that was split using split-file.sh. - Rename the doMFSKERN target to 'buildBootFloppy' as that more closely matches what it does now. We no longer build a custom BOOTMFS kernel for each boot floppy. - We no longer build a 2.88 boot.flp image to use with emulated CD booting. The non-emulated cdboot works for almost everyone who boots off of CD and if it doesn't work on a particular machine, the user can always boot from the 1.44 floppy images. - We no longer build a driver floppy or stick kernel modules in the mfsroot since we now use a stock kernel when booting from floppy.
2004-01-26 19:58:38 +00:00
release:
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} obj
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${RELEASE_TARGETS}
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${VMTARGETS}
.endif
Overhaul our boot floppy generation system so that it scales better and requires minimal care and feeding for future releases. - Consolidate multitude of floppy related constants down to a normal FLOPPY set for 1.44 floppies and on PC98 a SMALLFLOPPY set for 1.2 floppies. Also, cleanup the i386 arch section by not duplicating constants that are the same on both machine types (i386 and pc98). - Update the ZIPNSPLIT macro to generate a file chunks that will actually fit onto 1.44 floppies formatted with UFS1. Unfortunately, split(1) seems to be somewhat buggy, so the files generated are slightly larger than the argument passed to split. - Split the release.10 target into 3 targers: floppies.1, floppies.2 and floppies.3 that are added to EXTRAS only if NOFLOPPIES is defined. floppies.1 builds the install floppies, floppies.2 builds the fixit floppy, and floppies.3 generates the md5 sums and READMEs for the floppies/ directory. - Drop the by now largely obsolete and less useful boot.flp picture. This was more useful when the mfsroot lived inside the kernel rather than being loaded from a separate file by the loader. - Only build a single mfsroot containing no modules that is used for all installation methods. - Use split-file.sh to split up a gzipped GENERIC kernel into however many floppies it takes for the boot kernel. Currently, a stock 5.2 GENERIC kernel including WITNESS, INVARIANTS, DDB, and other assorted bloat fits onto 2 additional floppies besides the boot floppy with some room to spare. - If SPLIT_MFSROOT is defined, the mfsroot.gz file is similar split into however many floppies are needed. Currently it is not defined as the mfsroot.gz fits onto the current boot.flp with room to spare. - Add a 'makeFloppySet' target which builds a floppy set for a file that was split using split-file.sh. - Rename the doMFSKERN target to 'buildBootFloppy' as that more closely matches what it does now. We no longer build a custom BOOTMFS kernel for each boot floppy. - We no longer build a 2.88 boot.flp image to use with emulated CD booting. The non-emulated cdboot works for almost everyone who boots off of CD and if it doesn't work on a particular machine, the user can always boot from the 1.44 floppy images. - We no longer build a driver floppy or stick kernel modules in the mfsroot since we now use a stock kernel when booting from floppy.
2004-01-26 19:58:38 +00:00
install:
.if defined(DESTDIR) && !empty(DESTDIR)
mkdir -p ${DESTDIR}
.endif
cp -a ftp ${DESTDIR}/
.for I in ${IMAGES}
cp -p ${I} ${DESTDIR}/${OSRELEASE}-${I}
. if defined(WITH_COMPRESSED_IMAGES) && !empty(WITH_COMPRESSED_IMAGES)
${XZCMD} -k ${DESTDIR}/${OSRELEASE}-${I}
. endif
.endfor
cd ${DESTDIR} && sha256 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.SHA256
cd ${DESTDIR} && md5 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.MD5
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
mkdir -p ${DESTDIR}/vmimages
. for FORMAT in ${VMFORMATS}
cp -p ${VMBASE}.${FORMAT} \
${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
. endfor
. if defined(WITH_COMPRESSED_VMIMAGES) && !empty(WITH_COMPRESSED_VMIMAGES)
# This is very time consuming, so defer it after the images are moved to
# the DESTDIR.
. for FORMAT in ${VMFORMATS}
# Don't keep the originals. There is a copy in ${.OBJDIR} if needed.
${XZCMD} ${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
. endfor
. endif
cd ${DESTDIR}/vmimages && sha256 ${OSRELEASE}* > \
${DESTDIR}/vmimages/CHECKSUM.SHA256
cd ${DESTDIR}/vmimages && md5 ${OSRELEASE}* > \
${DESTDIR}/vmimages/CHECKSUM.MD5
.endif
vm-base:
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
. if exists(${.CURDIR}/${TARGET}/mk-vmimage.sh)
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
${.CURDIR}/${TARGET}/mk-vmimage.sh ${.TARGET} \
${VMBASE}.img ${WORLDDIR} ${.OBJDIR}/${.TARGET} ${VMSIZE}
. endif
.endif
touch ${.TARGET}
vm-image: vm-base
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
. if exists(${.CURDIR}/${TARGET}/mk-vmimage.sh)
. for FORMAT in ${VMFORMATS}
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
${.CURDIR}/${TARGET}/mk-vmimage.sh ${.TARGET} \
${VMBASE}.img ${FORMAT} ${VMBASE}.${FORMAT}
. endfor
. endif
.endif
touch ${.TARGET}
vm-azure:
.if exists(${.CURDIR}/${TARGET}/mk-azure.sh)
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} AZURECONF=${AZURECONF} \
${.CURDIR}/${TARGET}/mk-azure.sh ${.TARGET} azure.img \
${WORLDDIR} ${.TARGET} ${VMSIZE} ${OSRELEASE}.vhd
.endif
touch ${.TARGET}