1.\" Copyright (c) 2002 Murray Stokely <murray@FreeBSD.org> 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\"
| 1.\" Copyright (c) 2002 Murray Stokely <murray@FreeBSD.org> 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\"
|
25.\" $FreeBSD: head/share/man/man7/release.7 107064 2002-11-18 20:31:35Z jhb $
| 25.\" $FreeBSD: head/share/man/man7/release.7 107788 2002-12-12 17:26:04Z ru $
|
26.\" 27.Dd March 12, 2002 28.Dt RELEASE 7 29.Os 30.Sh NAME 31.Nm release 32.Nd "release building infrastructure" 33.Sh DESCRIPTION 34.Fx 35provides a complete build environment suitable for users to make 36full releases of the 37.Fx 38operating system. 39All of the tools necessary to build a release are available from the 40CVS repository in 41.Pa src/release . 42A complete release can actually be built with only a single command, 43including the creation of ISO images suitable for burning to CD-ROM, 44installation floppies, and an FTP install directory. 45This command is aptly named 46.Dq Li "make release" . 47.Pp 48Before attempting to build a release, the user is expected to be 49familiar with the contents of 50.Xr build 7 , 51and should have experience upgrading systems from source with 52.Dq Li "make world" . 53The release build process requires that 54.Pa /usr/obj 55be populated with the output of 56.Dq Li "make buildworld" . 57This is necessary so that the object files for a complete system can 58be installed into a clean 59.Xr chroot 8 60environment. 61The release procedure also requires that the 62.Xr md 4 63(memory disk) device driver be present in the kernel 64(either by being compiled in or loaded as a module). 65.Pp 66This document does not cover source code management, quality 67assurance, or other aspects of the release engineering process. 68.Sh TARGETS 69The release makefile 70.Pq Pa src/release/Makefile 71is fairly abstruse. 72Most developers will only be concerned with the 73.Cm release 74target. 75.\" XXX: Some sort of introduction to this list? All the others have one. 76.Bl -tag -width ".Cm rerelease" 77.It Cm release 78Uses 79.Dq Li "make installworld" 80to install a clean system into a 81.Xr chroot 8
| 26.\" 27.Dd March 12, 2002 28.Dt RELEASE 7 29.Os 30.Sh NAME 31.Nm release 32.Nd "release building infrastructure" 33.Sh DESCRIPTION 34.Fx 35provides a complete build environment suitable for users to make 36full releases of the 37.Fx 38operating system. 39All of the tools necessary to build a release are available from the 40CVS repository in 41.Pa src/release . 42A complete release can actually be built with only a single command, 43including the creation of ISO images suitable for burning to CD-ROM, 44installation floppies, and an FTP install directory. 45This command is aptly named 46.Dq Li "make release" . 47.Pp 48Before attempting to build a release, the user is expected to be 49familiar with the contents of 50.Xr build 7 , 51and should have experience upgrading systems from source with 52.Dq Li "make world" . 53The release build process requires that 54.Pa /usr/obj 55be populated with the output of 56.Dq Li "make buildworld" . 57This is necessary so that the object files for a complete system can 58be installed into a clean 59.Xr chroot 8 60environment. 61The release procedure also requires that the 62.Xr md 4 63(memory disk) device driver be present in the kernel 64(either by being compiled in or loaded as a module). 65.Pp 66This document does not cover source code management, quality 67assurance, or other aspects of the release engineering process. 68.Sh TARGETS 69The release makefile 70.Pq Pa src/release/Makefile 71is fairly abstruse. 72Most developers will only be concerned with the 73.Cm release 74target. 75.\" XXX: Some sort of introduction to this list? All the others have one. 76.Bl -tag -width ".Cm rerelease" 77.It Cm release 78Uses 79.Dq Li "make installworld" 80to install a clean system into a 81.Xr chroot 8
|
82environment on the filesystem.
| 82environment on the file system.
|
83Checks out the specified version of the source code and then rebuilds 84the entire system in the clean environment with 85.Dq Li "make world" . 86The detailed steps that follow are then executed to package up the 87different distributions, build the installation floppy disks, build 88release documentation, and so on. 89.It Cm rerelease 90Assumes that the output of a release build has been manually modified, 91and performs the minimal number of steps to rebuild the release using 92the intermediate output of the previous 93.Dq Li "make release" . 94.It Cm floppies 95Generate a new set of boot floppies. 96This will call the 97.Cm release.5 , 98.Cm release.9 , 99and 100.Cm release.10 101targets to re-generate the floppy images of a previous 102.Dq Li "make release" . 103This is most often used to build custom boot floppies. 104.El 105.Pp 106Targets called by 107.Dq Li "make release" : 108.Bl -tag -width ".Cm release.10" 109.It Cm release.1 110Cleans out the 111.Pa ${CHROOTDIR}/R 112directory and uses 113.Xr mtree 8 114to build the directory hierarchy for the system. 115.It Cm release.2 116Installs the system into the distribution directories. 117.It Cm release.3 118Builds and installs 119.Dq crypto , 120.Dq krb4 121and 122.Dq krb5 123distributions. 124.It Cm release.4 125.\" XXX: We build more than one kernel. We build a stripped down 126.\" kernel for the boot media in addition to a full GENERIC kernel. 127Makes and installs the 128.Pa GENERIC 129kernel. 130.It Cm release.5 131Uses 132.Xr crunchgen 1 133to build 134.Dq crunched 135binaries to live on the installation floppies. 136.It Cm release.6 137Builds synthetic distributions, and cleans up the previously built 138distribution trees. 139.It Cm release.7 140Creates tarballs of the assembled distribution trees. 141.It Cm release.8 142Makes source distributions. 143.It Cm release.9 144Creates the boot and MFS root floppies. 145.It Cm release.10 146Creates the fixit floppy. 147.It Cm ftp.1 148Sets up a suitable area for FTP installations in 149.Pa ${CHROOTDIR}/R/ftp . 150.It Cm cdrom.1 151Sets up a suitable area to build CD-ROM images in 152.Pa ${CHROOTDIR}/R/cdrom . 153.It Cm iso.1 154Builds two ISO images (installation and 155.Dq live
| 83Checks out the specified version of the source code and then rebuilds 84the entire system in the clean environment with 85.Dq Li "make world" . 86The detailed steps that follow are then executed to package up the 87different distributions, build the installation floppy disks, build 88release documentation, and so on. 89.It Cm rerelease 90Assumes that the output of a release build has been manually modified, 91and performs the minimal number of steps to rebuild the release using 92the intermediate output of the previous 93.Dq Li "make release" . 94.It Cm floppies 95Generate a new set of boot floppies. 96This will call the 97.Cm release.5 , 98.Cm release.9 , 99and 100.Cm release.10 101targets to re-generate the floppy images of a previous 102.Dq Li "make release" . 103This is most often used to build custom boot floppies. 104.El 105.Pp 106Targets called by 107.Dq Li "make release" : 108.Bl -tag -width ".Cm release.10" 109.It Cm release.1 110Cleans out the 111.Pa ${CHROOTDIR}/R 112directory and uses 113.Xr mtree 8 114to build the directory hierarchy for the system. 115.It Cm release.2 116Installs the system into the distribution directories. 117.It Cm release.3 118Builds and installs 119.Dq crypto , 120.Dq krb4 121and 122.Dq krb5 123distributions. 124.It Cm release.4 125.\" XXX: We build more than one kernel. We build a stripped down 126.\" kernel for the boot media in addition to a full GENERIC kernel. 127Makes and installs the 128.Pa GENERIC 129kernel. 130.It Cm release.5 131Uses 132.Xr crunchgen 1 133to build 134.Dq crunched 135binaries to live on the installation floppies. 136.It Cm release.6 137Builds synthetic distributions, and cleans up the previously built 138distribution trees. 139.It Cm release.7 140Creates tarballs of the assembled distribution trees. 141.It Cm release.8 142Makes source distributions. 143.It Cm release.9 144Creates the boot and MFS root floppies. 145.It Cm release.10 146Creates the fixit floppy. 147.It Cm ftp.1 148Sets up a suitable area for FTP installations in 149.Pa ${CHROOTDIR}/R/ftp . 150.It Cm cdrom.1 151Sets up a suitable area to build CD-ROM images in 152.Pa ${CHROOTDIR}/R/cdrom . 153.It Cm iso.1 154Builds two ISO images (installation and 155.Dq live
|
156filesystem) from the CD-ROM release area
| 156file system) from the CD-ROM release area
|
157(disabled by default, see 158.Va MAKE_ISOS 159below). 160.It Cm doc.1 161Builds all of the necessary tools to turn the 162.Fx 163Documentation Project source documents (SGML, XML) into HTML 164and text documents that will accompany the release. 165Also, builds and installs the actual user documentation. 166This includes the Handbook, FAQ, articles, and so on. 167.It Cm doc.2 168Builds the release documentation. 169This includes the release notes, 170hardware guide, and installation instructions. 171.El 172.Sh ENVIRONMENT 173Variables that must be specified: 174.Bl -tag -width ".Va BUILDNAME" 175.It Va BUILDNAME 176The name of the release to be built. 177This is used to set the 178.Va RELEASE 179value in 180.Pa sys/conf/newvers.sh , 181which affects the output of 182.Xr uname 1 . 183.It Va CHROOTDIR 184The directory to be used as the 185.Xr chroot 8 186environment for the entire release build. 187.\" XXX: I recommend against hardcoding specific numbers like "2.3" here; 188.\" XXX: perhaps it should be replaced with something to the effect of 189.\" XXX: "we don't know how much space you'll need, but make sure you have 190.\" XXX: at least 3 GB to be safe" (I know i'm still hardcoding a number, 191.\" XXX: but at least it looks less like a decree and more like an estimate.
| 157(disabled by default, see 158.Va MAKE_ISOS 159below). 160.It Cm doc.1 161Builds all of the necessary tools to turn the 162.Fx 163Documentation Project source documents (SGML, XML) into HTML 164and text documents that will accompany the release. 165Also, builds and installs the actual user documentation. 166This includes the Handbook, FAQ, articles, and so on. 167.It Cm doc.2 168Builds the release documentation. 169This includes the release notes, 170hardware guide, and installation instructions. 171.El 172.Sh ENVIRONMENT 173Variables that must be specified: 174.Bl -tag -width ".Va BUILDNAME" 175.It Va BUILDNAME 176The name of the release to be built. 177This is used to set the 178.Va RELEASE 179value in 180.Pa sys/conf/newvers.sh , 181which affects the output of 182.Xr uname 1 . 183.It Va CHROOTDIR 184The directory to be used as the 185.Xr chroot 8 186environment for the entire release build. 187.\" XXX: I recommend against hardcoding specific numbers like "2.3" here; 188.\" XXX: perhaps it should be replaced with something to the effect of 189.\" XXX: "we don't know how much space you'll need, but make sure you have 190.\" XXX: at least 3 GB to be safe" (I know i'm still hardcoding a number, 191.\" XXX: but at least it looks less like a decree and more like an estimate.
|
192This filesystem should have at least 2.3 gigabytes of free space on the
| 192This file system should have at least 2.3 gigabytes of free space on the
|
193i386 architecture. 194.It Va CVSROOT 195The location of the 196.Fx 197CVS repository. 198This path name is in reference to the real system root, 199.Em not 200the root of the 201.Xr chroot 8 202directory tree. 203.El 204.Pp 205Optional variables: 206.Bl -tag -width ".Va PREFETCHDISTFILES" 207.It Va CVSCMDARGS 208Additional arguments for 209.Xr cvs 1 210.Ic checkout 211and 212.Ic update 213commands. 214For example, setting this variable to 215.Dq Li "-D '01/01/2002 00:00:00 GMT'" 216for 217.Dq Li "make release" 218or 219.Dq Li "make rerelease" 220will ask 221.Xr cvs 1 222to check out or update sources as of 00:00:00 GMT, January 1 2002, respectively. 223.It Va DOC_LANG 224The list of languages and encodings the SGML-based documentation 225should be built for. 226If not set, the documentation is built for all available languages. 227.It Va DOCRELEASETAG 228The CVS tag to use when checking out the documentation tree. 229Usually, 230the head of the documentation tree is used by default. 231If 232.Va RELEASETAG 233specifies a release tag, 234then the associated release version is used as the default instead. 235.It Va EXTLOCALDIR 236The directory that will be copied to 237.Pa ${CHROOTDIR}/usr/local . 238.It Va KERNEL_FLAGS 239The contents of this variable are passed to 240.Xr make 1 241when building kernels during the release build. 242For example, setting this variable to 243.Dq Li "-j 4" 244will instruct 245.Xr make 1 246to execute up to four processes at a time. 247.It Va KERNELS 248Specifies a list of additional kernel configurations to compile and 249install into the 250.Dq base 251distribution. 252Each kernel is installed into 253.Pa /boot/<config> 254so that it can be booted from the loader via 255.Dq Li "boot <config>" . 256.It Va LOCAL_PATCHES 257A patch file against 258.Pa /usr/src 259that will be applied in the 260.Xr chroot 8 261environment before the release build begins. 262.It Va PATCH_FLAGS 263Arguments for the 264.Xr patch 1 265command used to apply 266.Va LOCAL_PATCHES 267patch file. 268.It Va LOCAL_SCRIPT 269A script that will be run in the 270.Xr chroot 8 271environment immediately after any local patches are applied. 272.It Va MAKE_ISOS 273If defined, bootable ISO CD-ROM images will be created from the 274contents of the CD-ROM stage directory. 275.It Va NOCDROM 276If defined, the CD-ROM stage directories will not be created. 277.It Va NODOC 278If set to 279.Dq Li YES , 280the SGML-based documentation from the 281.Fx 282Documentation Project will not be built. 283However, the 284.Dq doc 285distribution will still be created with the minimal documentation set 286provided in 287.Pa src/share/doc . 288.It Va NO_FLOPPIES 289If defined, no floppy disk image files will be created. 290.It Va NOPORTS 291If set to 292.Dq Li YES 293then the Ports Collection will be omitted from the release. 294.It Va NOPORTREADMES 295If defined, readme files will not be created for each individual port 296in the Ports Collection. 297The default behavior is for 298.Dq Li "make release" 299to run 300.Dq Li "make readmes" 301from 302.Pa ${CHROOTDIR}/usr/ports , 303which can be a very time consuming operation. 304.It Va PORTSRELEASETAG 305The CVS tag to use when checking out the ports tree. 306Usually, 307the head of the ports tree is used by default. 308If 309.Va RELEASETAG 310specifies a release tag, 311then the associated release version is used as the default instead. 312.It Va PREFETCHDISTFILES 313If this variable is defined, 314then distfiles needed during the release build will be downloaded prior to 315entering the 316.Xr chroot 8 317environment. 318Note that this is done after any distfiles are obtained via 319.Va RELEASEDISTFILES . 320.It Va RELEASEDISTFILES 321The directory where the distribution files for ports required by the 322release build can be found. 323This may save a significant amount of time over downloading the 324distfiles through a slow link. 325.It Va RELEASENOUPDATE 326If this variable is defined for 327.Dq Li "make rerelease" , 328the source code will not be updated with 329.Dq Li "cvs update" . 330.It Va RELEASETAG 331The CVS tag corresponding to the release that is to be built. 332If undefined, the release will be built from the 333.Dv HEAD 334of the CVS tree 335(a 336.Dq "-CURRENT snapshot" ) . 337.It Va TARGET_ARCH 338The target machine processor architecture. 339This is analogous to the 340.Dq Nm uname Fl p 341output. 342Set this to cross-build for a different architecture. 343.It Va TARGET 344The target hardware platform. 345This is analogous to the 346.Dq Nm uname Fl m 347output. 348This is necessary to cross-build some target architectures. 349For example, cross-building for PC98 machines requires 350.Va TARGET_ARCH Ns = Ns Li i386 351and 352.Va TARGET Ns = Ns Li pc98 . 353.It Va WORLD_FLAGS 354The contents of this variable are passed to 355.Xr make 1 356when building world during the release build. 357For example, setting this variable to 358.Dq Li "-j 4" 359will instruct 360.Xr make 1 361to execute up to four processes at a time. 362.El 363.Sh FILES 364.Bl -tag -compact 365.It Pa /etc/make.conf 366.It Pa /usr/doc/Makefile 367.It Pa /usr/doc/share/mk/doc.project.mk 368.It Pa /usr/ports/Mk/bsd.port.mk 369.It Pa /usr/ports/Mk/bsd.sites.mk 370.It Pa /usr/share/examples/etc/make.conf 371.It Pa /usr/src/Makefile 372.It Pa /usr/src/Makefile.inc1 373.It Pa /usr/src/release/Makefile 374.It Pa /usr/src/release/${arch}/drivers.conf 375.It Pa /usr/src/release/${arch}/boot_crunch.conf 376.It Pa /usr/src/release/${arch}/fixit_crunch.conf 377.El 378.Sh EXAMPLES 379The following sequence of commands was used to build the 380.Fx 4.5 381release: 382.Bd -literal -offset indent 383cd /usr 384cvs co -rRELENG_4_5_0_RELEASE src 385cd src 386make buildworld 387cd release 388make release CHROOTDIR=/local3/release BUILDNAME=4.5-RELEASE \\ 389 CVSROOT=/host/cvs/usr/home/ncvs RELEASETAG=RELENG_4_5_0_RELEASE 390.Ed 391.Pp 392After running these commands, a complete system suitable for FTP or 393CD-ROM distribution is available in the 394.Pa /local3/release/R 395directory. 396.Pp 397The following sequence of commands can be used to build a 398.Dq "-CURRENT snapshot" 399of a 400locally modified source tree: 401.Bd -literal -offset indent 402cd /usr/src 403cvs diff -u > /path/to/local.patch 404make buildworld 405cd release 406make release CHROOTDIR=/local3/release BUILDNAME=5.0-CURRENT \\ 407 CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch 408.Ed 409.Sh SEE ALSO 410.Xr cc 1 , 411.Xr crunchgen 1 , 412.Xr cvs 1 , 413.Xr install 1 , 414.Xr make 1 , 415.Xr patch 1 , 416.Xr uname 1 , 417.Xr md 4 , 418.Xr drivers.conf 5 , 419.Xr make.conf 5 , 420.Xr build 7 , 421.Xr ports 7 , 422.Xr chroot 8 , 423.Xr mtree 8 424.Rs 425.%T "FreeBSD Release Engineering" 426.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/ 427.Re 428.Rs 429.%T "FreeBSD Release Engineering of Third Party Packages" 430.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/ 431.Re 432.Rs 433.%T "FreeBSD Developers' Handbook" 434.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/ 435.Re 436.Sh HISTORY 437.Fx 4381.x 439used a manual checklist, compiled by 440.An Rod Grimes , 441to produce a release. 442Apart from being incomplete, the list put a lot of specific demands on
| 193i386 architecture. 194.It Va CVSROOT 195The location of the 196.Fx 197CVS repository. 198This path name is in reference to the real system root, 199.Em not 200the root of the 201.Xr chroot 8 202directory tree. 203.El 204.Pp 205Optional variables: 206.Bl -tag -width ".Va PREFETCHDISTFILES" 207.It Va CVSCMDARGS 208Additional arguments for 209.Xr cvs 1 210.Ic checkout 211and 212.Ic update 213commands. 214For example, setting this variable to 215.Dq Li "-D '01/01/2002 00:00:00 GMT'" 216for 217.Dq Li "make release" 218or 219.Dq Li "make rerelease" 220will ask 221.Xr cvs 1 222to check out or update sources as of 00:00:00 GMT, January 1 2002, respectively. 223.It Va DOC_LANG 224The list of languages and encodings the SGML-based documentation 225should be built for. 226If not set, the documentation is built for all available languages. 227.It Va DOCRELEASETAG 228The CVS tag to use when checking out the documentation tree. 229Usually, 230the head of the documentation tree is used by default. 231If 232.Va RELEASETAG 233specifies a release tag, 234then the associated release version is used as the default instead. 235.It Va EXTLOCALDIR 236The directory that will be copied to 237.Pa ${CHROOTDIR}/usr/local . 238.It Va KERNEL_FLAGS 239The contents of this variable are passed to 240.Xr make 1 241when building kernels during the release build. 242For example, setting this variable to 243.Dq Li "-j 4" 244will instruct 245.Xr make 1 246to execute up to four processes at a time. 247.It Va KERNELS 248Specifies a list of additional kernel configurations to compile and 249install into the 250.Dq base 251distribution. 252Each kernel is installed into 253.Pa /boot/<config> 254so that it can be booted from the loader via 255.Dq Li "boot <config>" . 256.It Va LOCAL_PATCHES 257A patch file against 258.Pa /usr/src 259that will be applied in the 260.Xr chroot 8 261environment before the release build begins. 262.It Va PATCH_FLAGS 263Arguments for the 264.Xr patch 1 265command used to apply 266.Va LOCAL_PATCHES 267patch file. 268.It Va LOCAL_SCRIPT 269A script that will be run in the 270.Xr chroot 8 271environment immediately after any local patches are applied. 272.It Va MAKE_ISOS 273If defined, bootable ISO CD-ROM images will be created from the 274contents of the CD-ROM stage directory. 275.It Va NOCDROM 276If defined, the CD-ROM stage directories will not be created. 277.It Va NODOC 278If set to 279.Dq Li YES , 280the SGML-based documentation from the 281.Fx 282Documentation Project will not be built. 283However, the 284.Dq doc 285distribution will still be created with the minimal documentation set 286provided in 287.Pa src/share/doc . 288.It Va NO_FLOPPIES 289If defined, no floppy disk image files will be created. 290.It Va NOPORTS 291If set to 292.Dq Li YES 293then the Ports Collection will be omitted from the release. 294.It Va NOPORTREADMES 295If defined, readme files will not be created for each individual port 296in the Ports Collection. 297The default behavior is for 298.Dq Li "make release" 299to run 300.Dq Li "make readmes" 301from 302.Pa ${CHROOTDIR}/usr/ports , 303which can be a very time consuming operation. 304.It Va PORTSRELEASETAG 305The CVS tag to use when checking out the ports tree. 306Usually, 307the head of the ports tree is used by default. 308If 309.Va RELEASETAG 310specifies a release tag, 311then the associated release version is used as the default instead. 312.It Va PREFETCHDISTFILES 313If this variable is defined, 314then distfiles needed during the release build will be downloaded prior to 315entering the 316.Xr chroot 8 317environment. 318Note that this is done after any distfiles are obtained via 319.Va RELEASEDISTFILES . 320.It Va RELEASEDISTFILES 321The directory where the distribution files for ports required by the 322release build can be found. 323This may save a significant amount of time over downloading the 324distfiles through a slow link. 325.It Va RELEASENOUPDATE 326If this variable is defined for 327.Dq Li "make rerelease" , 328the source code will not be updated with 329.Dq Li "cvs update" . 330.It Va RELEASETAG 331The CVS tag corresponding to the release that is to be built. 332If undefined, the release will be built from the 333.Dv HEAD 334of the CVS tree 335(a 336.Dq "-CURRENT snapshot" ) . 337.It Va TARGET_ARCH 338The target machine processor architecture. 339This is analogous to the 340.Dq Nm uname Fl p 341output. 342Set this to cross-build for a different architecture. 343.It Va TARGET 344The target hardware platform. 345This is analogous to the 346.Dq Nm uname Fl m 347output. 348This is necessary to cross-build some target architectures. 349For example, cross-building for PC98 machines requires 350.Va TARGET_ARCH Ns = Ns Li i386 351and 352.Va TARGET Ns = Ns Li pc98 . 353.It Va WORLD_FLAGS 354The contents of this variable are passed to 355.Xr make 1 356when building world during the release build. 357For example, setting this variable to 358.Dq Li "-j 4" 359will instruct 360.Xr make 1 361to execute up to four processes at a time. 362.El 363.Sh FILES 364.Bl -tag -compact 365.It Pa /etc/make.conf 366.It Pa /usr/doc/Makefile 367.It Pa /usr/doc/share/mk/doc.project.mk 368.It Pa /usr/ports/Mk/bsd.port.mk 369.It Pa /usr/ports/Mk/bsd.sites.mk 370.It Pa /usr/share/examples/etc/make.conf 371.It Pa /usr/src/Makefile 372.It Pa /usr/src/Makefile.inc1 373.It Pa /usr/src/release/Makefile 374.It Pa /usr/src/release/${arch}/drivers.conf 375.It Pa /usr/src/release/${arch}/boot_crunch.conf 376.It Pa /usr/src/release/${arch}/fixit_crunch.conf 377.El 378.Sh EXAMPLES 379The following sequence of commands was used to build the 380.Fx 4.5 381release: 382.Bd -literal -offset indent 383cd /usr 384cvs co -rRELENG_4_5_0_RELEASE src 385cd src 386make buildworld 387cd release 388make release CHROOTDIR=/local3/release BUILDNAME=4.5-RELEASE \\ 389 CVSROOT=/host/cvs/usr/home/ncvs RELEASETAG=RELENG_4_5_0_RELEASE 390.Ed 391.Pp 392After running these commands, a complete system suitable for FTP or 393CD-ROM distribution is available in the 394.Pa /local3/release/R 395directory. 396.Pp 397The following sequence of commands can be used to build a 398.Dq "-CURRENT snapshot" 399of a 400locally modified source tree: 401.Bd -literal -offset indent 402cd /usr/src 403cvs diff -u > /path/to/local.patch 404make buildworld 405cd release 406make release CHROOTDIR=/local3/release BUILDNAME=5.0-CURRENT \\ 407 CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch 408.Ed 409.Sh SEE ALSO 410.Xr cc 1 , 411.Xr crunchgen 1 , 412.Xr cvs 1 , 413.Xr install 1 , 414.Xr make 1 , 415.Xr patch 1 , 416.Xr uname 1 , 417.Xr md 4 , 418.Xr drivers.conf 5 , 419.Xr make.conf 5 , 420.Xr build 7 , 421.Xr ports 7 , 422.Xr chroot 8 , 423.Xr mtree 8 424.Rs 425.%T "FreeBSD Release Engineering" 426.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/ 427.Re 428.Rs 429.%T "FreeBSD Release Engineering of Third Party Packages" 430.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/ 431.Re 432.Rs 433.%T "FreeBSD Developers' Handbook" 434.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/ 435.Re 436.Sh HISTORY 437.Fx 4381.x 439used a manual checklist, compiled by 440.An Rod Grimes , 441to produce a release. 442Apart from being incomplete, the list put a lot of specific demands on
|
443available filesystems and was quite torturous to execute.
| 443available file systems and was quite torturous to execute.
|
444.Pp 445As part of the 446.Fx 2.0 447release engineering effort, significant 448effort was spent getting 449.Pa src/release/Makefile 450into a shape where it could at least automate most of the tediousness 451of building a release in a sterile environment. 452.Pp 453With its almost 1000 revisions spread over multiple branches, the 454.Xr cvs 1 455log of 456.Pa src/release/Makefile 457contains a vivid historical record of some 458of the hardships release engineers go through. 459.Sh AUTHORS 460.Pa src/release/Makefile 461was originally written by 462.An -nosplit 463.An Rod Grimes , 464.An Jordan Hubbard , 465and 466.An Poul-Henning Kamp . 467This manual page was written by 468.An Murray Stokely Aq murray@FreeBSD.org .
| 444.Pp 445As part of the 446.Fx 2.0 447release engineering effort, significant 448effort was spent getting 449.Pa src/release/Makefile 450into a shape where it could at least automate most of the tediousness 451of building a release in a sterile environment. 452.Pp 453With its almost 1000 revisions spread over multiple branches, the 454.Xr cvs 1 455log of 456.Pa src/release/Makefile 457contains a vivid historical record of some 458of the hardships release engineers go through. 459.Sh AUTHORS 460.Pa src/release/Makefile 461was originally written by 462.An -nosplit 463.An Rod Grimes , 464.An Jordan Hubbard , 465and 466.An Poul-Henning Kamp . 467This manual page was written by 468.An Murray Stokely Aq murray@FreeBSD.org .
|