xref: /freebsd/share/man/man7/release.7 (revision e0436612a9617ac9fe1bcd95a6de04fcd26aba4d)
1afb33690SMurray Stokely.\" Copyright (c) 2002 Murray Stokely <murray@FreeBSD.org>
2afb33690SMurray Stokely.\" All rights reserved.
3de26e0adSMurray Stokely.\"
4de26e0adSMurray Stokely.\" Redistribution and use in source and binary forms, with or without
5de26e0adSMurray Stokely.\" modification, are permitted provided that the following conditions
6de26e0adSMurray Stokely.\" are met:
7de26e0adSMurray Stokely.\" 1. Redistributions of source code must retain the above copyright
8de26e0adSMurray Stokely.\"    notice, this list of conditions and the following disclaimer.
9de26e0adSMurray Stokely.\" 2. Redistributions in binary form must reproduce the above copyright
10de26e0adSMurray Stokely.\"    notice, this list of conditions and the following disclaimer in the
11de26e0adSMurray Stokely.\"    documentation and/or other materials provided with the distribution.
12de26e0adSMurray Stokely.\"
13de26e0adSMurray Stokely.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
14de26e0adSMurray Stokely.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15de26e0adSMurray Stokely.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16de26e0adSMurray Stokely.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
17de26e0adSMurray Stokely.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18de26e0adSMurray Stokely.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19de26e0adSMurray Stokely.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20de26e0adSMurray Stokely.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21de26e0adSMurray Stokely.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22de26e0adSMurray Stokely.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23de26e0adSMurray Stokely.\" SUCH DAMAGE.
24de26e0adSMurray Stokely.\"
25de26e0adSMurray Stokely.\" $FreeBSD$
26de26e0adSMurray Stokely.\"
27*e0436612SGlen Barber.Dd March 5, 2014
28de26e0adSMurray Stokely.Dt RELEASE 7
29de26e0adSMurray Stokely.Os
30de26e0adSMurray Stokely.Sh NAME
31de26e0adSMurray Stokely.Nm release
32afb33690SMurray Stokely.Nd "release building infrastructure"
33de26e0adSMurray Stokely.Sh DESCRIPTION
34de26e0adSMurray Stokely.Fx
35de26e0adSMurray Stokelyprovides a complete build environment suitable for users to make
36de26e0adSMurray Stokelyfull releases of the
37de26e0adSMurray Stokely.Fx
38994c71f0SMurray Stokelyoperating system.
39de26e0adSMurray StokelyAll of the tools necessary to build a release are available from the
40feacd98eSNathan Whitehorn.Fx
41feacd98eSNathan Whitehornsource code repository in
42de26e0adSMurray Stokely.Pa src/release .
43de26e0adSMurray StokelyA complete release can actually be built with only a single command,
44eee69fccSMurray Stokelyincluding the creation of ISO images suitable for burning to CD-ROM,
45feacd98eSNathan Whitehornmemory stick images, and an FTP install directory.
46de26e0adSMurray StokelyThis command is aptly named
47afb33690SMurray Stokely.Dq Li "make release" .
48de26e0adSMurray Stokely.Pp
49e8423d00SNathan WhitehornFor some users, it may be desirable to provide an absolutely clean
50e8423d00SNathan Whitehornbuild environment, with no local modifications to the source tree or to
51e8423d00SNathan Whitehorn.Xr make.conf 5 ,
52e8423d00SNathan Whitehornand with clean checkouts of specific versions of the doc, src, and ports
53ebe27856SGlen Barbertrees.
54ebe27856SGlen BarberFor this purpose, a script
55ebe27856SGlen Barber.Pq Pa src/release/release.sh
56e8423d00SNathan Whitehornis provided to automate these checkouts and then execute
57e8423d00SNathan Whitehorn.Dq Li "make release"
58e8423d00SNathan Whitehornin a clean
59e8423d00SNathan Whitehorn.Xr chroot 8 .
60e8423d00SNathan Whitehorn.Pp
61de26e0adSMurray StokelyBefore attempting to build a release, the user is expected to be
62994c71f0SMurray Stokelyfamiliar with the contents of
63de26e0adSMurray Stokely.Xr build 7 ,
6447280c4bSRuslan Ermilovand should have experience upgrading systems from source.
65e8423d00SNathan Whitehorn.Pp
66de26e0adSMurray StokelyThe release build process requires that
67de26e0adSMurray Stokely.Pa /usr/obj
68de26e0adSMurray Stokelybe populated with the output of
69d408a341SNathan Whitehorn.Dq Li "make buildworld"
70d408a341SNathan Whitehornand
71d408a341SNathan Whitehorn.Dq Li "make buildkernel" .
72e8423d00SNathan WhitehornThis is necessary to provide the object files for the release or, when
73e8423d00SNathan Whitehornusing
74ebe27856SGlen Barber.Pa release.sh ,
75e8423d00SNathan Whitehornso that the object files for a complete system can be installed into a clean
76de26e0adSMurray Stokely.Xr chroot 8
77ebe27856SGlen Barberenvironment.
78ebe27856SGlen Barber.Pp
79ebe27856SGlen BarberIf the target release build is for a different architecture or machine type,
80ebe27856SGlen Barberthe
81ebe27856SGlen Barber.Va TARGET
82ebe27856SGlen Barberand
83ebe27856SGlen Barber.Va TARGET_ARCH
84ebe27856SGlen Barbervariables must be used.
85ebe27856SGlen BarberSee the supported
86ebe27856SGlen Barber.Fa release.conf
87ebe27856SGlen Barbervariables for more information.
88ebe27856SGlen Barber.Pp
89e8423d00SNathan WhitehornThe release procedure on some architectures may also require that the
90994c71f0SMurray Stokely.Xr md 4
91994c71f0SMurray Stokely(memory disk) device driver be present in the kernel
92ebe27856SGlen Barber.Pq either by being compiled in or available as a module .
93de26e0adSMurray Stokely.Pp
94de26e0adSMurray StokelyThis document does not cover source code management, quality
95de26e0adSMurray Stokelyassurance, or other aspects of the release engineering process.
96e8423d00SNathan Whitehorn.Sh CLEAN RELEASE GENERATION
97ebe27856SGlen BarberOfficial releases of
98ebe27856SGlen Barber.Fx
99ebe27856SGlen Barberare produced in a totally clean environment to
100e8423d00SNathan Whitehornensure consistency between the versions of the src, ports, and doc trees
101ebe27856SGlen Barberand to avoid contamination from the host system
102ebe27856SGlen Barber.Po such as local patches, changes
103e8423d00SNathan Whitehornto
104e8423d00SNathan Whitehorn.Xr make.conf 5 ,
105ebe27856SGlen Barberetc.
106ebe27856SGlen Barber.Pc .
107ebe27856SGlen BarberThis is accomplished using the wrapper script
108ebe27856SGlen Barber.Pa src/release/release.sh .
109e8423d00SNathan Whitehorn.Pp
110ebe27856SGlen Barber.Ic release.sh
111ebe27856SGlen Barber.Op Fl c Ar release.conf
112e8423d00SNathan Whitehorn.Pp
113ebe27856SGlen Barber.Ic release.sh
114ebe27856SGlen Barberchecks out the
115ebe27856SGlen Barber.Li src/ ,
116ebe27856SGlen Barber.Li ports/ ,
117ebe27856SGlen Barberand
118ebe27856SGlen Barber.Li doc/
119ebe27856SGlen Barbertrees to
120ebe27856SGlen Barber.Va CHROOTDIR ,
121ebe27856SGlen Barberthen calls
122ebe27856SGlen Barber.Dq Li "make buildworld"
123ebe27856SGlen Barberand
124e8423d00SNathan Whitehorn.Dq Li "make installworld"
125e8423d00SNathan Whitehornto generate a
126e8423d00SNathan Whitehorn.Xr chroot 8
127ebe27856SGlen Barberenvironment.
128ebe27856SGlen BarberNext,
129e8423d00SNathan Whitehorn.Dq Li "make release"
130ebe27856SGlen Barberis run within the
131e8423d00SNathan Whitehorn.Xr chroot 8
132e8423d00SNathan Whitehornenvironment and places the result in
133ebe27856SGlen Barber.Pa $CHROOTDIR/R .
134e8423d00SNathan Whitehorn.Pp
135ebe27856SGlen BarberThe optional
136ebe27856SGlen Barber.Fa release.conf
137ebe27856SGlen Barberconfiguration file supports the following variables:
138ebe27856SGlen Barber.Bl -tag -width Ev
139ebe27856SGlen Barber.It Va CHROOTDIR
140ebe27856SGlen BarberThe directory within which the release will be built.
141*e0436612SGlen Barber.It Va CHROOT_MAKEENV
142*e0436612SGlen BarberAdditional
143*e0436612SGlen Barber.Xr make 1
144*e0436612SGlen Barberarguments to pass through, which directly affect the
145*e0436612SGlen Barbertuning of the build chroot.
146ebe27856SGlen Barber.It Va SVNROOT
147ebe27856SGlen BarberThe
148ebe27856SGlen Barber.Xr svn 1
149ebe27856SGlen Barberhost used to check out the various trees.
150ebe27856SGlen BarberDefaults to
151ebe27856SGlen Barber.Pa svn://svn.FreeeBSD.org .
152ebe27856SGlen Barber.It Va SRCBRANCH
153ebe27856SGlen BarberThe
154ebe27856SGlen Barber.Li src/
155ebe27856SGlen Barberbranch to use.
156ebe27856SGlen BarberDefaults to
157bda59883SGlen Barber.Va head/@rHEAD .
158ebe27856SGlen Barber.It Va DOCBRANCH
159ebe27856SGlen BarberThe
160ebe27856SGlen Barber.Li doc/
161ebe27856SGlen Barberbranch to use.
162ebe27856SGlen BarberDefaults to
163bda59883SGlen Barber.Va head/@rHEAD .
164ebe27856SGlen Barber.It Va PORTBRANCH
165ebe27856SGlen BarberThe
166ebe27856SGlen Barber.Li ports/
167ebe27856SGlen Barberbranch to use.
168ebe27856SGlen BarberDefaults to
169bda59883SGlen Barber.Va head/@rHEAD .
170ebe27856SGlen Barber.It Va TARGET
171bc1af85cSGlen BarberThe target machine type for cross-building a release.
172ebe27856SGlen Barber.It Va TARGET_ARCH
173bc1af85cSGlen BarberThe target machine architecture for cross-building a release.
174ebe27856SGlen Barber.Pp
175ebe27856SGlen BarberFor the supported list of
176ebe27856SGlen Barber.Va TARGET
177ebe27856SGlen Barberand
178ebe27856SGlen Barber.Va TARGET_ARCH
179ebe27856SGlen Barbercombinations, consult the output of
180ebe27856SGlen Barber.Dq make targets
181ebe27856SGlen Barberas documented in
182ebe27856SGlen Barber.Xr build 7 .
183ebe27856SGlen Barber.It Va KERNEL
184ebe27856SGlen BarberThe target kernel configuration to use.
185ebe27856SGlen BarberDefaults to
186ebe27856SGlen Barber.Va GENERIC .
187ebe27856SGlen BarberMultiple
188ebe27856SGlen Barber.Va KERNEL
189ebe27856SGlen Barberentries may be specified.
190ebe27856SGlen Barber.It Va MAKE_CONF
191ebe27856SGlen BarberThe
192ebe27856SGlen Barber.Xr make.conf 5
193ebe27856SGlen Barberto use for the release build.
194ebe27856SGlen BarberDefaults to
195ebe27856SGlen Barber.Fa /dev/null
196ebe27856SGlen Barberto prevent polluting the release with local system changes.
197ebe27856SGlen Barber.It Va SRC_CONF
198ebe27856SGlen BarberThe
199ebe27856SGlen Barber.Xr src.conf 5
200ebe27856SGlen Barberto use for the release build.
201ebe27856SGlen BarberDefaults to
202ebe27856SGlen Barber.Fa /dev/null
203ebe27856SGlen Barberto prevent polluting the release with local system changes.
204ebe27856SGlen Barber.It Va MAKE_FLAGS
205ebe27856SGlen BarberAdditional flags to pass to
206ebe27856SGlen Barber.Xr make 1 .
207ebe27856SGlen Barber.It Va WORLD_FLAGS
208ebe27856SGlen BarberAdditional flags to pass to
209e8423d00SNathan Whitehorn.Xr make 1
210ebe27856SGlen Barberduring the
211ebe27856SGlen Barber.Dq buildworld
212ebe27856SGlen Barberphase.
213ebe27856SGlen BarberDefaults to setting the number of
214de17cbccSHiroki Sato.Xr make 1
215ebe27856SGlen Barberjobs
216ebe27856SGlen Barber.Pq Ar -j
217bc1af85cSGlen Barberto the number of CPUs available on a SMP-capable system.
218ebe27856SGlen Barber.It Va KERNEL_FLAGS
219ebe27856SGlen BarberAdditional flags to pass to
220ebe27856SGlen Barber.Xr make 1
221ebe27856SGlen Barberduring the
222ebe27856SGlen Barber.Dq buildkernel
223ebe27856SGlen Barberphase.
224ebe27856SGlen BarberDefaults to setting the number of
225ebe27856SGlen Barber.Xr make 1
226ebe27856SGlen Barberjobs
227ebe27856SGlen Barber.Pq Ar -j
228bc1af85cSGlen Barberto half the number of CPUs available on a SMP-capable system.
229ebe27856SGlen Barber.It Va NODOC
230ebe27856SGlen BarberSet to a non-empty value to skip the
231ebe27856SGlen Barber.Li doc/
232ebe27856SGlen Barbertree checkout.
233ebe27856SGlen BarberWhen set,
234ebe27856SGlen Barber.Va NODOC
235ebe27856SGlen Barberwill prevent the
236ebe27856SGlen Barber.Fa doc.txz
237ebe27856SGlen Barberdistribution package from being created.
238ebe27856SGlen Barber.It Va NOPORTS
239ebe27856SGlen BarberSet to a non-empty value to skip the
240ebe27856SGlen Barber.Li ports/
241ebe27856SGlen Barbertree checkout.
242ebe27856SGlen BarberWhen set,
243ebe27856SGlen Barber.Va NOPORTS
244ebe27856SGlen Barberwill prevent the
245ebe27856SGlen Barber.Fa ports.txz
246ebe27856SGlen Barberdistribution package from being created.
247ebe27856SGlen BarberSetting this also sets
248ebe27856SGlen Barber.Va NODOC .
249f7f650c7SGlen Barber.It Va WITH_DVD
250f7f650c7SGlen BarberSet to a non-empty value to include the
251f7f650c7SGlen Barber.Cm dvdrom
252f7f650c7SGlen Barbertarget.
2539bb84a63SGlen Barber.It Va VCSCMD
2549bb84a63SGlen BarberThe command run to obtain the source trees.
2559bb84a63SGlen BarberDefaults to
2569bb84a63SGlen Barber.Qq Cm svn checkout .
257*e0436612SGlen Barber.It Va CHROOTBUILD_SKIP
258*e0436612SGlen BarberIf defined, the
259*e0436612SGlen Barber.Li buildworld ,
260*e0436612SGlen Barber.Li installworld ,
261*e0436612SGlen Barberand
262*e0436612SGlen Barber.Li distribution
263*e0436612SGlen Barberstages of the
264*e0436612SGlen Barber.Xr chroot 8
265*e0436612SGlen Barberbuild environment setup are skipped.
266*e0436612SGlen BarberThis is intended solely for cases where the
267*e0436612SGlen Barber.Xr chroot 8
268*e0436612SGlen Barberuserland are provided by alternate means.
269*e0436612SGlen Barber.El
270*e0436612SGlen Barber.Sh EMBEDDED BUILDS
271*e0436612SGlen BarberThe following
272*e0436612SGlen Barber.Fa release.conf
273*e0436612SGlen Barbervariables are relevant only to release builds for embedded systems:
274*e0436612SGlen Barber.Bl -tag -width Ev
275*e0436612SGlen Barber.It Va EMBEDDEDBUILD
276*e0436612SGlen BarberSet to a non-null value to enable functionality for embedded device
277*e0436612SGlen Barberrelease builds.
278*e0436612SGlen Barber.Pq This option is considered highly experimental.
279*e0436612SGlen Barber.Pp
280*e0436612SGlen BarberWhen set,
281*e0436612SGlen Barber.Va WITH_DVD
282*e0436612SGlen Barberis unset, and
283*e0436612SGlen Barber.Va NODOC
284*e0436612SGlen Barberis defined.
285*e0436612SGlen BarberAdditionally,
286*e0436612SGlen Barber.Va XDEV
287*e0436612SGlen Barberand
288*e0436612SGlen Barber.Va XDEV_ARCH
289*e0436612SGlen Barbermust also be defined.
290*e0436612SGlen BarberWhen the build environment is created,
291*e0436612SGlen Barber.Fa release.sh
292*e0436612SGlen Barberruns a separate build script located in an architecture-specific
293*e0436612SGlen Barberdirectory in
294*e0436612SGlen Barber.Pa src/release/${XDEV}/ .
295*e0436612SGlen Barber.It Va EMBEDDEDPORTS
296*e0436612SGlen BarberSet to the list of any ports that are required for the target device
297*e0436612SGlen Barberin the format of
298*e0436612SGlen Barber.Fa category/port .
299*e0436612SGlen BarberThe
300*e0436612SGlen Barber.Fa devel/subversion
301*e0436612SGlen Barberport is built by default.
302*e0436612SGlen Barber.It Va CROCHETSRC
303*e0436612SGlen BarberSet to the source URL for the Crochet build tool.
304*e0436612SGlen Barber.It Va CROCHETBRANCH
305*e0436612SGlen BarberSet to the subversion branch from
306*e0436612SGlen Barber.Va ${CROCHETSRC}
307*e0436612SGlen Barberto use.
308*e0436612SGlen BarberDefaults to
309*e0436612SGlen Barber.Pa trunk .
310*e0436612SGlen Barber.It Va UBOOTSRC
311*e0436612SGlen BarberSet to the source URL of u-boot, if required.
312*e0436612SGlen Barber.It Va UBOOTBRANCH
313*e0436612SGlen BarberSet to the subversion branch from
314*e0436612SGlen Barber.Va ${UBOOTSRC}
315*e0436612SGlen Barberto use.
316*e0436612SGlen BarberDefaults to
317*e0436612SGlen Barber.Pa trunk .
318*e0436612SGlen Barber.It Va UBOOTDIR
319*e0436612SGlen BarberSet to the target directory within
320*e0436612SGlen Barber.Va ${CHROOTDIR}
321*e0436612SGlen Barberto check out
322*e0436612SGlen Barber.Va ${UBOOTSRC}/${UBOOTBRANCH} .
323e8423d00SNathan Whitehorn.El
324e8423d00SNathan Whitehorn.Sh MAKEFILE TARGETS
325de26e0adSMurray StokelyThe release makefile
326994c71f0SMurray Stokely.Pq Pa src/release/Makefile
327de26e0adSMurray Stokelyis fairly abstruse.
328de26e0adSMurray StokelyMost developers will only be concerned with the
329afb33690SMurray Stokely.Cm release
330299a8b95SNathan Whitehornand
331299a8b95SNathan Whitehorn.Cm install
332299a8b95SNathan Whitehorntargets.
333994c71f0SMurray Stokely.\" XXX: Some sort of introduction to this list?  All the others have one.
334e8423d00SNathan Whitehorn.Bl -tag -width ".Cm packagesystem"
335afb33690SMurray Stokely.It Cm release
336e8423d00SNathan WhitehornMeta-target to build all release media and distributions applicable to this
337299a8b95SNathan Whitehornplatform.
338299a8b95SNathan Whitehorn.It Cm install
339299a8b95SNathan WhitehornCopy all produced release media to
340299a8b95SNathan Whitehorn.Pa ${DESTDIR} .
341e8423d00SNathan Whitehorn.It Cm cdrom
342de17cbccSHiroki SatoBuilds installation CD-ROM images.
343de17cbccSHiroki SatoThis may require the
344e8423d00SNathan Whitehorn.Xr md 4
345e8423d00SNathan Whitehorn(memory disk) device driver be present in the kernel
346de17cbccSHiroki Sato(either by being compiled in or available as a module).
347de17cbccSHiroki SatoThis target produces files called
348ebe27856SGlen Barber.Pa disc1.iso
349299a8b95SNathan Whitehornand
350299a8b95SNathan Whitehorn.Pa bootonly.iso
351e8423d00SNathan Whitehornas its output.
352d7cfbadbSGlen Barber.It Cm dvdrom
353d7cfbadbSGlen BarberBuilds installation DVD-ROM images.
354d7cfbadbSGlen BarberThis may require the
355d7cfbadbSGlen Barber.Xr md 4
356d7cfbadbSGlen Barber(memory disk) device driver be present in the kernel
357d7cfbadbSGlen Barber(either by being compiled in or available as a module).
358d7cfbadbSGlen BarberThis target produces the
359d7cfbadbSGlen Barber.Pa dvd1.iso
360d7cfbadbSGlen Barberfile as its output.
361e8423d00SNathan Whitehorn.It Cm memstick
362e8423d00SNathan WhitehornBuilds an installation memory stick image named
363ebe27856SGlen Barber.Pa memstick.img .
364de17cbccSHiroki SatoNot applicable on all platforms.
365de17cbccSHiroki SatoRequires that the
366e8423d00SNathan Whitehorn.Xr md 4
367ebe27856SGlen Barber.Pq memory disk
368ebe27856SGlen Barberdevice driver be present in the kernel
369ebe27856SGlen Barber.Pq either by being compiled in or available as a module .
37016fb00c1SGlen Barber.It Cm mini-memstick
37116fb00c1SGlen BarberSimilar to
37216fb00c1SGlen Barber.Cm memstick ,
37316fb00c1SGlen Barberwith the exception that the installation distribution sets
37416fb00c1SGlen Barberare not included.
375e8423d00SNathan Whitehorn.It Cm ftp
376e8423d00SNathan WhitehornCreates a directory named
377e8423d00SNathan Whitehorn.Pa ftp
378e8423d00SNathan Whitehorncontaining the distribution files used in network installations
379e8423d00SNathan Whitehornand suitable for upload to an FTP mirror.
380de26e0adSMurray Stokely.El
381de26e0adSMurray Stokely.Pp
382e8423d00SNathan WhitehornMajor subtargets called by targets above:
383e8423d00SNathan Whitehorn.Bl -tag -width ".Cm packagesystem"
384e8423d00SNathan Whitehorn.It Cm packagesystem
385ebe27856SGlen BarberGenerates all the distribution archives
386ebe27856SGlen Barber.Pq base, kernel, ports, doc
387e8423d00SNathan Whitehornapplicable on this platform.
388e8423d00SNathan Whitehorn.It Cm system
389e8423d00SNathan WhitehornBuilds a bootable installation system containing all the distribution files
390e8423d00SNathan Whitehornpackaged by the
391e8423d00SNathan Whitehorn.Cm packagesystem
392e8423d00SNathan Whitehorntarget, and suitable for imaging by the
393d7cfbadbSGlen Barber.Cm cdrom ,
394d7cfbadbSGlen Barber.Cm dvdrom
395e8423d00SNathan Whitehornand
396e8423d00SNathan Whitehorn.Cm memstick
397e8423d00SNathan Whitehorntargets.
398e8423d00SNathan Whitehorn.It Cm reldoc
399994c71f0SMurray StokelyBuilds the release documentation.
400994c71f0SMurray StokelyThis includes the release notes,
401ebe27856SGlen Barberhardware guide, and installation instructions.
402ebe27856SGlen BarberOther documentation, such as the Handbook,
403ebe27856SGlen Barberis built during the
404e8423d00SNathan Whitehorn.Cm base.txz
405e8423d00SNathan Whitehorntarget invoked by
406e8423d00SNathan Whitehorn.Cm packagesystem .
407de26e0adSMurray Stokely.El
408de26e0adSMurray Stokely.Sh ENVIRONMENT
409de26e0adSMurray StokelyOptional variables:
410de17cbccSHiroki Sato.Bl -tag -width ".Ev TARGET_ARCH"
411de17cbccSHiroki Sato.It Ev OSRELEASE
412ebe27856SGlen BarberOptional base name for generated media images
413ebe27856SGlen Barber.Pq e.g., FreeBSD-9.0-RC2-amd64 .
414de17cbccSHiroki SatoDefaults to the output of
415de17cbccSHiroki Sato.Ic `uname -s`-`uname -r`-`uname -p`
416de17cbccSHiroki Satowithin the chroot.
417de17cbccSHiroki Sato.It Ev WORLDDIR
418ebe27856SGlen BarberLocation of a directory containing the src tree.
419ebe27856SGlen BarberBy default, the directory
420e8423d00SNathan Whitehornabove the one containing the makefile
421e8423d00SNathan Whitehorn.Pq Pa src .
422de17cbccSHiroki Sato.It Ev PORTSDIR
423ebe27856SGlen BarberLocation of a directory containing the ports tree.
424ebe27856SGlen BarberBy default,
425e8423d00SNathan Whitehorn.Pa /usr/ports .
426e8423d00SNathan WhitehornIf it is unset or cannot be found, ports will not be included in the release.
427de17cbccSHiroki Sato.It Ev DOCDIR
428ebe27856SGlen BarberLocation of a directory containing the doc tree.
429ebe27856SGlen BarberBy default,
430e8423d00SNathan Whitehorn.Pa /usr/doc .
431e8423d00SNathan WhitehornIf it is unset or cannot be found, most documentation will not be included in
432e8423d00SNathan Whitehornthe release; see
433e8423d00SNathan Whitehorn.Ev NODOC
434e8423d00SNathan Whitehornbelow.
435de17cbccSHiroki Sato.It Ev NOPORTS
436e8423d00SNathan WhitehornIf defined, the Ports Collection will be omitted from the release.
437de17cbccSHiroki Sato.It Ev NOSRC
438e8423d00SNathan WhitehornIf set, do not include system source code in the release.
439de17cbccSHiroki Sato.It Ev NODOC
4400cd4fb92SGlen BarberIf defined, the XML-based documentation from the
441de26e0adSMurray Stokely.Fx
442eee69fccSMurray StokelyDocumentation Project will not be built.
443eee69fccSMurray StokelyHowever, the
444eee69fccSMurray Stokely.Dq doc
445eee69fccSMurray Stokelydistribution will still be created with the minimal documentation set
446eee69fccSMurray Stokelyprovided in
447eee69fccSMurray Stokely.Pa src/share/doc .
448de17cbccSHiroki Sato.It Ev TARGET
44925923b97SRuslan ErmilovThe target hardware platform.
45025923b97SRuslan ErmilovThis is analogous to the
45125923b97SRuslan Ermilov.Dq Nm uname Fl m
45225923b97SRuslan Ermilovoutput.
45325923b97SRuslan ErmilovThis is necessary to cross-build some target architectures.
45425923b97SRuslan ErmilovFor example, cross-building for PC98 machines requires
455de17cbccSHiroki Sato.Ev TARGET_ARCH Ns = Ns Li i386
45625923b97SRuslan Ermilovand
457de17cbccSHiroki Sato.Ev TARGET Ns = Ns Li pc98 .
458e8423d00SNathan WhitehornIf not set,
459de17cbccSHiroki Sato.Ev TARGET
460e8423d00SNathan Whitehorndefaults to the current hardware platform.
461de17cbccSHiroki Sato.It Ev TARGET_ARCH
462e8423d00SNathan WhitehornThe target machine processor architecture.
463e8423d00SNathan WhitehornThis is analogous to the
464e8423d00SNathan Whitehorn.Dq Nm uname Fl p
465e8423d00SNathan Whitehornoutput.
466e8423d00SNathan WhitehornSet this to cross-build for a different architecture.
467e8423d00SNathan WhitehornIf not set,
468de17cbccSHiroki Sato.Ev TARGET_ARCH
469e8423d00SNathan Whitehorndefaults to the current machine architecture, unless
470de17cbccSHiroki Sato.Ev TARGET
471e8423d00SNathan Whitehornis also set, in which case it defaults to the appropriate
472e8423d00SNathan Whitehornvalue for that platform.
473e8423d00SNathan WhitehornTypically, one only needs to set
474de17cbccSHiroki Sato.Ev TARGET .
475de26e0adSMurray Stokely.El
476de26e0adSMurray Stokely.Sh FILES
47782f39c10SGlen Barber.Bl -tag -compact -width Pa
478de26e0adSMurray Stokely.It Pa /usr/doc/Makefile
479de26e0adSMurray Stokely.It Pa /usr/doc/share/mk/doc.project.mk
480de26e0adSMurray Stokely.It Pa /usr/ports/Mk/bsd.port.mk
481de26e0adSMurray Stokely.It Pa /usr/ports/Mk/bsd.sites.mk
482de26e0adSMurray Stokely.It Pa /usr/share/examples/etc/make.conf
483de26e0adSMurray Stokely.It Pa /usr/src/Makefile
484de26e0adSMurray Stokely.It Pa /usr/src/Makefile.inc1
485de26e0adSMurray Stokely.It Pa /usr/src/release/Makefile
486ebe27856SGlen Barber.It Pa /usr/src/release/release.sh
487ebe27856SGlen Barber.It Pa /usr/src/release/release.conf.sample
488de26e0adSMurray Stokely.El
489de26e0adSMurray Stokely.Sh EXAMPLES
490e8423d00SNathan WhitehornThe following sequence of commands can be used to build a
491e8423d00SNathan Whitehorn.Dq "-CURRENT snapshot":
492de26e0adSMurray Stokely.Bd -literal -offset indent
493de26e0adSMurray Stokelycd /usr
494e8423d00SNathan Whitehornsvn co svn://svn.freebsd.org/base/head src
495de26e0adSMurray Stokelycd src
496d408a341SNathan Whitehornmake buildworld buildkernel
497de26e0adSMurray Stokelycd release
4988ef63d0dSNathan Whitehornmake release
4998ef63d0dSNathan Whitehornmake install DESTDIR=/var/freebsd-snapshot
500de26e0adSMurray Stokely.Ed
501de26e0adSMurray Stokely.Pp
502299a8b95SNathan WhitehornAfter running these commands, all produced distribution files (tarballs
503299a8b95SNathan Whitehornfor FTP, CD-ROM images, etc.) are available in the
504299a8b95SNathan Whitehorn.Pa /var/freebsd-snapshot
505de26e0adSMurray Stokelydirectory.
506de26e0adSMurray Stokely.Pp
507994c71f0SMurray StokelyThe following sequence of commands can be used to build a
5081bcf2f1aSMurray Stokely.Dq "-CURRENT snapshot"
509e8423d00SNathan Whitehornin a clean environment, including ports and documentation:
510de26e0adSMurray Stokely.Bd -literal -offset indent
5115af5af75SGleb Smirnoffcd /usr/src/release
512ebe27856SGlen Barbersh release.sh
513ebe27856SGlen Barber.Ed
514ebe27856SGlen Barber.Pp
515ebe27856SGlen BarberOptionally, a configuration file can be used customize the release build,
516ebe27856SGlen Barbersuch as the subversion revision to use, the branch of the subversion tree for
517ebe27856SGlen Barber.Li src/ ,
518ebe27856SGlen Barber.Li ports/ ,
519ebe27856SGlen Barberand
520ebe27856SGlen Barber.Li doc/ .
521ebe27856SGlen Barber.Bd -literal -offset indent
522ebe27856SGlen Barbercd /usr/src/release
523ebe27856SGlen Barbersh release.sh -c $HOME/release.conf
524de26e0adSMurray Stokely.Ed
525e8423d00SNathan Whitehorn.Pp
526e8423d00SNathan WhitehornAfter running these commands, all prepared release files are available in the
527ebe27856SGlen Barber.Pa /scratch
528e8423d00SNathan Whitehorndirectory.
529ebe27856SGlen BarberThe target directory can be changed by specifying the
530ebe27856SGlen Barber.Va CHROOTDIR
531ebe27856SGlen Barbervariable in
532ebe27856SGlen Barber.Li release.conf .
533de26e0adSMurray Stokely.Sh SEE ALSO
534de26e0adSMurray Stokely.Xr cc 1 ,
535de26e0adSMurray Stokely.Xr install 1 ,
536de26e0adSMurray Stokely.Xr make 1 ,
537af285c09SGlen Barber.Xr svn 1 Pq Pa ports/devel/subversion ,
538de26e0adSMurray Stokely.Xr uname 1 ,
539afb33690SMurray Stokely.Xr md 4 ,
540de26e0adSMurray Stokely.Xr make.conf 5 ,
541de26e0adSMurray Stokely.Xr build 7 ,
542de26e0adSMurray Stokely.Xr ports 7 ,
543afb33690SMurray Stokely.Xr chroot 8 ,
544f5178c4fSMurray Stokely.Xr mtree 8 ,
545f5178c4fSMurray Stokely.Xr sysctl 8
546994c71f0SMurray Stokely.Rs
5471bcf2f1aSMurray Stokely.%T "FreeBSD Release Engineering"
548aa4a335bSRuslan Ermilov.%U http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/
549994c71f0SMurray Stokely.Re
550994c71f0SMurray Stokely.Rs
5511bcf2f1aSMurray Stokely.%T "FreeBSD Release Engineering of Third Party Packages"
552aa4a335bSRuslan Ermilov.%U http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/
553994c71f0SMurray Stokely.Re
554994c71f0SMurray Stokely.Rs
5551bcf2f1aSMurray Stokely.%T "FreeBSD Developers' Handbook"
556aa4a335bSRuslan Ermilov.%U http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/
557994c71f0SMurray Stokely.Re
558de26e0adSMurray Stokely.Sh HISTORY
559de26e0adSMurray Stokely.Fx
560de26e0adSMurray Stokely1.x
5611bcf2f1aSMurray Stokelyused a manual checklist, compiled by
5621bcf2f1aSMurray Stokely.An Rod Grimes ,
5631bcf2f1aSMurray Stokelyto produce a release.
564de26e0adSMurray StokelyApart from being incomplete, the list put a lot of specific demands on
565de26e0adSMurray Stokelyavailable file systems and was quite torturous to execute.
566de26e0adSMurray Stokely.Pp
567994c71f0SMurray StokelyAs part of the
568994c71f0SMurray Stokely.Fx 2.0
569994c71f0SMurray Stokelyrelease engineering effort, significant
570de26e0adSMurray Stokelyeffort was spent getting
571de26e0adSMurray Stokely.Pa src/release/Makefile
572de26e0adSMurray Stokelyinto a shape where it could at least automate most of the tediousness
573de26e0adSMurray Stokelyof building a release in a sterile environment.
574de26e0adSMurray Stokely.Pp
575e8423d00SNathan WhitehornFor the
576e8423d00SNathan Whitehorn.Fx 9.0
577e8423d00SNathan Whitehornrelease,
578e8423d00SNathan Whitehorn.Pa src/release/Makefile
579e8423d00SNathan Whitehornwas overhauled and the wrapper script
580e8423d00SNathan Whitehorn.Pa src/release/generate-release.sh
581e8423d00SNathan Whitehornintroduced to support the introduction of a new installer.
582e8423d00SNathan Whitehorn.Pp
583ebe27856SGlen BarberFor the
584ebe27856SGlen Barber.Fx 9.2
585ebe27856SGlen Barberrelease,
586ebe27856SGlen Barber.Pa src/release/release.sh
587ebe27856SGlen Barberwas introduced to support per-build configuration files.
588ebe27856SGlen Barber.Pa src/release/release.sh
589ebe27856SGlen Barberis heavily based on the
590ebe27856SGlen Barber.Pa src/release/generate-release.sh
591ebe27856SGlen Barberscript.
592ebe27856SGlen Barber.Pp
593594ca9baSTom RhodesAt near 1000 revisions spread over multiple branches, the
5940cd4fb92SGlen Barber.Xr svn 1
595994c71f0SMurray Stokelylog of
596994c71f0SMurray Stokely.Pa src/release/Makefile
597994c71f0SMurray Stokelycontains a vivid historical record of some
598de26e0adSMurray Stokelyof the hardships release engineers go through.
599de26e0adSMurray Stokely.Sh AUTHORS
600de26e0adSMurray Stokely.Pa src/release/Makefile
601afb33690SMurray Stokelywas originally written by
602afb33690SMurray Stokely.An -nosplit
603afb33690SMurray Stokely.An Rod Grimes ,
604afb33690SMurray Stokely.An Jordan Hubbard ,
605afb33690SMurray Stokelyand
606afb33690SMurray Stokely.An Poul-Henning Kamp .
607ebe27856SGlen Barber.Pp
608ebe27856SGlen BarberThis manual page was originally written by
609de26e0adSMurray Stokely.An Murray Stokely Aq murray@FreeBSD.org .
610ebe27856SGlen Barber.Pp
611ebe27856SGlen BarberIt was updated by
612ebe27856SGlen Barber.An Nathan Whitehorn Aq nwhitehorn@FreeBSD.org
613ebe27856SGlen Barberto include the
614ebe27856SGlen Barber.Fa generate-release.sh
615ebe27856SGlen Barberscript used for the
616ebe27856SGlen Barber.Fx 9.0
617ebe27856SGlen Barberrelease cycle.
618ebe27856SGlen Barber.Pp
619ebe27856SGlen BarberIt was later updated by
620ebe27856SGlen Barber.An Glen Barber Aq gjb@FreeBSD.org
621ebe27856SGlen Barberto include the
622ebe27856SGlen Barber.Fa release.sh
623ebe27856SGlen Barberscript used for the
624ebe27856SGlen Barber.Fx 9.2
625ebe27856SGlen Barberrelease cycle.
626