xref: /freebsd/share/man/man7/release.7 (revision 2e67e6ffa33cbdc14ad0b30e8cf34577559631a9)
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*2e67e6ffSGlen Barber.Dd January 16, 2020
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.
141e0436612SGlen Barber.It Va CHROOT_MAKEENV
142e0436612SGlen BarberAdditional
143e0436612SGlen Barber.Xr make 1
144e0436612SGlen Barberarguments to pass through, which directly affect the
145e0436612SGlen 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.
253cbc0e08aSGlen Barber.It Va WITH_COMPRESSED_IMAGES
254cbc0e08aSGlen BarberSet to a non-empty value to compress the release images with
25555af5cf1SGlen Barber.Xr xz 1 .
256cbc0e08aSGlen BarberThe original
257cbc0e08aSGlen Barber.Pq uncompressed
258cbc0e08aSGlen Barberimages are not removed.
2597a07bd46SGlen Barber.It Va XZ_THREADS Pq Vt int
2607a07bd46SGlen BarberSet to the number of threads
2617a07bd46SGlen Barber.Xr xz 1
2627a07bd46SGlen Barbershould use when compressing images.
2637a07bd46SGlen BarberBy default,
2647a07bd46SGlen Barber.Va XZ_THREADS
265a79d18b7SGlen Barberis set to
266a79d18b7SGlen Barber.Va 0 ,
267a79d18b7SGlen Barberwhich uses all available cores on the system.
2689bb84a63SGlen Barber.It Va VCSCMD
2699bb84a63SGlen BarberThe command run to obtain the source trees.
2709bb84a63SGlen BarberDefaults to
2719bb84a63SGlen Barber.Qq Cm svn checkout .
272e0436612SGlen Barber.It Va CHROOTBUILD_SKIP
273e0436612SGlen BarberIf defined, the
274e0436612SGlen Barber.Li buildworld ,
275e0436612SGlen Barber.Li installworld ,
276e0436612SGlen Barberand
277e0436612SGlen Barber.Li distribution
278e0436612SGlen Barberstages of the
279e0436612SGlen Barber.Xr chroot 8
280e0436612SGlen Barberbuild environment setup are skipped.
281e0436612SGlen BarberThis is intended solely for cases where the
282e0436612SGlen Barber.Xr chroot 8
283e0436612SGlen Barberuserland are provided by alternate means.
2843e64b4c5SGlen Barber.It Va SRC_UPDATE_SKIP
2853e64b4c5SGlen BarberSet to a non-empty value to prevent checkout or update of
2863e64b4c5SGlen Barber.Fa /usr/src
2873e64b4c5SGlen Barberwithin the
2883e64b4c5SGlen Barber.Xr chroot 8 .
2893e64b4c5SGlen BarberThis is intended for use only when
2903e64b4c5SGlen Barber.Fa /usr/src
2913e64b4c5SGlen Barberis expected to exist by alternative means.
2923e64b4c5SGlen Barber.It Va DOC_UPDATE_SKIP
2933e64b4c5SGlen BarberSet to a non-empty value to prevent checkout or update of
2943e64b4c5SGlen Barber.Fa /usr/doc
2953e64b4c5SGlen Barberwithin the
2963e64b4c5SGlen Barber.Xr chroot 8 .
2973e64b4c5SGlen BarberThis is intended for use only when
2983e64b4c5SGlen Barber.Fa /usr/doc
2993e64b4c5SGlen Barberis expected to exist by alternative means.
3003e64b4c5SGlen Barber.It Va PORTS_UPDATE_SKIP
3013e64b4c5SGlen BarberSet to a non-empty value to prevent checkout or update of
3023e64b4c5SGlen Barber.Fa /usr/ports
3033e64b4c5SGlen Barberwithin the
3043e64b4c5SGlen Barber.Xr chroot 8 .
3053e64b4c5SGlen BarberThis is intended for use only when
3063e64b4c5SGlen Barber.Fa /usr/ports
3073e64b4c5SGlen Barberis expected to exist by alternative means.
308e0436612SGlen Barber.El
309e0436612SGlen Barber.Sh EMBEDDED BUILDS
310e0436612SGlen BarberThe following
311e0436612SGlen Barber.Fa release.conf
312e0436612SGlen Barbervariables are relevant only to release builds for embedded systems:
313e0436612SGlen Barber.Bl -tag -width Ev
314e0436612SGlen Barber.It Va EMBEDDEDBUILD
315e0436612SGlen BarberSet to a non-null value to enable functionality for embedded device
316e0436612SGlen Barberrelease builds.
317e0436612SGlen Barber.Pp
318e0436612SGlen BarberWhen set,
319e0436612SGlen Barber.Va WITH_DVD
320e0436612SGlen Barberis unset, and
321e0436612SGlen Barber.Va NODOC
322e0436612SGlen Barberis defined.
323e0436612SGlen BarberAdditionally,
32420772e47SGlen Barber.Va EMBEDDED_TARGET
325e0436612SGlen Barberand
32620772e47SGlen Barber.Va EMBEDDED_TARGET_ARCH
327e0436612SGlen Barbermust also be defined.
328e0436612SGlen BarberWhen the build environment is created,
329e0436612SGlen Barber.Fa release.sh
330e0436612SGlen Barberruns a separate build script located in an architecture-specific
331e0436612SGlen Barberdirectory in
33220772e47SGlen Barber.Pa src/release/${EMBEDDED_TARGET}/ .
333e0436612SGlen Barber.It Va EMBEDDEDPORTS
334e0436612SGlen BarberSet to the list of any ports that are required for the target device
335e0436612SGlen Barberin the format of
336e0436612SGlen Barber.Fa category/port .
337e0436612SGlen BarberThe
338e0436612SGlen Barber.Fa devel/subversion
339e0436612SGlen Barberport is built by default.
34020772e47SGlen Barber.It Va EMBEDDED_TARGET
34120772e47SGlen BarberWhen set, its value is passed to
34220772e47SGlen Barber.Xr make 1
34320772e47SGlen Barberto set the
34420772e47SGlen Barber.Va TARGET
34520772e47SGlen Barber.Pq value of Cm uname Fl m
34620772e47SGlen Barberto cross build the target userland.
34720772e47SGlen Barber.It Va EMBEDDED_TARGET_ARCH
34820772e47SGlen BarberWhen set, its value is passed to
34920772e47SGlen Barber.Xr make 1
35020772e47SGlen Barberto set the
35120772e47SGlen Barber.Va TARGET_ARCH
35220772e47SGlen Barber.Pq value of Cm uname Fl p
35320772e47SGlen Barberto cross build the target userland.
354e8423d00SNathan Whitehorn.El
355a8c229a5SGlen Barber.Sh VIRTUAL MACHINE DISK IMAGES
356a8c229a5SGlen BarberThe following
357a8c229a5SGlen Barber.Fa release.conf
358a8c229a5SGlen Barbervariables are relevant only to virtual machine disk image builds:
359a8c229a5SGlen Barber.Bl -tag -width Ev
360a8c229a5SGlen Barber.It Va WITH_VMIMAGES
361a8c229a5SGlen BarberSet to a non-null value to build virtual machine disk images as part
362a8c229a5SGlen Barberof the release build.
363a8c229a5SGlen Barber.Va WITH_VMIMAGES
36441ad38efSMark Johnstonmay also be specified as an environment variable passed to
365a8c229a5SGlen Barber.Xr make 1 .
366a8c229a5SGlen Barber.Pp
367a8c229a5SGlen BarberThe option requires
368a8c229a5SGlen Barber.Xr mkimg 1
369a8c229a5SGlen Barberversion 20140927 or later.
370a8c229a5SGlen Barber.It Va WITH_COMPRESSED_VMIMAGES
371a8c229a5SGlen BarberSet to a non-null value to compress the virtual machine disk images with
372a8c229a5SGlen Barber.Xr xz 1
373a8c229a5SGlen Barberas part of the
374a8c229a5SGlen Barber.Cm install
375a8c229a5SGlen Barber.Xr make 1
376a8c229a5SGlen Barbertarget.
377a8c229a5SGlen BarberNote that compressing virtual machine disk images may take a very long
378a8c229a5SGlen Barbertime on some systems.
379a8c229a5SGlen Barber.It Va VMBASE
380a8c229a5SGlen BarberSet to change the name of the resulting virtual machine disk image file.
381a8c229a5SGlen BarberThe default value is
382a8c229a5SGlen Barber.Va vm .
383a8c229a5SGlen Barber.It Va VMSIZE
384a8c229a5SGlen BarberSet to change the size of the virtual machine disk capacity.
385a8c229a5SGlen BarberThe default value is
386a8c229a5SGlen Barber.Va 20G .
387a8c229a5SGlen BarberSee
388a8c229a5SGlen Barber.Xr truncate 1
389a8c229a5SGlen Barberfor valid values.
390a8c229a5SGlen Barber.Pp
391a8c229a5SGlen BarberVirtual machine disk images are, by default, created as sparse images.
392a8c229a5SGlen BarberWhen
393a8c229a5SGlen Barber.Va WITH_COMPRESSED_VMIMAGES
394a8c229a5SGlen Barberis used, the resulting files compressed with
395a8c229a5SGlen Barber.Xr xz 1
396a8c229a5SGlen Barbercompress to roughly the same size, regardless of the specified disk image
397a8c229a5SGlen Barbersize.
398a8c229a5SGlen Barber.It Va VMFORMATS
399a8c229a5SGlen BarberSet to the target virtual disk image format(s) to create.
400a8c229a5SGlen BarberBy default, the
401a8c229a5SGlen Barber.Va vhdf , Va vmdk , Va qcow2 ,
402a8c229a5SGlen Barberand
403a8c229a5SGlen Barber.Va raw
404a8c229a5SGlen Barberformats are created.
405a8c229a5SGlen BarberSee
406a8c229a5SGlen Barber.Xr mkimg 1
407a8c229a5SGlen Barberfor valid format values
408a8c229a5SGlen Barber.Pq requires version 20140927 or later .
409a8c229a5SGlen Barber.El
41085311c29SGlen Barber.Pp
41185311c29SGlen BarberFor a list of supported
41285311c29SGlen Barber.Va VMFORMATS
41385311c29SGlen Barbervalues
41485311c29SGlen Barber.Pq including cloud hosting provider formats
41585311c29SGlen Barberalong with a brief description, run:
41685311c29SGlen Barber.Bd -literal -offset indent
41785311c29SGlen Barbercd /usr/src
41885311c29SGlen Barbermake -C release list-vmtargets
41985311c29SGlen Barber.Ed
420b513fff0SGlen Barber.Sh CLOUD HOSTING MACHINE IMAGES
421b513fff0SGlen BarberThe
422b513fff0SGlen Barber.Fx
423b513fff0SGlen Barberrelease build tools support building virtual machine images for various
424b513fff0SGlen Barbercloud hosting providers, each with their own specific configuration to
425b513fff0SGlen Barberinclude support for each hosting provider by default.
426b513fff0SGlen Barber.Pp
427b513fff0SGlen BarberThe following
428b513fff0SGlen Barber.Xr make 1
429b513fff0SGlen Barberenvironment variables are supported:
430b513fff0SGlen Barber.Bl -tag -width Ev
431b513fff0SGlen Barber.It Va CLOUDWARE
432b513fff0SGlen BarberSet to a list of one or more cloud hosting providers, enclosed in quotes.
433b513fff0SGlen BarberRequires
434b513fff0SGlen Barber.Va WITH_CLOUDWARE
435b513fff0SGlen Barberto also be set.
436b513fff0SGlen Barber.It Va WITH_CLOUDWARE
437b513fff0SGlen BarberSet to a non-empty value to enable building virtual machine images
438b513fff0SGlen Barberfor various cloud hosting providers.
439b513fff0SGlen BarberRequires
440b513fff0SGlen Barber.Va CLOUDWARE
441b513fff0SGlen Barberto also be set.
442b513fff0SGlen Barber.El
443b513fff0SGlen Barber.Pp
444b513fff0SGlen BarberAdditionally, the
445b513fff0SGlen Barber.Va CLOUDWARE
446b513fff0SGlen Barberand
447b513fff0SGlen Barber.Va WITH_CLOUDWARE
448b513fff0SGlen Barbervariables can be added to
449b513fff0SGlen Barber.Pa release.conf ,
450b513fff0SGlen Barberand used in conjunction with
451b513fff0SGlen Barber.Pa release.sh .
452b513fff0SGlen Barber.Pp
453b513fff0SGlen BarberFor a list of supported
454b513fff0SGlen Barber.Va CLOUDWARE
455b513fff0SGlen Barbervalues, run:
456b513fff0SGlen Barber.Bd -literal -offset indent
457b513fff0SGlen Barbercd /usr/src
458b513fff0SGlen Barbermake -C release list-cloudware
459b513fff0SGlen Barber.Ed
460e8423d00SNathan Whitehorn.Sh MAKEFILE TARGETS
461de26e0adSMurray StokelyThe release makefile
462994c71f0SMurray Stokely.Pq Pa src/release/Makefile
463de26e0adSMurray Stokelyis fairly abstruse.
464de26e0adSMurray StokelyMost developers will only be concerned with the
465afb33690SMurray Stokely.Cm release
466299a8b95SNathan Whitehornand
467299a8b95SNathan Whitehorn.Cm install
468299a8b95SNathan Whitehorntargets.
469994c71f0SMurray Stokely.\" XXX: Some sort of introduction to this list?  All the others have one.
470e8423d00SNathan Whitehorn.Bl -tag -width ".Cm packagesystem"
471afb33690SMurray Stokely.It Cm release
472e8423d00SNathan WhitehornMeta-target to build all release media and distributions applicable to this
473299a8b95SNathan Whitehornplatform.
474299a8b95SNathan Whitehorn.It Cm install
475299a8b95SNathan WhitehornCopy all produced release media to
476299a8b95SNathan Whitehorn.Pa ${DESTDIR} .
477e8423d00SNathan Whitehorn.It Cm cdrom
478de17cbccSHiroki SatoBuilds installation CD-ROM images.
479de17cbccSHiroki SatoThis may require the
480e8423d00SNathan Whitehorn.Xr md 4
481e8423d00SNathan Whitehorn(memory disk) device driver be present in the kernel
482de17cbccSHiroki Sato(either by being compiled in or available as a module).
483de17cbccSHiroki SatoThis target produces files called
484ebe27856SGlen Barber.Pa disc1.iso
485299a8b95SNathan Whitehornand
486299a8b95SNathan Whitehorn.Pa bootonly.iso
487e8423d00SNathan Whitehornas its output.
488d7cfbadbSGlen Barber.It Cm dvdrom
489d7cfbadbSGlen BarberBuilds installation DVD-ROM images.
490d7cfbadbSGlen BarberThis may require the
491d7cfbadbSGlen Barber.Xr md 4
492d7cfbadbSGlen Barber(memory disk) device driver be present in the kernel
493d7cfbadbSGlen Barber(either by being compiled in or available as a module).
494d7cfbadbSGlen BarberThis target produces the
495d7cfbadbSGlen Barber.Pa dvd1.iso
496d7cfbadbSGlen Barberfile as its output.
497e8423d00SNathan Whitehorn.It Cm memstick
498e8423d00SNathan WhitehornBuilds an installation memory stick image named
499ebe27856SGlen Barber.Pa memstick.img .
500de17cbccSHiroki SatoNot applicable on all platforms.
501de17cbccSHiroki SatoRequires that the
502e8423d00SNathan Whitehorn.Xr md 4
503ebe27856SGlen Barber.Pq memory disk
504ebe27856SGlen Barberdevice driver be present in the kernel
505ebe27856SGlen Barber.Pq either by being compiled in or available as a module .
50616fb00c1SGlen Barber.It Cm mini-memstick
50716fb00c1SGlen BarberSimilar to
50816fb00c1SGlen Barber.Cm memstick ,
50916fb00c1SGlen Barberwith the exception that the installation distribution sets
51016fb00c1SGlen Barberare not included.
511e8423d00SNathan Whitehorn.It Cm ftp
512e8423d00SNathan WhitehornCreates a directory named
513e8423d00SNathan Whitehorn.Pa ftp
514e8423d00SNathan Whitehorncontaining the distribution files used in network installations
515e8423d00SNathan Whitehornand suitable for upload to an FTP mirror.
516a8c229a5SGlen Barber.It Cm vm-image
517a8c229a5SGlen BarberCreates virtual machine disk images in various formats.
518a8c229a5SGlen BarberThe
519a8c229a5SGlen Barber.Cm vm-image
520a8c229a5SGlen Barbertarget requires the
521a8c229a5SGlen Barber.Va WITH_VMIMAGES
522a8c229a5SGlen Barber.Xr make 1
52341ad38efSMark Johnstonenvironment variable to be set to a non-null value.
524b513fff0SGlen Barber.It Cm vm-cloudware
525b513fff0SGlen BarberBuilds
526b513fff0SGlen Barber.Fx
527b513fff0SGlen Barbervirtual machine images for various cloud hosting providers.
528b513fff0SGlen BarberSee
529b513fff0SGlen Barber.Qq CLOUD HOSTING MACHINE IMAGES
530b513fff0SGlen Barberfor implementation details.
531b513fff0SGlen Barber.It Cm list-cloudware
532b513fff0SGlen BarberDisplays the list of valid
533b513fff0SGlen Barber.Va CLOUDWARE
534b513fff0SGlen Barbervalues.
53585311c29SGlen Barber.It Cm list-vmtargets
53685311c29SGlen BarberDisplays the list of valid
53785311c29SGlen Barber.Va VMFORMAT
53885311c29SGlen Barberand
53985311c29SGlen Barber.Va CLOUDWARE
54085311c29SGlen Barbervalues.
541de26e0adSMurray Stokely.El
542de26e0adSMurray Stokely.Pp
543e8423d00SNathan WhitehornMajor subtargets called by targets above:
544e8423d00SNathan Whitehorn.Bl -tag -width ".Cm packagesystem"
545e8423d00SNathan Whitehorn.It Cm packagesystem
546ebe27856SGlen BarberGenerates all the distribution archives
547ebe27856SGlen Barber.Pq base, kernel, ports, doc
548e8423d00SNathan Whitehornapplicable on this platform.
54947176cacSGlen Barber.It Cm disc1
550e8423d00SNathan WhitehornBuilds a bootable installation system containing all the distribution files
551e8423d00SNathan Whitehornpackaged by the
552e8423d00SNathan Whitehorn.Cm packagesystem
553e8423d00SNathan Whitehorntarget, and suitable for imaging by the
554d7cfbadbSGlen Barber.Cm cdrom ,
555d7cfbadbSGlen Barber.Cm dvdrom
556e8423d00SNathan Whitehornand
557e8423d00SNathan Whitehorn.Cm memstick
558e8423d00SNathan Whitehorntargets.
559e8423d00SNathan Whitehorn.It Cm reldoc
560994c71f0SMurray StokelyBuilds the release documentation.
561994c71f0SMurray StokelyThis includes the release notes,
562ebe27856SGlen Barberhardware guide, and installation instructions.
563ebe27856SGlen BarberOther documentation, such as the Handbook,
564ebe27856SGlen Barberis built during the
565e8423d00SNathan Whitehorn.Cm base.txz
566e8423d00SNathan Whitehorntarget invoked by
567e8423d00SNathan Whitehorn.Cm packagesystem .
568de26e0adSMurray Stokely.El
569de26e0adSMurray Stokely.Sh ENVIRONMENT
570de26e0adSMurray StokelyOptional variables:
571de17cbccSHiroki Sato.Bl -tag -width ".Ev TARGET_ARCH"
572de17cbccSHiroki Sato.It Ev OSRELEASE
573*2e67e6ffSGlen BarberOptional base name for generated media images when invoking the
574*2e67e6ffSGlen Barber.Cm install
575*2e67e6ffSGlen Barbertarget
576*2e67e6ffSGlen Barber.Pq e.g., FreeBSD-12.1-RELEASE-amd64 .
577de17cbccSHiroki SatoDefaults to the output of
578de17cbccSHiroki Sato.Ic `uname -s`-`uname -r`-`uname -p`
579de17cbccSHiroki Satowithin the chroot.
580de17cbccSHiroki Sato.It Ev WORLDDIR
581ebe27856SGlen BarberLocation of a directory containing the src tree.
582ebe27856SGlen BarberBy default, the directory
583e8423d00SNathan Whitehornabove the one containing the makefile
584e8423d00SNathan Whitehorn.Pq Pa src .
585de17cbccSHiroki Sato.It Ev PORTSDIR
586ebe27856SGlen BarberLocation of a directory containing the ports tree.
587ebe27856SGlen BarberBy default,
588e8423d00SNathan Whitehorn.Pa /usr/ports .
589e8423d00SNathan WhitehornIf it is unset or cannot be found, ports will not be included in the release.
590de17cbccSHiroki Sato.It Ev DOCDIR
591ebe27856SGlen BarberLocation of a directory containing the doc tree.
592ebe27856SGlen BarberBy default,
593e8423d00SNathan Whitehorn.Pa /usr/doc .
594e8423d00SNathan WhitehornIf it is unset or cannot be found, most documentation will not be included in
595e8423d00SNathan Whitehornthe release; see
596e8423d00SNathan Whitehorn.Ev NODOC
597e8423d00SNathan Whitehornbelow.
598de17cbccSHiroki Sato.It Ev NOPORTS
599e8423d00SNathan WhitehornIf defined, the Ports Collection will be omitted from the release.
600de17cbccSHiroki Sato.It Ev NOSRC
601e8423d00SNathan WhitehornIf set, do not include system source code in the release.
602de17cbccSHiroki Sato.It Ev NODOC
6030cd4fb92SGlen BarberIf defined, the XML-based documentation from the
604de26e0adSMurray Stokely.Fx
605eee69fccSMurray StokelyDocumentation Project will not be built.
606eee69fccSMurray StokelyHowever, the
607eee69fccSMurray Stokely.Dq doc
608eee69fccSMurray Stokelydistribution will still be created with the minimal documentation set
609eee69fccSMurray Stokelyprovided in
610eee69fccSMurray Stokely.Pa src/share/doc .
611de17cbccSHiroki Sato.It Ev TARGET
61225923b97SRuslan ErmilovThe target hardware platform.
61325923b97SRuslan ErmilovThis is analogous to the
61425923b97SRuslan Ermilov.Dq Nm uname Fl m
61525923b97SRuslan Ermilovoutput.
61625923b97SRuslan ErmilovThis is necessary to cross-build some target architectures.
6172f6a7e42SEnji CooperFor example, cross-building for ARM64 machines requires
6182f6a7e42SEnji Cooper.Ev TARGET_ARCH Ns = Ns Li aarch64
61925923b97SRuslan Ermilovand
6202f6a7e42SEnji Cooper.Ev TARGET Ns = Ns Li arm64 .
621e8423d00SNathan WhitehornIf not set,
622de17cbccSHiroki Sato.Ev TARGET
623e8423d00SNathan Whitehorndefaults to the current hardware platform.
624de17cbccSHiroki Sato.It Ev TARGET_ARCH
625e8423d00SNathan WhitehornThe target machine processor architecture.
626e8423d00SNathan WhitehornThis is analogous to the
627e8423d00SNathan Whitehorn.Dq Nm uname Fl p
628e8423d00SNathan Whitehornoutput.
629e8423d00SNathan WhitehornSet this to cross-build for a different architecture.
630e8423d00SNathan WhitehornIf not set,
631de17cbccSHiroki Sato.Ev TARGET_ARCH
632e8423d00SNathan Whitehorndefaults to the current machine architecture, unless
633de17cbccSHiroki Sato.Ev TARGET
634e8423d00SNathan Whitehornis also set, in which case it defaults to the appropriate
635e8423d00SNathan Whitehornvalue for that platform.
636e8423d00SNathan WhitehornTypically, one only needs to set
637de17cbccSHiroki Sato.Ev TARGET .
638de26e0adSMurray Stokely.El
639de26e0adSMurray Stokely.Sh FILES
64082f39c10SGlen Barber.Bl -tag -compact -width Pa
641de26e0adSMurray Stokely.It Pa /usr/doc/Makefile
642de26e0adSMurray Stokely.It Pa /usr/doc/share/mk/doc.project.mk
643de26e0adSMurray Stokely.It Pa /usr/ports/Mk/bsd.port.mk
644de26e0adSMurray Stokely.It Pa /usr/ports/Mk/bsd.sites.mk
645de26e0adSMurray Stokely.It Pa /usr/share/examples/etc/make.conf
646de26e0adSMurray Stokely.It Pa /usr/src/Makefile
647de26e0adSMurray Stokely.It Pa /usr/src/Makefile.inc1
648de26e0adSMurray Stokely.It Pa /usr/src/release/Makefile
649b513fff0SGlen Barber.It Pa /usr/src/release/Makefile.vm
650ebe27856SGlen Barber.It Pa /usr/src/release/release.sh
651ebe27856SGlen Barber.It Pa /usr/src/release/release.conf.sample
652b513fff0SGlen Barber.It Pa /usr/src/release/tools/*.conf
653b513fff0SGlen Barber.It Pa /usr/src/release/tools/vmimage.subr
654de26e0adSMurray Stokely.El
655de26e0adSMurray Stokely.Sh EXAMPLES
656e8423d00SNathan WhitehornThe following sequence of commands can be used to build a
657e8423d00SNathan Whitehorn.Dq "-CURRENT snapshot":
658de26e0adSMurray Stokely.Bd -literal -offset indent
659de26e0adSMurray Stokelycd /usr
660e8423d00SNathan Whitehornsvn co svn://svn.freebsd.org/base/head src
661de26e0adSMurray Stokelycd src
662d408a341SNathan Whitehornmake buildworld buildkernel
663de26e0adSMurray Stokelycd release
664*2e67e6ffSGlen Barbermake obj
6658ef63d0dSNathan Whitehornmake release
6668ef63d0dSNathan Whitehornmake install DESTDIR=/var/freebsd-snapshot
667de26e0adSMurray Stokely.Ed
668de26e0adSMurray Stokely.Pp
669299a8b95SNathan WhitehornAfter running these commands, all produced distribution files (tarballs
670299a8b95SNathan Whitehornfor FTP, CD-ROM images, etc.) are available in the
671299a8b95SNathan Whitehorn.Pa /var/freebsd-snapshot
672de26e0adSMurray Stokelydirectory.
673de26e0adSMurray Stokely.Pp
674994c71f0SMurray StokelyThe following sequence of commands can be used to build a
6751bcf2f1aSMurray Stokely.Dq "-CURRENT snapshot"
676e8423d00SNathan Whitehornin a clean environment, including ports and documentation:
677de26e0adSMurray Stokely.Bd -literal -offset indent
6785af5af75SGleb Smirnoffcd /usr/src/release
679ebe27856SGlen Barbersh release.sh
680ebe27856SGlen Barber.Ed
681ebe27856SGlen Barber.Pp
682ebe27856SGlen BarberOptionally, a configuration file can be used customize the release build,
683ebe27856SGlen Barbersuch as the subversion revision to use, the branch of the subversion tree for
684ebe27856SGlen Barber.Li src/ ,
685ebe27856SGlen Barber.Li ports/ ,
686ebe27856SGlen Barberand
687ebe27856SGlen Barber.Li doc/ .
688ebe27856SGlen Barber.Bd -literal -offset indent
689ebe27856SGlen Barbercd /usr/src/release
690ebe27856SGlen Barbersh release.sh -c $HOME/release.conf
691de26e0adSMurray Stokely.Ed
692e8423d00SNathan Whitehorn.Pp
6930e976a76SGlen BarberConfiguration files specific to various supported embedded systems, such as
6940e976a76SGlen Barberthe Raspberry Pi, exist in the directory corresponding to the
6950e976a76SGlen Barber.Va TARGET
6960e976a76SGlen Barber.Xr make 1
6970e976a76SGlen Barbervariable.
6980e976a76SGlen BarberFor example, to build an image for the Raspberry Pi:
6990e976a76SGlen Barber.Bd -literal -offset indent
7000e976a76SGlen Barbercd /usr/src/release
7010e976a76SGlen Barbersh release.sh -c arm/RPI-B.conf
7020e976a76SGlen Barber.Ed
7030e976a76SGlen Barber.Pp
7040e976a76SGlen BarberTo build an image for the Raspberry Pi 3:
7050e976a76SGlen Barber.Bd -literal -offset indent
7060e976a76SGlen Barbercd /usr/src/release
7070e976a76SGlen Barbersh release.sh -c arm64/RPI3.conf
7080e976a76SGlen Barber.Ed
7090e976a76SGlen Barber.Pp
710e8423d00SNathan WhitehornAfter running these commands, all prepared release files are available in the
711ebe27856SGlen Barber.Pa /scratch
712e8423d00SNathan Whitehorndirectory.
713ebe27856SGlen BarberThe target directory can be changed by specifying the
714ebe27856SGlen Barber.Va CHROOTDIR
715ebe27856SGlen Barbervariable in
716ebe27856SGlen Barber.Li release.conf .
717de26e0adSMurray Stokely.Sh SEE ALSO
718de26e0adSMurray Stokely.Xr cc 1 ,
719de26e0adSMurray Stokely.Xr install 1 ,
720de26e0adSMurray Stokely.Xr make 1 ,
721af285c09SGlen Barber.Xr svn 1 Pq Pa ports/devel/subversion ,
722de26e0adSMurray Stokely.Xr uname 1 ,
723afb33690SMurray Stokely.Xr md 4 ,
724de26e0adSMurray Stokely.Xr make.conf 5 ,
725de26e0adSMurray Stokely.Xr build 7 ,
726de26e0adSMurray Stokely.Xr ports 7 ,
727afb33690SMurray Stokely.Xr chroot 8 ,
728f5178c4fSMurray Stokely.Xr mtree 8 ,
729f5178c4fSMurray Stokely.Xr sysctl 8
730994c71f0SMurray Stokely.Rs
7311bcf2f1aSMurray Stokely.%T "FreeBSD Release Engineering"
732a8233b81SGlen Barber.%U https://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/freebsd-releng/
733994c71f0SMurray Stokely.Re
734994c71f0SMurray Stokely.Rs
7351bcf2f1aSMurray Stokely.%T "FreeBSD Developers' Handbook"
736a2aef24aSEitan Adler.%U https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/
737994c71f0SMurray Stokely.Re
738de26e0adSMurray Stokely.Sh HISTORY
739de26e0adSMurray Stokely.Fx
740de26e0adSMurray Stokely1.x
7411bcf2f1aSMurray Stokelyused a manual checklist, compiled by
7421bcf2f1aSMurray Stokely.An Rod Grimes ,
7431bcf2f1aSMurray Stokelyto produce a release.
744de26e0adSMurray StokelyApart from being incomplete, the list put a lot of specific demands on
745de26e0adSMurray Stokelyavailable file systems and was quite torturous to execute.
746de26e0adSMurray Stokely.Pp
747994c71f0SMurray StokelyAs part of the
748994c71f0SMurray Stokely.Fx 2.0
749994c71f0SMurray Stokelyrelease engineering effort, significant
750de26e0adSMurray Stokelyeffort was spent getting
751de26e0adSMurray Stokely.Pa src/release/Makefile
752de26e0adSMurray Stokelyinto a shape where it could at least automate most of the tediousness
753de26e0adSMurray Stokelyof building a release in a sterile environment.
754de26e0adSMurray Stokely.Pp
755e8423d00SNathan WhitehornFor the
756e8423d00SNathan Whitehorn.Fx 9.0
757e8423d00SNathan Whitehornrelease,
758e8423d00SNathan Whitehorn.Pa src/release/Makefile
759e8423d00SNathan Whitehornwas overhauled and the wrapper script
760e8423d00SNathan Whitehorn.Pa src/release/generate-release.sh
761e8423d00SNathan Whitehornintroduced to support the introduction of a new installer.
762e8423d00SNathan Whitehorn.Pp
763ebe27856SGlen BarberFor the
764ebe27856SGlen Barber.Fx 9.2
765ebe27856SGlen Barberrelease,
766ebe27856SGlen Barber.Pa src/release/release.sh
767ebe27856SGlen Barberwas introduced to support per-build configuration files.
768ebe27856SGlen Barber.Pa src/release/release.sh
769ebe27856SGlen Barberis heavily based on the
770ebe27856SGlen Barber.Pa src/release/generate-release.sh
771ebe27856SGlen Barberscript.
772ebe27856SGlen Barber.Pp
773594ca9baSTom RhodesAt near 1000 revisions spread over multiple branches, the
7740cd4fb92SGlen Barber.Xr svn 1
775994c71f0SMurray Stokelylog of
776994c71f0SMurray Stokely.Pa src/release/Makefile
777994c71f0SMurray Stokelycontains a vivid historical record of some
778de26e0adSMurray Stokelyof the hardships release engineers go through.
779de26e0adSMurray Stokely.Sh AUTHORS
780de26e0adSMurray Stokely.Pa src/release/Makefile
781afb33690SMurray Stokelywas originally written by
782afb33690SMurray Stokely.An -nosplit
783afb33690SMurray Stokely.An Rod Grimes ,
784afb33690SMurray Stokely.An Jordan Hubbard ,
785afb33690SMurray Stokelyand
786afb33690SMurray Stokely.An Poul-Henning Kamp .
787ebe27856SGlen Barber.Pp
788ebe27856SGlen BarberThis manual page was originally written by
789a63d6c94SBaptiste Daroussin.An Murray Stokely Aq Mt murray@FreeBSD.org .
790ebe27856SGlen Barber.Pp
791ebe27856SGlen BarberIt was updated by
792a63d6c94SBaptiste Daroussin.An Nathan Whitehorn Aq Mt nwhitehorn@FreeBSD.org
793ebe27856SGlen Barberto include the
794ebe27856SGlen Barber.Fa generate-release.sh
795ebe27856SGlen Barberscript used for the
796ebe27856SGlen Barber.Fx 9.0
797ebe27856SGlen Barberrelease cycle.
798ebe27856SGlen Barber.Pp
799ebe27856SGlen BarberIt was later updated by
800a63d6c94SBaptiste Daroussin.An Glen Barber Aq Mt gjb@FreeBSD.org
801ebe27856SGlen Barberto include the
802ebe27856SGlen Barber.Fa release.sh
803ebe27856SGlen Barberscript used for the
804ebe27856SGlen Barber.Fx 9.2
805ebe27856SGlen Barberrelease cycle.
806