Release Engineering
Developers occasionally need to build releases to test changes to the installer, etc. It can also be useful to make custom CDs. This describes the process to make ISOs used to install MidnightBSD. This process differs from making a live CD.
To successfully build a release, you must first populate /usr/obj by running make buildworld. The release target requires several variables be set properly to build a release:
CHROOTDIR - The directory to be used as the chroot environment for the entire release build.
BUILDNAME - The name of the release to be built.
CVSROOT - The location of a CVS Repository.
RELEASETAG - The CVS tag corresponding to the release you would like to build.
If RELEASETAG is omitted, then the release will be built from the HEAD (a.k.a. -CURRENT) branch. Releases built from this branch are normally referred to as “-CURRENT snapshots”.
make release CHROOTDIR=/usr/release \
BUILDNAME=0.1-RELEASE \
CVSROOT=/home/cvs/ \
RELEASETAG=RELENG_0_1_RELEASE
Additional fields are required in some cases. MAKE_ISOS=yes NO_FLOPPIES=yes NOPORTS=yes NODOC=yes
There are also cases uses for release that point to a pkg split target (mports packages) that are required for packages to be included. NOPORTS=yes just disables the tarball of the mports tree.
The release Makefile can be broken down into several distinct steps.
* Creation of a sanitized system environment in a separate directory hierarchy with “make installworld”.
* Checkout from CVS of a clean version of the system source, documentation, and ports into the release build hierarchy.
* Population of /etc and /dev in the chrooted environment.
* chroot into the release build hierarchy, to make it harder for the outside environment to taint this build.
* make world in the chrooted environment.
* Build of Kerberos-related binaries.
* Build GENERIC kernel.
* Creation of a staging directory tree where the binary distributions will be built and packaged.
* Build and installation of the documentation toolchain needed to convert the documentation source (SGML) into HTML and text documents that will accompany the release.
* Build and installation of the actual documentation (user manuals, tutorials, release notes, hardware compatibility lists, and so on.)
* Build of the “crunched” binaries used for installation floppies.
* Package up distribution tarballs of the binaries and sources.
* Create the boot media and a “fixit” floppy.
* Create FTP installation hierarchy.
* (optionally) Create ISO images for CDROM/DVD media.
For more information about the release build infrastructure, please see release(7).
Portions taken from http://www.freebsd.org/doc/en_US.ISO8859-1/articles/releng/release-build.html
When creating a release, you need to edit src/sys/conf/newvers.sh and src/sys/sys/param.h accordingly.