Deleted Added
full compact
release.7 (92220) release.7 (92258)
1.\" Copyright (c) 2002
2.\" Murray Stokely <murray@FreeBSD.org>
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

--- 6 unchanged lines hidden (view full) ---

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.\"
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

--- 6 unchanged lines hidden (view full) ---

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 92220 2002-03-13 09:54:31Z murray $
25.\" $FreeBSD: head/share/man/man7/release.7 92258 2002-03-14 04:21:50Z murray $
26.\"
27.Dd March 12, 2002
28.Dt RELEASE 7
29.Os
30.Sh NAME
31.Nm release
26.\"
27.Dd March 12, 2002
28.Dt RELEASE 7
29.Os
30.Sh NAME
31.Nm release
32.Nd release building infrastructure
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 CDROM,
44installation floppies, and an FTP install directory.
45This command is aptly named
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 CDROM,
44installation floppies, and an FTP install directory.
45This command is aptly named
46.Dq make release .
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
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 make world .
52.Dq Li "make world" .
53The release build process requires that
54.Pa /usr/obj
55be populated with the output of
53The release build process requires that
54.Pa /usr/obj
55be populated with the output of
56.Dq make buildworld .
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
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.Ar release
73.Cm release
74target.
75.\" XXX: Some sort of introduction to this list? All the others have one.
74target.
75.\" XXX: Some sort of introduction to this list? All the others have one.
76.Bl -tag -width rerelease
77.It Ar release
76.Bl -tag -width ".Cm rerelease"
77.It Cm release
78Uses
78Uses
79.Dq make installworld
79.Dq Li "make installworld"
80to install a clean system into a
81.Xr chroot 8
82environment on the filesystem.
83Checks out the specified version of the source code and then rebuilds
84the entire system in the clean environment with
80to install a clean system into a
81.Xr chroot 8
82environment on the filesystem.
83Checks out the specified version of the source code and then rebuilds
84the entire system in the clean environment with
85.Dq make world .
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.
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 Ar rerelease
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
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 make release .
93.Dq Li "make release" .
94.El
95.Pp
96Targets called by
94.El
95.Pp
96Targets called by
97.Dq make release :
98.Bl -tag -width release.9
99.It Ar release.1
97.Dq Li "make release" :
98.Bl -tag -width ".Cm release.9"
99.It Cm release.1
100Cleans out the
101.Pa ${CHROOTDIR}/R
102directory and uses
100Cleans out the
101.Pa ${CHROOTDIR}/R
102directory and uses
103.Xr mtree 1
103.Xr mtree 8
104to build the directory hierarchy for the system.
104to build the directory hierarchy for the system.
105.It Ar release.2
105.It Cm release.2
106Installs the system into the distribution directories.
106Installs the system into the distribution directories.
107.It Ar release.3
107.It Cm release.3
108.\" XXX: This should either be "GENERIC kernel" (singular) or
109.\" XXX: "GENERIC and <some other> kernels".
110Makes and installs the
111.Pa GENERIC
112kernel.
108.\" XXX: This should either be "GENERIC kernel" (singular) or
109.\" XXX: "GENERIC and <some other> kernels".
110Makes and installs the
111.Pa GENERIC
112kernel.
113.It Ar release.4
113.It Cm release.4
114Uses
115.Xr crunchgen 1
116to build
114Uses
115.Xr crunchgen 1
116to build
117.Sq crunched
117.Dq crunched
118binaries to live on the installation floppies.
118binaries to live on the installation floppies.
119.It Ar release.5
119.It Cm release.5
120Builds synthetic distributions, and cleans up the previously built
121distribution trees.
120Builds synthetic distributions, and cleans up the previously built
121distribution trees.
122.It Ar release.6
122.It Cm release.6
123Creates tarballs of the assembled distribution trees.
123Creates tarballs of the assembled distribution trees.
124.It Ar release.7
124.It Cm release.7
125Makes source distributions.
125Makes source distributions.
126.It Ar release.8
126.It Cm release.8
127Creates the boot and MFS root floppies.
127Creates the boot and MFS root floppies.
128.It Ar release.9
128.It Cm release.9
129Creates the fixit floppy.
129Creates the fixit floppy.
130.It Ar ftp.1
130.It Cm ftp.1
131Sets up a suitable area for FTP installations.
131Sets up a suitable area for FTP installations.
132.It Ar cdrom.1
132.It Cm cdrom.1
133Sets up a suitable area to build CDROM images.
133Sets up a suitable area to build CDROM images.
134.It Ar iso.1
134.It Cm iso.1
135Builds two ISO images (installation and
135Builds two ISO images (installation and
136.Sq live
136.Dq live
137filesystem) from the CDROM release area
138(Disabled by default, see
139.Pa MAKE_ISOS
140below).
137filesystem) from the CDROM release area
138(Disabled by default, see
139.Pa MAKE_ISOS
140below).
141.It Ar doc.1
141.It Cm doc.1
142Builds all of the necessary tools to turn the
143.Fx
144Documentation Project source documents (SGML, XML) into HTML
145and text documents that will accompany the release.
146Also, builds and installs the actual user documentation.
147This includes the Handbook, FAQ, articles, and so on.
142Builds all of the necessary tools to turn the
143.Fx
144Documentation Project source documents (SGML, XML) into HTML
145and text documents that will accompany the release.
146Also, builds and installs the actual user documentation.
147This includes the Handbook, FAQ, articles, and so on.
148.It Ar doc.2
148.It Cm doc.2
149Builds the release documentation.
150This includes the release notes,
151hardware guide, and installation instructions.
152.El
153.Sh ENVIRONMENT
154Variables that must be specified:
149Builds the release documentation.
150This includes the release notes,
151hardware guide, and installation instructions.
152.El
153.Sh ENVIRONMENT
154Variables that must be specified:
155.Bl -tag -width RELEASETAG
155.Bl -tag -width ".Va RELEASETAG"
156.It Ev CHROOTDIR
157The directory to be used as the
158.Xr chroot 8
159environment for the entire release build.
160.\" XXX: I recommend against hardcoding specific numbers like "2.3" here;
161.\" XXX: perhaps it should be replaced with something to the effect of
162.\" XXX: "we don't know how much space you'll need, but make sure you have
163.\" XXX: at least 3 GB to be safe" (I know i'm still hardcoding a number,

--- 9 unchanged lines hidden (view full) ---

173which affects the output of
174.Xr uname 1 .
175.It Ev CVSROOT
176The location of the
177.Fx
178CVS repository.
179.It Ev RELEASETAG
180The CVS tag corresponding to the release that is to be built.
156.It Ev CHROOTDIR
157The directory to be used as the
158.Xr chroot 8
159environment for the entire release build.
160.\" XXX: I recommend against hardcoding specific numbers like "2.3" here;
161.\" XXX: perhaps it should be replaced with something to the effect of
162.\" XXX: "we don't know how much space you'll need, but make sure you have
163.\" XXX: at least 3 GB to be safe" (I know i'm still hardcoding a number,

--- 9 unchanged lines hidden (view full) ---

173which affects the output of
174.Xr uname 1 .
175.It Ev CVSROOT
176The location of the
177.Fx
178CVS repository.
179.It Ev RELEASETAG
180The CVS tag corresponding to the release that is to be built.
181If undefined, the release will be built from the HEAD of the CVS tree
181If undefined, the release will be built from the
182.Dv HEAD
183of the CVS tree
182(a
184(a
183.Sq -CURRENT snapshot ) .
185.Dq -CURRENT snapshot ) .
184.El
185.Pp
186Optional variables:
186.El
187.Pp
188Optional variables:
187.Bl -tag -width RELEASEDISTFILES
189.Bl -tag -width ".Ev RELEASEDISTFILES"
188.It Ev LOCAL_PATCHES
189A patch file against
190.Pa /usr/src
191that will be applied in the
192.Xr chroot 8
193environment before the release build begins.
194.It Ev PATCH_FLAGS
195Arguments for the
196.Xr patch 1
197command used to apply
190.It Ev LOCAL_PATCHES
191A patch file against
192.Pa /usr/src
193that will be applied in the
194.Xr chroot 8
195environment before the release build begins.
196.It Ev PATCH_FLAGS
197Arguments for the
198.Xr patch 1
199command used to apply
198.Ev LOCAL_PATCHES .
200.Ev LOCAL_PATCHES
201patch file.
199.It Ev MAKE_ISOS
200If defined, bootable ISO CDROM images will be created from the
201contents of the CDROM stage directory.
202.It Ev NODOC
203If set to
202.It Ev MAKE_ISOS
203If defined, bootable ISO CDROM images will be created from the
204contents of the CDROM stage directory.
205.It Ev NODOC
206If set to
204.Dq YES
207.Dq Li YES
205then the documentation will not be built.
206Due to the SGML-based
207toolchain and multiple languages supported by the
208.Fx
209Documentation Project, this may speed up the release build considerably.
210.It Ev NOPORTS
211If set to
208then the documentation will not be built.
209Due to the SGML-based
210toolchain and multiple languages supported by the
211.Fx
212Documentation Project, this may speed up the release build considerably.
213.It Ev NOPORTS
214If set to
212.Dq YES
215.Dq Li YES
213then the ports tree will be omitted from the release.
214.It Ev RELEASEDISTFILES
215The directory where the distribution files for ports required by the
216release build can be found.
217This may save a significant amount of time over downloading the
218distfiles through a slow link.
219.It Ev RELEASENOUPDATE
220If this variable is defined for
216then the ports tree will be omitted from the release.
217.It Ev RELEASEDISTFILES
218The directory where the distribution files for ports required by the
219release build can be found.
220This may save a significant amount of time over downloading the
221distfiles through a slow link.
222.It Ev RELEASENOUPDATE
223If this variable is defined for
221.Dq make rerelease ,
224.Dq Li "make rerelease" ,
222the source code will not be updated with
225the source code will not be updated with
223.Dq cvs up .
226.Dq Li "cvs update" .
224.El
225.Sh FILES
226.Bl -tag -compact
227.It Pa /etc/make.conf
228.It Pa /usr/doc/Makefile
229.It Pa /usr/doc/share/mk/doc.project.mk
230.It Pa /usr/ports/Mk/bsd.port.mk
231.It Pa /usr/ports/Mk/bsd.sites.mk

--- 20 unchanged lines hidden (view full) ---

252.Ed
253.Pp
254After running these commands, a complete system suitable for FTP or
255CDROM distribution is available in the
256.Pa /local3/release/R
257directory.
258.Pp
259The following sequence of commands can be used to build a
227.El
228.Sh FILES
229.Bl -tag -compact
230.It Pa /etc/make.conf
231.It Pa /usr/doc/Makefile
232.It Pa /usr/doc/share/mk/doc.project.mk
233.It Pa /usr/ports/Mk/bsd.port.mk
234.It Pa /usr/ports/Mk/bsd.sites.mk

--- 20 unchanged lines hidden (view full) ---

255.Ed
256.Pp
257After running these commands, a complete system suitable for FTP or
258CDROM distribution is available in the
259.Pa /local3/release/R
260directory.
261.Pp
262The following sequence of commands can be used to build a
260.Sq -CURRENT snapshot
263.Dq -CURRENT snapshot
261of a
262locally modified source tree:
263.Bd -literal -offset indent
264cd /usr/src
265cvs diff -u > /path/to/local.patch
266make buildworld
267cd release
268make release CHROOTDIR=/local3/release BUILDNAME=5.0-SNAPSHOT \\
264of a
265locally modified source tree:
266.Bd -literal -offset indent
267cd /usr/src
268cvs diff -u > /path/to/local.patch
269make buildworld
270cd release
271make release CHROOTDIR=/local3/release BUILDNAME=5.0-SNAPSHOT \\
269 CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch
272 CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch
270.Ed
271.Sh SEE ALSO
272.Xr cc 1 ,
273.Xr crunchgen 1 ,
273.Ed
274.Sh SEE ALSO
275.Xr cc 1 ,
276.Xr crunchgen 1 ,
277.Xr cvs 1 ,
274.Xr install 1 ,
275.Xr make 1 ,
278.Xr install 1 ,
279.Xr make 1 ,
276.Xr mtree 1 ,
277.Xr patch 1 ,
278.Xr uname 1 ,
280.Xr patch 1 ,
281.Xr uname 1 ,
282.Xr md 4 ,
279.Xr make.conf 5 ,
280.Xr build 7 ,
281.Xr ports 7 ,
283.Xr make.conf 5 ,
284.Xr build 7 ,
285.Xr ports 7 ,
282.Xr chroot 8
286.Xr chroot 8 ,
287.Xr mtree 8
283.Rs
284.%T FreeBSD Release Engineering
285.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/
286.Re
287.Rs
288.%T FreeBSD Release Engineering of Third Party Packages
289.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/
290.Re

--- 11 unchanged lines hidden (view full) ---

302As part of the
303.Fx 2.0
304release engineering effort, significant
305effort was spent getting
306.Pa src/release/Makefile
307into a shape where it could at least automate most of the tediousness
308of building a release in a sterile environment.
309.Pp
288.Rs
289.%T FreeBSD Release Engineering
290.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/
291.Re
292.Rs
293.%T FreeBSD Release Engineering of Third Party Packages
294.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/
295.Re

--- 11 unchanged lines hidden (view full) ---

307As part of the
308.Fx 2.0
309release engineering effort, significant
310effort was spent getting
311.Pa src/release/Makefile
312into a shape where it could at least automate most of the tediousness
313of building a release in a sterile environment.
314.Pp
310With its almost 1000 revisions spread over multiple branches, the CVS
315With its almost 1000 revisions spread over multiple branches, the
316.Xr cvs 1
311log of
312.Pa src/release/Makefile
313contains a vivid historical record of some
314of the hardships release engineers go through.
315.Sh AUTHORS
316.Pa src/release/Makefile
317log of
318.Pa src/release/Makefile
319contains a vivid historical record of some
320of the hardships release engineers go through.
321.Sh AUTHORS
322.Pa src/release/Makefile
317was originally written by Rod Grimes, Jordan Hubbard, and Poul-Henning Kamp.
323was originally written by
324.An -nosplit
325.An Rod Grimes ,
326.An Jordan Hubbard ,
327and
328.An Poul-Henning Kamp .
318This manual page was written by
319.An Murray Stokely Aq murray@FreeBSD.org .
329This manual page was written by
330.An Murray Stokely Aq murray@FreeBSD.org .