freebsd-skq/release/Makefile

271 lines
8.3 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)
# 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)
# 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
.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
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
CLEANDIRS= dist ftp release bootonly dvd
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 WITHOUT_RESCUE=1 WITHOUT_KERNEL_SYMBOLS=1 \
WITHOUT_PROFILE=1 WITHOUT_SENDMAIL=1 WITHOUT_ATF=1 WITHOUT_LIB32=1
# Copy distfiles
mkdir -p release/usr/freebsd-dist
cp *.txz MANIFEST release/usr/freebsd-dist
# 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
cp ${.CURDIR}/rc.local release/etc
touch ${.TARGET}
bootonly: packagesystem
# Install system
mkdir -p bootonly
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
DESTDIR=${.OBJDIR}/bootonly WITHOUT_AMD=1 WITHOUT_AT=1 \
2013-09-30 17:23:45 +00:00
WITHOUT_GAMES=1 WITHOUT_GROFF=1 \
WITHOUT_INSTALLLIB=1 WITHOUT_LIB32=1 WITHOUT_MAIL=1 \
WITHOUT_NCP=1 WITHOUT_TOOLCHAIN=1 WITHOUT_PROFILE=1 \
WITHOUT_INSTALLIB=1 WITHOUT_RESCUE=1 WITHOUT_DICT=1 \
WITHOUT_KERNEL_SYMBOLS=1
# 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
cp ${.CURDIR}/rc.local bootonly/etc
dvd:
# Install system
mkdir -p ${.TARGET}
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
DESTDIR=${.OBJDIR}/${.TARGET} WITHOUT_RESCUE=1 WITHOUT_KERNEL_SYMBOLS=1
# Copy distfiles
mkdir -p ${.TARGET}/usr/freebsd-dist
cp *.txz MANIFEST ${.TARGET}/usr/freebsd-dist
# 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
cp ${.CURDIR}/rc.local ${.TARGET}/etc
touch ${.TARGET}
release.iso: disc1.iso
disc1.iso: system
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.TARGET} release
dvd1.iso: dvd pkg-stage
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.TARGET} dvd
bootonly.iso: bootonly
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.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}
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