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.\" 277a07bd46SGlen Barber.Dd February 20, 2015 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 265*a79d18b7SGlen Barberis set to 266*a79d18b7SGlen Barber.Va 0 , 267*a79d18b7SGlen 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.Pq This option is considered highly experimental. 318e0436612SGlen Barber.Pp 319e0436612SGlen BarberWhen set, 320e0436612SGlen Barber.Va WITH_DVD 321e0436612SGlen Barberis unset, and 322e0436612SGlen Barber.Va NODOC 323e0436612SGlen Barberis defined. 324e0436612SGlen BarberAdditionally, 325e0436612SGlen Barber.Va XDEV 326e0436612SGlen Barberand 327e0436612SGlen Barber.Va XDEV_ARCH 328e0436612SGlen Barbermust also be defined. 329e0436612SGlen BarberWhen the build environment is created, 330e0436612SGlen Barber.Fa release.sh 331e0436612SGlen Barberruns a separate build script located in an architecture-specific 332e0436612SGlen Barberdirectory in 333e0436612SGlen Barber.Pa src/release/${XDEV}/ . 334e0436612SGlen Barber.It Va EMBEDDEDPORTS 335e0436612SGlen BarberSet to the list of any ports that are required for the target device 336e0436612SGlen Barberin the format of 337e0436612SGlen Barber.Fa category/port . 338e0436612SGlen BarberThe 339e0436612SGlen Barber.Fa devel/subversion 340e0436612SGlen Barberport is built by default. 341e0436612SGlen Barber.It Va CROCHETSRC 342e0436612SGlen BarberSet to the source URL for the Crochet build tool. 343e0436612SGlen Barber.It Va CROCHETBRANCH 344e0436612SGlen BarberSet to the subversion branch from 345e0436612SGlen Barber.Va ${CROCHETSRC} 346e0436612SGlen Barberto use. 347e0436612SGlen BarberDefaults to 348e0436612SGlen Barber.Pa trunk . 349e0436612SGlen Barber.It Va UBOOTSRC 350e0436612SGlen BarberSet to the source URL of u-boot, if required. 351e0436612SGlen Barber.It Va UBOOTBRANCH 352e0436612SGlen BarberSet to the subversion branch from 353e0436612SGlen Barber.Va ${UBOOTSRC} 354e0436612SGlen Barberto use. 355e0436612SGlen BarberDefaults to 356e0436612SGlen Barber.Pa trunk . 357e0436612SGlen Barber.It Va UBOOTDIR 358e0436612SGlen BarberSet to the target directory within 359e0436612SGlen Barber.Va ${CHROOTDIR} 360e0436612SGlen Barberto check out 361e0436612SGlen Barber.Va ${UBOOTSRC}/${UBOOTBRANCH} . 362e8423d00SNathan Whitehorn.El 363a8c229a5SGlen Barber.Sh VIRTUAL MACHINE DISK IMAGES 364a8c229a5SGlen BarberThe following 365a8c229a5SGlen Barber.Fa release.conf 366a8c229a5SGlen Barbervariables are relevant only to virtual machine disk image builds: 367a8c229a5SGlen Barber.Bl -tag -width Ev 368a8c229a5SGlen Barber.It Va WITH_VMIMAGES 369a8c229a5SGlen BarberSet to a non-null value to build virtual machine disk images as part 370a8c229a5SGlen Barberof the release build. 371a8c229a5SGlen Barber.Va WITH_VMIMAGES 372a8c229a5SGlen Barbermay also be specified as an envirionment variable passed to 373a8c229a5SGlen Barber.Xr make 1 . 374a8c229a5SGlen Barber.Pp 375a8c229a5SGlen BarberThe option requires 376a8c229a5SGlen Barber.Xr mkimg 1 377a8c229a5SGlen Barberversion 20140927 or later. 378a8c229a5SGlen Barber.It Va WITH_COMPRESSED_VMIMAGES 379a8c229a5SGlen BarberSet to a non-null value to compress the virtual machine disk images with 380a8c229a5SGlen Barber.Xr xz 1 381a8c229a5SGlen Barberas part of the 382a8c229a5SGlen Barber.Cm install 383a8c229a5SGlen Barber.Xr make 1 384a8c229a5SGlen Barbertarget. 385a8c229a5SGlen BarberNote that compressing virtual machine disk images may take a very long 386a8c229a5SGlen Barbertime on some systems. 387a8c229a5SGlen Barber.It Va VMBASE 388a8c229a5SGlen BarberSet to change the name of the resulting virtual machine disk image file. 389a8c229a5SGlen BarberThe default value is 390a8c229a5SGlen Barber.Va vm . 391a8c229a5SGlen Barber.It Va VMSIZE 392a8c229a5SGlen BarberSet to change the size of the virtual machine disk capacity. 393a8c229a5SGlen BarberThe default value is 394a8c229a5SGlen Barber.Va 20G . 395a8c229a5SGlen BarberSee 396a8c229a5SGlen Barber.Xr truncate 1 397a8c229a5SGlen Barberfor valid values. 398a8c229a5SGlen Barber.Pp 399a8c229a5SGlen BarberVirtual machine disk images are, by default, created as sparse images. 400a8c229a5SGlen BarberWhen 401a8c229a5SGlen Barber.Va WITH_COMPRESSED_VMIMAGES 402a8c229a5SGlen Barberis used, the resulting files compressed with 403a8c229a5SGlen Barber.Xr xz 1 404a8c229a5SGlen Barbercompress to roughly the same size, regardless of the specified disk image 405a8c229a5SGlen Barbersize. 406a8c229a5SGlen Barber.It Va VMFORMATS 407a8c229a5SGlen BarberSet to the target virtual disk image format(s) to create. 408a8c229a5SGlen BarberBy default, the 409a8c229a5SGlen Barber.Va vhdf , Va vmdk , Va qcow2 , 410a8c229a5SGlen Barberand 411a8c229a5SGlen Barber.Va raw 412a8c229a5SGlen Barberformats are created. 413a8c229a5SGlen BarberSee 414a8c229a5SGlen Barber.Xr mkimg 1 415a8c229a5SGlen Barberfor valid format values 416a8c229a5SGlen Barber.Pq requires version 20140927 or later . 417a8c229a5SGlen Barber.El 41885311c29SGlen Barber.Pp 41985311c29SGlen BarberFor a list of supported 42085311c29SGlen Barber.Va VMFORMATS 42185311c29SGlen Barbervalues 42285311c29SGlen Barber.Pq including cloud hosting provider formats 42385311c29SGlen Barberalong with a brief description, run: 42485311c29SGlen Barber.Bd -literal -offset indent 42585311c29SGlen Barbercd /usr/src 42685311c29SGlen Barbermake -C release list-vmtargets 42785311c29SGlen Barber.Ed 428b513fff0SGlen Barber.Sh CLOUD HOSTING MACHINE IMAGES 429b513fff0SGlen BarberThe 430b513fff0SGlen Barber.Fx 431b513fff0SGlen Barberrelease build tools support building virtual machine images for various 432b513fff0SGlen Barbercloud hosting providers, each with their own specific configuration to 433b513fff0SGlen Barberinclude support for each hosting provider by default. 434b513fff0SGlen Barber.Pp 435b513fff0SGlen BarberThe following 436b513fff0SGlen Barber.Xr make 1 437b513fff0SGlen Barberenvironment variables are supported: 438b513fff0SGlen Barber.Pp 439b513fff0SGlen Barber.Bl -tag -width Ev 440b513fff0SGlen Barber.It Va CLOUDWARE 441b513fff0SGlen BarberSet to a list of one or more cloud hosting providers, enclosed in quotes. 442b513fff0SGlen BarberRequires 443b513fff0SGlen Barber.Va WITH_CLOUDWARE 444b513fff0SGlen Barberto also be set. 445b513fff0SGlen Barber.It Va WITH_CLOUDWARE 446b513fff0SGlen BarberSet to a non-empty value to enable building virtual machine images 447b513fff0SGlen Barberfor various cloud hosting providers. 448b513fff0SGlen BarberRequires 449b513fff0SGlen Barber.Va CLOUDWARE 450b513fff0SGlen Barberto also be set. 451b513fff0SGlen Barber.El 452b513fff0SGlen Barber.Pp 453b513fff0SGlen BarberAdditionally, the 454b513fff0SGlen Barber.Va CLOUDWARE 455b513fff0SGlen Barberand 456b513fff0SGlen Barber.Va WITH_CLOUDWARE 457b513fff0SGlen Barbervariables can be added to 458b513fff0SGlen Barber.Pa release.conf , 459b513fff0SGlen Barberand used in conjunction with 460b513fff0SGlen Barber.Pa release.sh . 461b513fff0SGlen Barber.Pp 462b513fff0SGlen BarberFor a list of supported 463b513fff0SGlen Barber.Va CLOUDWARE 464b513fff0SGlen Barbervalues, run: 465b513fff0SGlen Barber.Bd -literal -offset indent 466b513fff0SGlen Barbercd /usr/src 467b513fff0SGlen Barbermake -C release list-cloudware 468b513fff0SGlen Barber.Ed 469e8423d00SNathan Whitehorn.Sh MAKEFILE TARGETS 470de26e0adSMurray StokelyThe release makefile 471994c71f0SMurray Stokely.Pq Pa src/release/Makefile 472de26e0adSMurray Stokelyis fairly abstruse. 473de26e0adSMurray StokelyMost developers will only be concerned with the 474afb33690SMurray Stokely.Cm release 475299a8b95SNathan Whitehornand 476299a8b95SNathan Whitehorn.Cm install 477299a8b95SNathan Whitehorntargets. 478994c71f0SMurray Stokely.\" XXX: Some sort of introduction to this list? All the others have one. 479e8423d00SNathan Whitehorn.Bl -tag -width ".Cm packagesystem" 480afb33690SMurray Stokely.It Cm release 481e8423d00SNathan WhitehornMeta-target to build all release media and distributions applicable to this 482299a8b95SNathan Whitehornplatform. 483299a8b95SNathan Whitehorn.It Cm install 484299a8b95SNathan WhitehornCopy all produced release media to 485299a8b95SNathan Whitehorn.Pa ${DESTDIR} . 486e8423d00SNathan Whitehorn.It Cm cdrom 487de17cbccSHiroki SatoBuilds installation CD-ROM images. 488de17cbccSHiroki SatoThis may require the 489e8423d00SNathan Whitehorn.Xr md 4 490e8423d00SNathan Whitehorn(memory disk) device driver be present in the kernel 491de17cbccSHiroki Sato(either by being compiled in or available as a module). 492de17cbccSHiroki SatoThis target produces files called 493ebe27856SGlen Barber.Pa disc1.iso 494299a8b95SNathan Whitehornand 495299a8b95SNathan Whitehorn.Pa bootonly.iso 496e8423d00SNathan Whitehornas its output. 497d7cfbadbSGlen Barber.It Cm dvdrom 498d7cfbadbSGlen BarberBuilds installation DVD-ROM images. 499d7cfbadbSGlen BarberThis may require the 500d7cfbadbSGlen Barber.Xr md 4 501d7cfbadbSGlen Barber(memory disk) device driver be present in the kernel 502d7cfbadbSGlen Barber(either by being compiled in or available as a module). 503d7cfbadbSGlen BarberThis target produces the 504d7cfbadbSGlen Barber.Pa dvd1.iso 505d7cfbadbSGlen Barberfile as its output. 506e8423d00SNathan Whitehorn.It Cm memstick 507e8423d00SNathan WhitehornBuilds an installation memory stick image named 508ebe27856SGlen Barber.Pa memstick.img . 509de17cbccSHiroki SatoNot applicable on all platforms. 510de17cbccSHiroki SatoRequires that the 511e8423d00SNathan Whitehorn.Xr md 4 512ebe27856SGlen Barber.Pq memory disk 513ebe27856SGlen Barberdevice driver be present in the kernel 514ebe27856SGlen Barber.Pq either by being compiled in or available as a module . 51516fb00c1SGlen Barber.It Cm mini-memstick 51616fb00c1SGlen BarberSimilar to 51716fb00c1SGlen Barber.Cm memstick , 51816fb00c1SGlen Barberwith the exception that the installation distribution sets 51916fb00c1SGlen Barberare not included. 520e8423d00SNathan Whitehorn.It Cm ftp 521e8423d00SNathan WhitehornCreates a directory named 522e8423d00SNathan Whitehorn.Pa ftp 523e8423d00SNathan Whitehorncontaining the distribution files used in network installations 524e8423d00SNathan Whitehornand suitable for upload to an FTP mirror. 525a8c229a5SGlen Barber.It Cm vm-image 526a8c229a5SGlen BarberCreates virtual machine disk images in various formats. 527a8c229a5SGlen BarberThe 528a8c229a5SGlen Barber.Cm vm-image 529a8c229a5SGlen Barbertarget requires the 530a8c229a5SGlen Barber.Va WITH_VMIMAGES 531a8c229a5SGlen Barber.Xr make 1 532a8c229a5SGlen Barberenvirionment variable to be set to a non-null value. 533b513fff0SGlen Barber.It Cm vm-cloudware 534b513fff0SGlen BarberBuilds 535b513fff0SGlen Barber.Fx 536b513fff0SGlen Barbervirtual machine images for various cloud hosting providers. 537b513fff0SGlen BarberSee 538b513fff0SGlen Barber.Qq CLOUD HOSTING MACHINE IMAGES 539b513fff0SGlen Barberfor implementation details. 540b513fff0SGlen Barber.It Cm list-cloudware 541b513fff0SGlen BarberDisplays the list of valid 542b513fff0SGlen Barber.Va CLOUDWARE 543b513fff0SGlen Barbervalues. 54485311c29SGlen Barber.It Cm list-vmtargets 54585311c29SGlen BarberDisplays the list of valid 54685311c29SGlen Barber.Va VMFORMAT 54785311c29SGlen Barberand 54885311c29SGlen Barber.Va CLOUDWARE 54985311c29SGlen Barbervalues. 550de26e0adSMurray Stokely.El 551de26e0adSMurray Stokely.Pp 552e8423d00SNathan WhitehornMajor subtargets called by targets above: 553e8423d00SNathan Whitehorn.Bl -tag -width ".Cm packagesystem" 554e8423d00SNathan Whitehorn.It Cm packagesystem 555ebe27856SGlen BarberGenerates all the distribution archives 556ebe27856SGlen Barber.Pq base, kernel, ports, doc 557e8423d00SNathan Whitehornapplicable on this platform. 55847176cacSGlen Barber.It Cm disc1 559e8423d00SNathan WhitehornBuilds a bootable installation system containing all the distribution files 560e8423d00SNathan Whitehornpackaged by the 561e8423d00SNathan Whitehorn.Cm packagesystem 562e8423d00SNathan Whitehorntarget, and suitable for imaging by the 563d7cfbadbSGlen Barber.Cm cdrom , 564d7cfbadbSGlen Barber.Cm dvdrom 565e8423d00SNathan Whitehornand 566e8423d00SNathan Whitehorn.Cm memstick 567e8423d00SNathan Whitehorntargets. 568e8423d00SNathan Whitehorn.It Cm reldoc 569994c71f0SMurray StokelyBuilds the release documentation. 570994c71f0SMurray StokelyThis includes the release notes, 571ebe27856SGlen Barberhardware guide, and installation instructions. 572ebe27856SGlen BarberOther documentation, such as the Handbook, 573ebe27856SGlen Barberis built during the 574e8423d00SNathan Whitehorn.Cm base.txz 575e8423d00SNathan Whitehorntarget invoked by 576e8423d00SNathan Whitehorn.Cm packagesystem . 577de26e0adSMurray Stokely.El 578de26e0adSMurray Stokely.Sh ENVIRONMENT 579de26e0adSMurray StokelyOptional variables: 580de17cbccSHiroki Sato.Bl -tag -width ".Ev TARGET_ARCH" 581de17cbccSHiroki Sato.It Ev OSRELEASE 582ebe27856SGlen BarberOptional base name for generated media images 583ebe27856SGlen Barber.Pq e.g., FreeBSD-9.0-RC2-amd64 . 584de17cbccSHiroki SatoDefaults to the output of 585de17cbccSHiroki Sato.Ic `uname -s`-`uname -r`-`uname -p` 586de17cbccSHiroki Satowithin the chroot. 587de17cbccSHiroki Sato.It Ev WORLDDIR 588ebe27856SGlen BarberLocation of a directory containing the src tree. 589ebe27856SGlen BarberBy default, the directory 590e8423d00SNathan Whitehornabove the one containing the makefile 591e8423d00SNathan Whitehorn.Pq Pa src . 592de17cbccSHiroki Sato.It Ev PORTSDIR 593ebe27856SGlen BarberLocation of a directory containing the ports tree. 594ebe27856SGlen BarberBy default, 595e8423d00SNathan Whitehorn.Pa /usr/ports . 596e8423d00SNathan WhitehornIf it is unset or cannot be found, ports will not be included in the release. 597de17cbccSHiroki Sato.It Ev DOCDIR 598ebe27856SGlen BarberLocation of a directory containing the doc tree. 599ebe27856SGlen BarberBy default, 600e8423d00SNathan Whitehorn.Pa /usr/doc . 601e8423d00SNathan WhitehornIf it is unset or cannot be found, most documentation will not be included in 602e8423d00SNathan Whitehornthe release; see 603e8423d00SNathan Whitehorn.Ev NODOC 604e8423d00SNathan Whitehornbelow. 605de17cbccSHiroki Sato.It Ev NOPORTS 606e8423d00SNathan WhitehornIf defined, the Ports Collection will be omitted from the release. 607de17cbccSHiroki Sato.It Ev NOSRC 608e8423d00SNathan WhitehornIf set, do not include system source code in the release. 609de17cbccSHiroki Sato.It Ev NODOC 6100cd4fb92SGlen BarberIf defined, the XML-based documentation from the 611de26e0adSMurray Stokely.Fx 612eee69fccSMurray StokelyDocumentation Project will not be built. 613eee69fccSMurray StokelyHowever, the 614eee69fccSMurray Stokely.Dq doc 615eee69fccSMurray Stokelydistribution will still be created with the minimal documentation set 616eee69fccSMurray Stokelyprovided in 617eee69fccSMurray Stokely.Pa src/share/doc . 618de17cbccSHiroki Sato.It Ev TARGET 61925923b97SRuslan ErmilovThe target hardware platform. 62025923b97SRuslan ErmilovThis is analogous to the 62125923b97SRuslan Ermilov.Dq Nm uname Fl m 62225923b97SRuslan Ermilovoutput. 62325923b97SRuslan ErmilovThis is necessary to cross-build some target architectures. 62425923b97SRuslan ErmilovFor example, cross-building for PC98 machines requires 625de17cbccSHiroki Sato.Ev TARGET_ARCH Ns = Ns Li i386 62625923b97SRuslan Ermilovand 627de17cbccSHiroki Sato.Ev TARGET Ns = Ns Li pc98 . 628e8423d00SNathan WhitehornIf not set, 629de17cbccSHiroki Sato.Ev TARGET 630e8423d00SNathan Whitehorndefaults to the current hardware platform. 631de17cbccSHiroki Sato.It Ev TARGET_ARCH 632e8423d00SNathan WhitehornThe target machine processor architecture. 633e8423d00SNathan WhitehornThis is analogous to the 634e8423d00SNathan Whitehorn.Dq Nm uname Fl p 635e8423d00SNathan Whitehornoutput. 636e8423d00SNathan WhitehornSet this to cross-build for a different architecture. 637e8423d00SNathan WhitehornIf not set, 638de17cbccSHiroki Sato.Ev TARGET_ARCH 639e8423d00SNathan Whitehorndefaults to the current machine architecture, unless 640de17cbccSHiroki Sato.Ev TARGET 641e8423d00SNathan Whitehornis also set, in which case it defaults to the appropriate 642e8423d00SNathan Whitehornvalue for that platform. 643e8423d00SNathan WhitehornTypically, one only needs to set 644de17cbccSHiroki Sato.Ev TARGET . 645de26e0adSMurray Stokely.El 646de26e0adSMurray Stokely.Sh FILES 64782f39c10SGlen Barber.Bl -tag -compact -width Pa 648de26e0adSMurray Stokely.It Pa /usr/doc/Makefile 649de26e0adSMurray Stokely.It Pa /usr/doc/share/mk/doc.project.mk 650de26e0adSMurray Stokely.It Pa /usr/ports/Mk/bsd.port.mk 651de26e0adSMurray Stokely.It Pa /usr/ports/Mk/bsd.sites.mk 652de26e0adSMurray Stokely.It Pa /usr/share/examples/etc/make.conf 653de26e0adSMurray Stokely.It Pa /usr/src/Makefile 654de26e0adSMurray Stokely.It Pa /usr/src/Makefile.inc1 655de26e0adSMurray Stokely.It Pa /usr/src/release/Makefile 656b513fff0SGlen Barber.It Pa /usr/src/release/Makefile.vm 657ebe27856SGlen Barber.It Pa /usr/src/release/release.sh 658ebe27856SGlen Barber.It Pa /usr/src/release/release.conf.sample 659b513fff0SGlen Barber.It Pa /usr/src/release/tools/*.conf 660b513fff0SGlen Barber.It Pa /usr/src/release/tools/vmimage.subr 661de26e0adSMurray Stokely.El 662de26e0adSMurray Stokely.Sh EXAMPLES 663e8423d00SNathan WhitehornThe following sequence of commands can be used to build a 664e8423d00SNathan Whitehorn.Dq "-CURRENT snapshot": 665de26e0adSMurray Stokely.Bd -literal -offset indent 666de26e0adSMurray Stokelycd /usr 667e8423d00SNathan Whitehornsvn co svn://svn.freebsd.org/base/head src 668de26e0adSMurray Stokelycd src 669d408a341SNathan Whitehornmake buildworld buildkernel 670de26e0adSMurray Stokelycd release 6718ef63d0dSNathan Whitehornmake release 6728ef63d0dSNathan Whitehornmake install DESTDIR=/var/freebsd-snapshot 673de26e0adSMurray Stokely.Ed 674de26e0adSMurray Stokely.Pp 675299a8b95SNathan WhitehornAfter running these commands, all produced distribution files (tarballs 676299a8b95SNathan Whitehornfor FTP, CD-ROM images, etc.) are available in the 677299a8b95SNathan Whitehorn.Pa /var/freebsd-snapshot 678de26e0adSMurray Stokelydirectory. 679de26e0adSMurray Stokely.Pp 680994c71f0SMurray StokelyThe following sequence of commands can be used to build a 6811bcf2f1aSMurray Stokely.Dq "-CURRENT snapshot" 682e8423d00SNathan Whitehornin a clean environment, including ports and documentation: 683de26e0adSMurray Stokely.Bd -literal -offset indent 6845af5af75SGleb Smirnoffcd /usr/src/release 685ebe27856SGlen Barbersh release.sh 686ebe27856SGlen Barber.Ed 687ebe27856SGlen Barber.Pp 688ebe27856SGlen BarberOptionally, a configuration file can be used customize the release build, 689ebe27856SGlen Barbersuch as the subversion revision to use, the branch of the subversion tree for 690ebe27856SGlen Barber.Li src/ , 691ebe27856SGlen Barber.Li ports/ , 692ebe27856SGlen Barberand 693ebe27856SGlen Barber.Li doc/ . 694ebe27856SGlen Barber.Bd -literal -offset indent 695ebe27856SGlen Barbercd /usr/src/release 696ebe27856SGlen Barbersh release.sh -c $HOME/release.conf 697de26e0adSMurray Stokely.Ed 698e8423d00SNathan Whitehorn.Pp 699e8423d00SNathan WhitehornAfter running these commands, all prepared release files are available in the 700ebe27856SGlen Barber.Pa /scratch 701e8423d00SNathan Whitehorndirectory. 702ebe27856SGlen BarberThe target directory can be changed by specifying the 703ebe27856SGlen Barber.Va CHROOTDIR 704ebe27856SGlen Barbervariable in 705ebe27856SGlen Barber.Li release.conf . 706de26e0adSMurray Stokely.Sh SEE ALSO 707de26e0adSMurray Stokely.Xr cc 1 , 708de26e0adSMurray Stokely.Xr install 1 , 709de26e0adSMurray Stokely.Xr make 1 , 710af285c09SGlen Barber.Xr svn 1 Pq Pa ports/devel/subversion , 711de26e0adSMurray Stokely.Xr uname 1 , 712afb33690SMurray Stokely.Xr md 4 , 713de26e0adSMurray Stokely.Xr make.conf 5 , 714de26e0adSMurray Stokely.Xr build 7 , 715de26e0adSMurray Stokely.Xr ports 7 , 716afb33690SMurray Stokely.Xr chroot 8 , 717f5178c4fSMurray Stokely.Xr mtree 8 , 718f5178c4fSMurray Stokely.Xr sysctl 8 719994c71f0SMurray Stokely.Rs 7201bcf2f1aSMurray Stokely.%T "FreeBSD Release Engineering" 721aa4a335bSRuslan Ermilov.%U http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/ 722994c71f0SMurray Stokely.Re 723994c71f0SMurray Stokely.Rs 7241bcf2f1aSMurray Stokely.%T "FreeBSD Release Engineering of Third Party Packages" 725aa4a335bSRuslan Ermilov.%U http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/ 726994c71f0SMurray Stokely.Re 727994c71f0SMurray Stokely.Rs 7281bcf2f1aSMurray Stokely.%T "FreeBSD Developers' Handbook" 729aa4a335bSRuslan Ermilov.%U http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/ 730994c71f0SMurray Stokely.Re 731de26e0adSMurray Stokely.Sh HISTORY 732de26e0adSMurray Stokely.Fx 733de26e0adSMurray Stokely1.x 7341bcf2f1aSMurray Stokelyused a manual checklist, compiled by 7351bcf2f1aSMurray Stokely.An Rod Grimes , 7361bcf2f1aSMurray Stokelyto produce a release. 737de26e0adSMurray StokelyApart from being incomplete, the list put a lot of specific demands on 738de26e0adSMurray Stokelyavailable file systems and was quite torturous to execute. 739de26e0adSMurray Stokely.Pp 740994c71f0SMurray StokelyAs part of the 741994c71f0SMurray Stokely.Fx 2.0 742994c71f0SMurray Stokelyrelease engineering effort, significant 743de26e0adSMurray Stokelyeffort was spent getting 744de26e0adSMurray Stokely.Pa src/release/Makefile 745de26e0adSMurray Stokelyinto a shape where it could at least automate most of the tediousness 746de26e0adSMurray Stokelyof building a release in a sterile environment. 747de26e0adSMurray Stokely.Pp 748e8423d00SNathan WhitehornFor the 749e8423d00SNathan Whitehorn.Fx 9.0 750e8423d00SNathan Whitehornrelease, 751e8423d00SNathan Whitehorn.Pa src/release/Makefile 752e8423d00SNathan Whitehornwas overhauled and the wrapper script 753e8423d00SNathan Whitehorn.Pa src/release/generate-release.sh 754e8423d00SNathan Whitehornintroduced to support the introduction of a new installer. 755e8423d00SNathan Whitehorn.Pp 756ebe27856SGlen BarberFor the 757ebe27856SGlen Barber.Fx 9.2 758ebe27856SGlen Barberrelease, 759ebe27856SGlen Barber.Pa src/release/release.sh 760ebe27856SGlen Barberwas introduced to support per-build configuration files. 761ebe27856SGlen Barber.Pa src/release/release.sh 762ebe27856SGlen Barberis heavily based on the 763ebe27856SGlen Barber.Pa src/release/generate-release.sh 764ebe27856SGlen Barberscript. 765ebe27856SGlen Barber.Pp 766594ca9baSTom RhodesAt near 1000 revisions spread over multiple branches, the 7670cd4fb92SGlen Barber.Xr svn 1 768994c71f0SMurray Stokelylog of 769994c71f0SMurray Stokely.Pa src/release/Makefile 770994c71f0SMurray Stokelycontains a vivid historical record of some 771de26e0adSMurray Stokelyof the hardships release engineers go through. 772de26e0adSMurray Stokely.Sh AUTHORS 773de26e0adSMurray Stokely.Pa src/release/Makefile 774afb33690SMurray Stokelywas originally written by 775afb33690SMurray Stokely.An -nosplit 776afb33690SMurray Stokely.An Rod Grimes , 777afb33690SMurray Stokely.An Jordan Hubbard , 778afb33690SMurray Stokelyand 779afb33690SMurray Stokely.An Poul-Henning Kamp . 780ebe27856SGlen Barber.Pp 781ebe27856SGlen BarberThis manual page was originally written by 782a63d6c94SBaptiste Daroussin.An Murray Stokely Aq Mt murray@FreeBSD.org . 783ebe27856SGlen Barber.Pp 784ebe27856SGlen BarberIt was updated by 785a63d6c94SBaptiste Daroussin.An Nathan Whitehorn Aq Mt nwhitehorn@FreeBSD.org 786ebe27856SGlen Barberto include the 787ebe27856SGlen Barber.Fa generate-release.sh 788ebe27856SGlen Barberscript used for the 789ebe27856SGlen Barber.Fx 9.0 790ebe27856SGlen Barberrelease cycle. 791ebe27856SGlen Barber.Pp 792ebe27856SGlen BarberIt was later updated by 793a63d6c94SBaptiste Daroussin.An Glen Barber Aq Mt gjb@FreeBSD.org 794ebe27856SGlen Barberto include the 795ebe27856SGlen Barber.Fa release.sh 796ebe27856SGlen Barberscript used for the 797ebe27856SGlen Barber.Fx 9.2 798ebe27856SGlen Barberrelease cycle. 799