Source string Read only

(itstool) path: note/para

349/3490
Context English State
This controls <filename>thermite.sh</filename> behavior
<filename><replaceable>12</replaceable>-<replaceable>amd64</replaceable>-<replaceable>GENERIC</replaceable>-<replaceable>snap</replaceable>.conf</filename> -&gt; <filename>defaults-<replaceable>12</replaceable>.conf</filename> -&gt; <filename>main.conf</filename>
This controls <filename>release/release.sh</filename> behavior within the build <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>8</manvolnum></citerefentry>
The <filename>builds-<replaceable>12</replaceable>.conf</filename>, <filename>defaults-<replaceable>12</replaceable>.conf</filename>, and <filename>main.conf</filename> configuration files exist to reduce repetition between the various per-build files.
Building FreeBSD Development Snapshots
The official release build machines have a specific filesystem layout, which using <acronym>ZFS</acronym>, <filename>thermite.sh</filename> takes heavy advantage of with clones and snapshots, ensuring a pristine build environment.
The build scripts reside in <filename class="directory">/releng/scripts-snapshot/scripts</filename> or <filename class="directory">/releng/scripts-release/scripts</filename> respectively, to avoid collisions between an <literal>RC</literal> build from a releng branch versus a <literal>STABLE</literal> snapshot from the respective stable branch.
A separate dataset exists for the final build images, <filename class="directory">/snap/ftp</filename>. This directory contains both snapshots and releases directories. They are only used if the <literal>EVERYTHINGISFINE</literal> variable is defined in <filename>main.conf</filename>.
The <literal>EVERYTHINGISFINE</literal> variable name was chosen to avoid colliding with a variable that might be possibly set in the user environment, accidentally enabling the behavior that depends on it being defined.
As <filename>thermite.sh</filename> iterates through the master list of combinations and locates the per-build configuration file, a <acronym>ZFS</acronym> dataset is created under <filename class="directory">/releng</filename>, such as <filename class="directory">/releng/12-amd64-GENERIC-snap</filename>. The <literal>src/</literal>, <literal>ports/</literal>, and <literal>doc/</literal> trees are checked out to separate <acronym>ZFS</acronym> datasets, such as <filename class="directory">/releng/12-src-snap</filename>, which are then cloned and mounted into the respective build datasets. This is done to avoid checking out a given tree more than once.
Assuming these filesystem paths, <filename>thermite.sh</filename> would be invoked as:
<prompt>#</prompt> <userinput>cd /releng/scripts-snapshot/scripts</userinput>
<prompt>#</prompt> <userinput>./setrev.sh -b <literal>stable/<replaceable>12</replaceable>/</literal></userinput>
<prompt>#</prompt> <userinput>./zfs-cleanup.sh -c ./builds-<replaceable>12</replaceable>.conf</userinput>
<prompt>#</prompt> <userinput>./thermite.sh -c ./builds-<replaceable>12</replaceable>.conf</userinput>
Once the builds have completed, additional helper scripts are available to generate development snapshot emails which are sent to the <literal>freebsd-snapshots@freebsd.org</literal> mailing list:
<prompt>#</prompt> <userinput>cd /releng/scripts-snapshot/scripts</userinput>
<prompt>#</prompt> <userinput>./get-checksums.sh -c ./builds-<replaceable>12</replaceable>.conf | ./generate-email.pl &gt; snapshot-<replaceable>12</replaceable>-mail</userinput>
The generated output should be double-checked for correctness, and the email itself should be PGP signed, in-line.
These helper scripts only apply to development snapshot builds. Announcements during the release cycle (excluding the final release announcement) are created from an email template. A sample of the email template currently used can be found <link xlink:href="https://svn.freebsd.org/base/user/gjb/thermite/non-release-template-mail.txt">here</link>.
Building FreeBSD Releases
Similar to building FreeBSD development snapshots, <filename>thermite.sh</filename> would be invoked the same way. The difference between development snapshots and release builds, <literal>BETA</literal> and <literal>RC</literal> included, is that the <citerefentry><refentrytitle>chroot</refentrytitle><manvolnum>8</manvolnum></citerefentry> configuration files must be named with <literal>release</literal> instead of <literal>snap</literal> as the "type", as mentioned above.
In addition, the <literal>BUILDTYPE</literal> and <literal>types</literal> must be changed from <literal>snap</literal> to <literal>release</literal> in <filename>defaults-<replaceable>12</replaceable>.conf</filename> and <filename>builds-<replaceable>12</replaceable>.conf</filename>, respectively.
When building <literal>BETA</literal>, <literal>RC</literal>, and the final <literal>RELEASE</literal>, also statically set <literal>BUILDSVNREV</literal> to the revision on the branch reflecting the name change, <literal>BUILDDATE</literal> to the date the builds are started in <literal>YYYYMMDD</literal> format. If the <literal>doc/</literal> and <literal>ports/</literal> trees have been tagged, also set <literal>PORTBRANCH</literal> and <literal>DOCBRANCH</literal> to the relevant tag path in the Subversion repository, replacing <literal>HEAD</literal> with the last changed revision. Also set <literal>releasesrc</literal> in <filename>builds-<replaceable>12</replaceable>.conf</filename> to the relevant branch, such as <literal>stable/<replaceable>12</replaceable>/</literal> or <literal>releng/<replaceable>12.0</replaceable>/</literal>.
During the release cycle, a copy of <filename>CHECKSUM.SHA512</filename> and <filename>CHECKSUM.SHA256</filename> for each architecture are stored in the FreeBSD Release Engineering Team internal repository in addition to being included in the various announcement emails. Each <filename>MANIFEST</filename> containing the hashes of <filename>base.txz</filename>, <filename>kernel.txz</filename>, etc. are added to <package>misc/freebsd-release-manifests</package> in the Ports Collection, as well.
In preparation for the release build, several files need to be updated:
Update the <varname>BRANCH</varname> value to <literal>RELEASE</literal>
<filename>UPDATING</filename>
Add the anticipated announcement date
<filename>lib/csu/common/crtbrand.c</filename>
Replace <literal>__FreeBSD_version</literal> with the value in <filename>sys/sys/param.h</filename>
After building the final <literal>RELEASE</literal>, the <literal>releng/<replaceable>12.0</replaceable>/</literal> branch is tagged as <literal>release/<replaceable>12.0.0</replaceable>/</literal> using the revision from which the <literal>RELEASE</literal> was built. Similar to creating the <literal>stable/<replaceable>12</replaceable>/</literal> and <literal>releng/<replaceable>12.0</replaceable>/</literal> branches, this is done with <command>svn cp</command>. From the repository root:
<prompt>%</prompt> <userinput>svn cp ^/<literal>releng/<replaceable>12.0</replaceable>/</literal>@r<replaceable>306420</replaceable> <literal>release/<replaceable>12.0.0</replaceable>/</literal></userinput>
<prompt>%</prompt> <userinput>svn commit <literal>release/<replaceable>12.0.0</replaceable>/</literal></userinput>
Publishing FreeBSD Installation Media to Project Mirrors
This section describes the procedure to publish FreeBSD development snapshots and releases to the Project mirrors.

Loading…

No matching activity found.

Browse all component changes

Glossary

English English
No related strings found in the glossary.

Source information

Source string comment

(itstool) path: note/para

Flags
read-only
Source string location
article.translate.xml:1321
String age
a year ago
Source string age
a year ago
Translation file
articles/freebsd-releng.pot, string 260