# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2022-10-01 10:13-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: YAML Front Matter: description #: documentation/content/en/articles/releng/_index.adoc:1 #, no-wrap msgid "This paper describes the approach previously used by the FreeBSD release engineering team to make production quality releases of the FreeBSD Operating System" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/articles/releng/_index.adoc:1 #, no-wrap msgid "Legacy FreeBSD Release Engineering" msgstr "" #. type: Title = #: documentation/content/en/articles/releng/_index.adoc:12 #, no-wrap msgid "FreeBSD Release Engineering" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:45 msgid "Abstract" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/releng/_index.adoc:51 msgid "" "This document is outdated and does not accurately describe the current " "release procedures of the FreeBSD Release Engineering team. It is retained " "for historical purposes. The current procedures used by the FreeBSD Release " "Engineering team are available in the extref:{freebsd-releng}[FreeBSD " "Release Engineering] article." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:55 msgid "" "This paper describes the approach used by the FreeBSD release engineering " "team to make production quality releases of the FreeBSD Operating System. " "It details the methodology used for the official FreeBSD releases and " "describes the tools available for those interested in producing customized " "FreeBSD releases for corporate rollouts or commercial productization." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:57 msgid "'''" msgstr "" #. type: Title == #: documentation/content/en/articles/releng/_index.adoc:61 #, no-wrap msgid "Introduction" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:71 msgid "" "The development of FreeBSD is a very open process. FreeBSD is comprised of " "contributions from thousands of people around the world. The FreeBSD " "Project provides Subversion footnote:[Subversion, http://subversion.apache." "org] access to the general public so that others can have access to log " "messages, diffs (patches) between development branches, and other " "productivity enhancements that formal source code management provides. This " "has been a huge help in attracting more talented developers to FreeBSD. " "However, I think everyone would agree that chaos would soon manifest if " "write access to the main repository was opened up to everyone on the " "Internet. Therefore only a \"select\" group of nearly 300 people are given " "write access to the Subversion repository. These extref:{contributors}" "[FreeBSD committers, staff-committers]footnote:[extref:{contributors}" "[FreeBSD committers, staff-committers]] are usually the people who do the " "bulk of FreeBSD development. An elected link:https://www.FreeBSD.org/" "administration/#t-core[Core Team]footnote:[link:https://www.FreeBSD.org/" "administration/#t-core[FreeBSD Core Team]] of developers provide some level " "of direction over the project." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:76 msgid "" "The rapid pace of `FreeBSD` development makes the main development branch " "unsuitable for the everyday use by the general public. In particular, " "stabilizing efforts are required for polishing the development system into a " "production quality release. To solve this conflict, development continues " "on several parallel tracks. The main development branch is the _HEAD_ or " "_trunk_ of our Subversion tree, known as \"FreeBSD-CURRENT\" or \"-CURRENT\" " "for short." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:82 msgid "" "A set of more stable branches are maintained, known as \"FreeBSD-STABLE\" or " "\"-STABLE\" for short. All branches live in a master Subversion repository " "maintained by the FreeBSD Project. FreeBSD-CURRENT is the \"bleeding-edge\" " "of FreeBSD development where all new changes first enter the system. " "FreeBSD-STABLE is the development branch from which major releases are " "made. Changes go into this branch at a different pace, and with the general " "assumption that they have first gone into FreeBSD-CURRENT and have been " "thoroughly tested by our user community." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:87 msgid "" "The term _stable_ in the name of the branch refers to the presumed " "Application Binary Interface stability, which is promised by the project. " "This means that a user application compiled on an older version of the " "system from the same branch works on a newer system from the same branch. " "The ABI stability has improved greatly from the compared to previous " "releases. In most cases, binaries from the older _STABLE_ systems run " "unmodified on newer systems, including __HEAD__, assuming that the system " "management interfaces are not used." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:90 msgid "" "In the interim period between releases, weekly snapshots are built " "automatically by the FreeBSD Project build machines and made available for " "download from `ftp://ftp.FreeBSD.org/pub/FreeBSD/snapshots/`. The " "widespread availability of binary release snapshots, and the tendency of our " "user community to keep up with -STABLE development with Subversion and " "\"`make buildworld`\" footnote:[extref:{handbook}[Rebuilding world, " "makeworld]] helps to keep FreeBSD-STABLE in a very reliable condition even " "before the quality assurance activities ramp up pending a major release." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:93 msgid "" "In addition to installation ISO snapshots, weekly virtual machine images are " "also provided for use with VirtualBox, qemu, or other popular emulation " "software. The virtual machine images can be downloaded from `ftp://ftp." "FreeBSD.org/pub/FreeBSD/snapshots/VM-IMAGES/`." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:95 msgid "" "The virtual machine images are approximately 150MB man:xz[1] compressed, and " "contain a 10GB sparse filesystem when attached to a virtual machine." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:98 msgid "" "Bug reports and feature requests are continuously submitted by users " "throughout the release cycle. Problems reports are entered into our " "Bugzilla database through the web interface provided at https://www.freebsd." "org/support/bugreports/[https://www.freebsd.org/support/bugreports/]." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:103 msgid "" "To service our most conservative users, individual release branches were " "introduced with FreeBSD 4.3. These release branches are created shortly " "before a final release is made. After the release goes out, only the most " "critical security fixes and additions are merged onto the release branch. " "In addition to source updates via Subversion, binary patchkits are available " "to keep systems on the _releng/X.Y_ branches updated." msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:104 #, no-wrap msgid "What This Article Describes" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:107 msgid "The following sections of this article describe:" msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:108 #, no-wrap msgid "<>" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:110 msgid "" "The different phases of the release engineering process leading up to the " "actual system build." msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:111 #, no-wrap msgid "<>" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:113 msgid "The actual build process." msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:114 #, no-wrap msgid "<>" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:116 msgid "How the base release may be extended by third parties." msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:117 #, no-wrap msgid "<>" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:119 msgid "Some of the lessons learned through the release of FreeBSD 4.4." msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:120 #, no-wrap msgid "<>" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:122 msgid "Future directions of development." msgstr "" #. type: Title == #: documentation/content/en/articles/releng/_index.adoc:124 #, no-wrap msgid "Release Process" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:129 msgid "" "New releases of FreeBSD are released from the -STABLE branch at " "approximately four month intervals. The FreeBSD release process begins to " "ramp up 70-80 days before the anticipated release date when the release " "engineer sends an email to the development mailing lists to remind " "developers that they only have 15 days to integrate new changes before the " "code freeze. During this time, many developers perform what have become " "known as \"MFC sweeps\"." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:133 msgid "" "MFC stands for \"Merge From CURRENT\" and it describes the process of " "merging a tested change from our -CURRENT development branch to our -STABLE " "branch. Project policy requires any change to be first applied to trunk, " "and merged to the -STABLE branches after sufficient external testing was " "done by -CURRENT users (developers are expected to extensively test the " "change before committing to -CURRENT, but it is impossible for a person to " "exercise all usages of the general-purpose operating system). Minimal MFC " "period is 3 days, which is typically used only for trivial or critical " "bugfixes." msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:134 #, no-wrap msgid "Code Review" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:140 msgid "" "Sixty days before the anticipated release, the source repository enters a " "\"code freeze\". During this time, all commits to the -STABLE branch must " "be approved by `{re}`. The approval process is technically enforced by a " "pre-commit hook. The kinds of changes that are allowed during this period " "include:" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:142 msgid "Bug fixes." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:143 msgid "Documentation updates." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:144 msgid "Security-related fixes of any kind." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:145 msgid "Minor changes to device drivers, such as adding new Device IDs." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:146 msgid "Driver updates from the vendors." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:147 msgid "" "Any additional change that the release engineering team feels is justified, " "given the potential risk." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:151 msgid "" "Shortly after the code freeze is started, a _BETA1_ image is built and " "released for widespread testing. During the code freeze, at least one beta " "image or release candidate is released every two weeks until the final " "release is ready. During the days preceding the final release, the release " "engineering team is in constant communication with the security-officer " "team, the documentation maintainers, and the port maintainers to ensure that " "all of the different components required for a successful release are " "available." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:154 msgid "" "After the quality of the BETA images is satisfying enough, and no large and " "potentially risky changes are planned, the release branch is created and " "_Release Candidate_ (RC) images are built from the release branch, instead " "of the BETA images from the STABLE branch. Also, the freeze on the STABLE " "branch is lifted and release branch enters a \"hard code freeze\" where it " "becomes much harder to justify new changes to the system unless a serious " "bug-fix or security issue is involved." msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:155 #, no-wrap msgid "Final Release Checklist" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:158 msgid "" "When several BETA images have been made available for widespread testing and " "all major issues have been resolved, the final release \"polishing\" can " "begin." msgstr "" #. type: Title ==== #: documentation/content/en/articles/releng/_index.adoc:160 #, no-wrap msgid "Creating the Release Branch" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/releng/_index.adoc:165 msgid "" "In all examples below, `$FSVN` refers to the location of the FreeBSD " "Subversion repository, `svn+ssh://svn.FreeBSD.org/base/`." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:169 msgid "" "The layout of FreeBSD branches in Subversion is described in the extref:" "{committers-guide}[Committer's Guide, subversion-primer-base-layout]. The " "first step in creating a branch is to identify the revision of the `stable/" "_X_` sources that you want to branch _from_." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/releng/_index.adoc:173 #, no-wrap msgid "# svn log -v $FSVN/stable/9\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:176 msgid "The next step is to create the _release branch_" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/releng/_index.adoc:180 #, no-wrap msgid "# svn cp $FSVN/stable/9@REVISION $FSVN/releng/9.2\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:183 msgid "This branch can be checked out:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/releng/_index.adoc:187 #, no-wrap msgid "# svn co $FSVN/releng/9.2 src\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/releng/_index.adoc:192 msgid "" "Creating the `releng` branch and `release` tags is done by the link:https://" "www.FreeBSD.org/administration/#t-re[Release Engineering Team]." msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' #: documentation/content/en/articles/releng/_index.adoc:194 #, no-wrap msgid "FreeBSD Development Branch" msgstr "" #. type: Target for macro image #: documentation/content/en/articles/releng/_index.adoc:194 #, no-wrap msgid "branches-head.png" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' #: documentation/content/en/articles/releng/_index.adoc:196 #, no-wrap msgid "FreeBSD 3.x STABLE Branch" msgstr "" #. type: Target for macro image #: documentation/content/en/articles/releng/_index.adoc:196 #, no-wrap msgid "branches-releng3.png" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' #: documentation/content/en/articles/releng/_index.adoc:198 #, no-wrap msgid "FreeBSD 4.x STABLE Branch" msgstr "" #. type: Target for macro image #: documentation/content/en/articles/releng/_index.adoc:198 #, no-wrap msgid "branches-releng4.png" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' #: documentation/content/en/articles/releng/_index.adoc:200 #, no-wrap msgid "FreeBSD 5.x STABLE Branch" msgstr "" #. type: Target for macro image #: documentation/content/en/articles/releng/_index.adoc:200 #, no-wrap msgid "branches-releng5.png" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' #: documentation/content/en/articles/releng/_index.adoc:202 #, no-wrap msgid "FreeBSD 6.x STABLE Branch" msgstr "" #. type: Target for macro image #: documentation/content/en/articles/releng/_index.adoc:202 #, no-wrap msgid "branches-releng6.png" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' #: documentation/content/en/articles/releng/_index.adoc:204 #, no-wrap msgid "FreeBSD 7.x STABLE Branch" msgstr "" #. type: Target for macro image #: documentation/content/en/articles/releng/_index.adoc:204 #, no-wrap msgid "branches-releng7.png" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' #: documentation/content/en/articles/releng/_index.adoc:206 #, no-wrap msgid "FreeBSD 8.x STABLE Branch" msgstr "" #. type: Target for macro image #: documentation/content/en/articles/releng/_index.adoc:206 #, no-wrap msgid "branches-releng8.png" msgstr "" #. type: Positional ($1) AttributeList argument for macro 'image' #: documentation/content/en/articles/releng/_index.adoc:208 #, no-wrap msgid "FreeBSD 9.x STABLE Branch" msgstr "" #. type: Target for macro image #: documentation/content/en/articles/releng/_index.adoc:208 #, no-wrap msgid "branches-releng9.png" msgstr "" #. type: Title ==== #: documentation/content/en/articles/releng/_index.adoc:211 #, no-wrap msgid "Bumping up the Version Number" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:214 msgid "" "Before the final release can be tagged, built, and released, the following " "files need to be modified to reflect the correct version of FreeBSD:" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:216 msgid "[.filename]#doc/en_US.ISO8859-1/books/handbook/mirrors/chapter.xml#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:217 msgid "[.filename]#doc/en_US.ISO8859-1/books/porters-handbook/book.xml#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:218 msgid "[.filename]#doc/en_US.ISO8859-1/htdocs/cgi/ports.cgi#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:219 msgid "[.filename]#ports/Tools/scripts/release/config#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:220 msgid "[.filename]#doc/shared/xml/freebsd.ent#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:221 msgid "[.filename]#src/Makefile.inc1#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:222 msgid "[.filename]#src/UPDATING#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:223 msgid "[.filename]#src/gnu/usr.bin/groff/tmac/mdoc.local#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:224 msgid "[.filename]#src/release/Makefile#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:225 msgid "[.filename]#src/release/doc/en_US.ISO8859-1/shared/xml/release.dsl#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:226 msgid "[.filename]#src/release/doc/shared/examples/Makefile.relnotesng#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:227 msgid "[.filename]#src/release/doc/shared/xml/release.ent#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:228 msgid "[.filename]#src/sys/conf/newvers.sh#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:229 msgid "[.filename]#src/sys/sys/param.h#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:230 msgid "[.filename]#src/usr.sbin/pkg_install/add/main.c#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:231 msgid "[.filename]#doc/en_US.ISO8859-1/htdocs/search/opensearch/man.xml#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:233 msgid "" "The release notes and errata files also need to be adjusted for the new " "release (on the release branch) and truncated appropriately (on the stable/" "current branch):" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:235 msgid "[.filename]#src/release/doc/en_US.ISO8859-1/relnotes/common/new.xml#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:236 msgid "[.filename]#src/release/doc/en_US.ISO8859-1/errata/article.xml#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:240 msgid "" "Sysinstall should be updated to note the number of available ports and the " "amount of disk space required for the Ports Collection. footnote:[FreeBSD " "Ports Collection https://www.FreeBSD.org/ports] This information is " "currently kept in [.filename]#src/usr.sbin/bsdinstall/dist.c#." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:243 msgid "" "After the release has been built, a number of files should be updated to " "announce the release to the world. These files are relative to `head/` " "within the `doc/` subversion tree." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:245 msgid "[.filename]#share/images/articles/releng/branches-relengX.pic#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:246 msgid "[.filename]#head/shared/xml/release.ent#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:247 msgid "[.filename]#en_US.ISO8859-1/htdocs/releases/*#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:248 msgid "[.filename]#en_US.ISO8859-1/htdocs/releng/index.xml#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:249 msgid "[.filename]#share/xml/news.xml#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:251 msgid "Additionally, update the \"BSD Family Tree\" file:" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:253 msgid "[.filename]#src/shared/misc/bsd-family-tree#" msgstr "" #. type: Title ==== #: documentation/content/en/articles/releng/_index.adoc:254 #, no-wrap msgid "Creating the Release Tag" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:257 msgid "" "When the final release is ready, the following command will create the " "`release/9.2.0` tag." msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/releng/_index.adoc:261 #, no-wrap msgid "# svn cp $FSVN/releng/9.2 $FSVN/release/9.2.0\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:264 msgid "" "The Documentation and Ports managers are responsible for tagging their " "respective trees with the `tags/RELEASE_9_2_0` tag." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:267 msgid "" "When the Subversion `svn cp` command is used to create a __release tag__, " "this identifies the source at a specific point in time. By creating tags, " "we ensure that future release builders will always be able to use the exact " "same source we used to create the official FreeBSD Project releases." msgstr "" #. type: Title == #: documentation/content/en/articles/releng/_index.adoc:269 #, no-wrap msgid "Release Building" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:280 msgid "" "FreeBSD \"releases\" can be built by anyone with a fast machine and access " "to a source repository. (That should be everyone, since we offer Subversion " "access! See the extref:{handbook}[Subversion section in the Handbook, svn] " "for details.) The _only_ special requirement is that the man:md[4] device " "must be available. If the device is not loaded into your kernel, then the " "kernel module should be automatically loaded when man:mdconfig[8] is " "executed during the boot media creation phase. All of the tools necessary " "to build a release are available from the Subversion repository in [." "filename]#src/release#. These tools aim to provide a consistent way to " "build FreeBSD releases. A complete release can actually be built with only " "a single command, including the creation of ISO images suitable for burning " "to CDROM or DVD, and an FTP install directory. man:release[7] fully " "documents the `src/release/generate-release.sh` script which is used to " "build a release. `generate-release.sh` is a wrapper around the Makefile " "target: `make release`." msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:281 #, no-wrap msgid "Building a Release" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:285 msgid "" "man:release[7] documents the exact commands required to build a FreeBSD " "release. The following sequences of commands can build an 9.2.0 release:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/releng/_index.adoc:290 #, no-wrap msgid "" "# cd /usr/src/release\n" "# sh generate-release.sh release/9.2.0 /local3/release\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:293 msgid "" "After running these commands, all prepared release files are available in [." "filename]#/local3/release/R# directory." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:295 msgid "" "The release [.filename]#Makefile# can be broken down into several distinct " "steps." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:297 msgid "" "Creation of a sanitized system environment in a separate directory hierarchy " "with \"`make installworld`\"." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:298 msgid "" "Checkout from Subversion of a clean version of the system source, " "documentation, and ports into the release build hierarchy." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:299 msgid "" "Population of [.filename]#/etc# and [.filename]#/dev# in the chrooted " "environment." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:300 msgid "" "chroot into the release build hierarchy, to make it harder for the outside " "environment to taint this build." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:301 msgid "`make world` in the chrooted environment." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:302 msgid "Build of Kerberos-related binaries." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:303 msgid "Build [.filename]#GENERIC# kernel." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:304 msgid "" "Creation of a staging directory tree where the binary distributions will be " "built and packaged." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:305 msgid "" "Build and installation of the documentation toolchain needed to convert the " "documentation source (SGML) into HTML and text documents that will accompany " "the release." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:306 msgid "" "Build and installation of the actual documentation (user manuals, tutorials, " "release notes, hardware compatibility lists, and so on.)" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:307 msgid "Package up distribution tarballs of the binaries and sources." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:308 msgid "Create FTP installation hierarchy." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:309 msgid "_(optionally)_ Create ISO images for CDROM/DVD media." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:311 msgid "" "For more information about the release build infrastructure, please see man:" "release[7]." msgstr "" #. type: delimited block = 4 #: documentation/content/en/articles/releng/_index.adoc:316 msgid "" "It is important to remove any site-specific settings from [.filename]#/etc/" "make.conf#. For example, it would be unwise to distribute binaries that " "were built on a system with `CPUTYPE` set to a specific processor." msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:318 #, no-wrap msgid "Contributed Software (\"ports\")" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:322 msgid "" "The https://www.FreeBSD.org/ports[FreeBSD Ports collection] is a collection " "of over {numports} third-party software packages available for FreeBSD. The " "`{portmgr}` is responsible for maintaining a consistent ports tree that can " "be used to create the binary packages that accompany official FreeBSD " "releases." msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:323 #, no-wrap msgid "Release ISOs" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:328 msgid "" "Starting with FreeBSD 4.4, the FreeBSD Project decided to release all four " "ISO images that were previously sold on the _BSDi/Wind River Systems/FreeBSD " "Mall_ \"official\" CDROM distributions. Each of the four discs must contain " "a [.filename]#README.TXT# file that explains the contents of the disc, a [." "filename]#CDROM.INF# file that provides meta-data for the disc so that man:" "bsdinstall[8] can validate and use the contents, and a [.filename]#filename." "txt# file that provides a manifest for the disc. This _manifest_ can be " "created with a simple command:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/articles/releng/_index.adoc:332 #, no-wrap msgid "/stage/cdrom# find . -type f | sed -e 's/^\\.\\///' | sort > filename.txt\n" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:335 msgid "The specific requirements of each CD are outlined below." msgstr "" #. type: Title ==== #: documentation/content/en/articles/releng/_index.adoc:336 #, no-wrap msgid "Disc 1" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:342 msgid "" "The first disc is almost completely created by `make release`. The only " "changes that should be made to the [.filename]#disc1# directory are the " "addition of a [.filename]#tools# directory, and as many popular third party " "software packages as will fit on the disc. The [.filename]#tools# directory " "contains software that allow users to create installation floppies from " "other operating systems. This disc should be made bootable so that users of " "modern PCs do not need to create installation floppy disks." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:347 msgid "" "If a custom kernel of FreeBSD is to be included, then man:bsdinstall[8] and " "man:release[7] must be updated to include installation instructions. The " "relevant code is contained in [.filename]#src/release# and [.filename]#src/" "usr.sbin/bsdinstall#. Specifically, the file [.filename]#src/release/" "Makefile#, and [.filename]#dist.c#, [.filename]#dist.h#, [.filename]#menus." "c#, [.filename]#install.c#, and [.filename]#Makefile# will need to be " "updated under [.filename]#src/usr.sbin/bsdinstall#. Optionally, you may " "choose to update [.filename]#bsdinstall.8#." msgstr "" #. type: Title ==== #: documentation/content/en/articles/releng/_index.adoc:348 #, no-wrap msgid "Disc 2" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:353 msgid "" "The second disc is also largely created by `make release`. This disc " "contains a \"live filesystem\" that can be used from man:bsdinstall[8] to " "troubleshoot a FreeBSD installation. This disc should be bootable and " "should also contain a compressed copy of the CVS repository in the [." "filename]#CVSROOT# directory and commercial software demos in the [." "filename]#commerce# directory." msgstr "" #. type: Title ==== #: documentation/content/en/articles/releng/_index.adoc:354 #, no-wrap msgid "Multi-volume Support" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:360 msgid "" "Sysinstall supports multiple volume package installations. This requires " "that each disc have an [.filename]#INDEX# file containing all of the " "packages on all volumes of a set, along with an extra field that indicates " "which volume that particular package is on. Each volume in the set must " "also have the `CD_VOLUME` variable set in the [.filename]#cdrom.inf# file so " "that bsdinstall can tell which volume is which. When a user attempts to " "install a package that is not on the current disc, bsdinstall will prompt " "the user to insert the appropriate one." msgstr "" #. type: Title == #: documentation/content/en/articles/releng/_index.adoc:362 #, no-wrap msgid "Distribution" msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:365 #, no-wrap msgid "FTP Sites" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:371 msgid "" "When the release has been thoroughly tested and packaged for distribution, " "the master FTP site must be updated. The official FreeBSD public FTP sites " "are all mirrors of a master server that is open only to other FTP sites. " "This site is known as `ftp-master`. When the release is ready, the " "following files must be modified on `ftp-master`:" msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:372 #, no-wrap msgid "[.filename]#/pub/FreeBSD/releases/arch/X.Y-RELEASE/#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:374 msgid "The installable FTP directory as output from `make release`." msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:375 #, no-wrap msgid "[.filename]#/pub/FreeBSD/ports/arch/packages-X.Y-release/#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:377 msgid "The complete package build for this release." msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:378 #, no-wrap msgid "[.filename]#/pub/FreeBSD/releases/arch/X.Y-RELEASE/tools#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:380 msgid "A symlink to [.filename]#../../../tools#." msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:381 #, no-wrap msgid "[.filename]#/pub/FreeBSD/releases/arch/X.Y-RELEASE/packages#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:383 msgid "A symlink to [.filename]#../../../ports/arch/packages-X.Y-release#." msgstr "" #. type: Labeled list #: documentation/content/en/articles/releng/_index.adoc:384 #, no-wrap msgid "[.filename]#/pub/FreeBSD/releases/arch/ISO-IMAGES/X.Y/X.Y-RELEASE-arch-*.iso#" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:387 msgid "" "The ISO images. The \"*\" is [.filename]#disc1#, [.filename]#disc2#, etc. " "Only if there is a [.filename]#disc1# and there is an alternative first " "installation CD (for example a stripped-down install with no windowing " "system) there may be a [.filename]#mini# as well." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:389 msgid "" "For more information about the distribution mirror architecture of the " "FreeBSD FTP sites, please see the extref:{hubs}[Mirroring FreeBSD] article." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:397 msgid "" "It may take many hours to two days after updating `ftp-master` before a " "majority of the Tier-1 FTP sites have the new software depending on whether " "or not a package set got loaded at the same time. It is imperative that the " "release engineers coordinate with the {mirror-announce} before announcing " "the general availability of new software on the FTP sites. Ideally the " "release package set should be loaded at least four days prior to release " "day. The release bits should be loaded between 24 and 48 hours before the " "planned release time with \"other\" file permissions turned off. This will " "allow the mirror sites to download it but the general public will not be " "able to download it from the mirror sites. Mail should be sent to {mirror-" "announce} at the time the release bits get posted saying the release has " "been staged and giving the time that the mirror sites should begin allowing " "access. Be sure to include a time zone with the time, for example make it " "relative to GMT." msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:399 #, no-wrap msgid "CD-ROM Replication" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:402 msgid "" "Coming soon: Tips for sending FreeBSD ISOs to a replicator and quality " "assurance measures to be taken." msgstr "" #. type: Title == #: documentation/content/en/articles/releng/_index.adoc:404 #, no-wrap msgid "Extensibility" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:411 msgid "" "Although FreeBSD forms a complete operating system, there is nothing that " "forces you to use the system exactly as we have packaged it up for " "distribution. We have tried to design the system to be as extensible as " "possible so that it can serve as a platform that other commercial products " "can be built on top of. The only \"rule\" we have about this is that if you " "are going to distribute FreeBSD with non-trivial changes, we encourage you " "to document your enhancements! The FreeBSD community can only help support " "users of the software we provide. We certainly encourage innovation in the " "form of advanced installation and administration tools, for example, but we " "cannot be expected to answer questions about it." msgstr "" #. type: Title === #: documentation/content/en/articles/releng/_index.adoc:412 #, no-wrap msgid "Scripting `bsdinstall`" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:416 msgid "" "The FreeBSD system installation and configuration tool, man:bsdinstall[8], " "can be scripted to provide automated installs for large sites. This " "functionality can be used in conjunction with Intel(R) PXE footnote:[extref:" "{handbook}[Diskless Operation with PXE, network-diskless]] to bootstrap " "systems from the network." msgstr "" #. type: Title == #: documentation/content/en/articles/releng/_index.adoc:418 #, no-wrap msgid "Lessons Learned from FreeBSD 4.4" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:425 msgid "" "The release engineering process for 4.4 formally began on August 1st, 2001. " "After that date all commits to the `RELENG_4` branch of FreeBSD had to be " "explicitly approved by the `{re}`. The first release candidate for the x86 " "architecture was released on August 16, followed by 4 more release " "candidates leading up to the final release on September 18th. The security " "officer was very involved in the last week of the process as several " "security issues were found in the earlier release candidates. A total of " "over _500_ emails were sent to the `{re}` in little over a month." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:429 msgid "" "Our user community has made it very clear that the security and stability of " "a FreeBSD release should not be sacrificed for any self-imposed deadlines or " "target release dates. The FreeBSD Project has grown tremendously over its " "lifetime and the need for standardized release engineering procedures has " "never been more apparent. This will become even more important as FreeBSD " "is ported to new platforms." msgstr "" #. type: Title == #: documentation/content/en/articles/releng/_index.adoc:431 #, no-wrap msgid "Future Directions" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:435 msgid "" "It is imperative for our release engineering activities to scale with our " "growing userbase. Along these lines we are working very hard to document " "the procedures involved in producing FreeBSD releases." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:437 msgid "" "_Parallelism_ - Certain portions of the release build are actually " "\"embarrassingly parallel\". Most of the tasks are very I/O intensive, so " "having multiple high-speed disk drives is actually more important than using " "multiple processors in speeding up the `make release` process. If multiple " "disks are used for different hierarchies in the man:chroot[2] environment, " "then the CVS checkout of the [.filename]#ports# and [.filename]#doc# trees " "can be happening simultaneously as the `make world` on another disk. Using a " "RAID solution (hardware or software) can significantly decrease the overall " "build time." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:438 msgid "" "_Cross-building releases_ - Building IA-64 or Alpha release on x86 hardware? " "`make TARGET=ia64 release`." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:439 msgid "" "_Regression Testing_ - We need better automated correctness testing for " "FreeBSD." msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:440 msgid "" "_Installation Tools_ - Our installation program has long since outlived its " "intended life span. Several projects are under development to provide a more " "advanced installation mechanism. The libh project was one such project that " "aimed to provide an intelligent new package framework and GUI installation " "program." msgstr "" #. type: Title == #: documentation/content/en/articles/releng/_index.adoc:442 #, no-wrap msgid "Acknowledgements" msgstr "" #. type: Plain text #: documentation/content/en/articles/releng/_index.adoc:447 msgid "" "I would like to thank Jordan Hubbard for giving me the opportunity to take " "on some of the release engineering responsibilities for FreeBSD 4.4 and also " "for all of his work throughout the years making FreeBSD what it is today. " "Of course the release would not have been possible without all of the " "release-related work done by `{asami}`, `{steve}`, `{bmah}`, `{nik}`, " "`{obrien}`, `{kris}`, `{jhb}` and the rest of the FreeBSD development " "community. I would also like to thank `{rgrimes}`, `{phk}`, and others who " "worked on the release engineering tools in the very early days of FreeBSD. " "This article was influenced by release engineering documents from the CSRG " "footnote:[Marshall Kirk McKusick, Michael J. Karels, and Keith Bostic: link:" "http://docs.FreeBSD.org/44doc/papers/releng.html[The Release Engineering of " "4.3BSD]] , the NetBSD Project, footnote:[NetBSD Developer Documentation: " "Release Engineering http://www.NetBSD.org/developers/releng/index.html] , " "and John Baldwin's proposed release engineering process notes. footnote:" "[John Baldwin's FreeBSD Release Engineering Proposal https://people.FreeBSD." "org/~jhb/docs/releng.txt]" msgstr ""