Revert r46484, r46485, r46511, r46512:

The claim that there were no "substantive" commits to this
  article are made without any knowledge of internals of re@.

  Several parts of the removed content is still relevant for
  8.x, which we do still support.

  Furthermore, this particular article, outdated or not, falls
  under RE territory, and these drive-by commits were not
  approved.

Approved by:	re (implicit)
This commit is contained in:
Glen Barber 2015-04-11 04:44:58 +00:00
parent a868de680f
commit dbf9b8e880
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46515

View file

@ -5,6 +5,14 @@
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
<info><title>&os; Release Engineering</title>
<confgroup>
<confdates>November 2001</confdates>
<conftitle>BSDCon Europe</conftitle>
</confgroup>
<authorgroup>
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><personblurb>
<para>I've been involved in the development of &os; based products
@ -55,7 +63,12 @@
<para>The development of &os; is a very open process. &os; is
comprised of contributions from thousands of people around the
world. The &os; Project provides
<application>Subversion</application>
Subversion
<footnote>
<simpara>
Subversion, <uri xlink:href="http://subversion.apache.org">http://subversion.apache.org</uri>
</simpara>
</footnote>
access to the general public so that
others can have access to log messages, diffs (patches) between
development branches, and other productivity enhancements that
@ -66,8 +79,18 @@
Therefore only a <quote>select</quote> group of nearly 300 people are
given write access to the Subversion repository. These
<link xlink:href="&url.articles.contributors;/article.html#staff-committers">committers</link>
<footnote>
<simpara>
<link xlink:href="&url.articles.contributors;/article.html#staff-committers">FreeBSD committers</link>
</simpara>
</footnote>
are usually the people who do the bulk of &os; development. An elected
<link xlink:href="&url.base;/administration.html#t-core">Core Team</link>
<footnote>
<simpara>
<link xlink:href="&url.base;/administration.html#t-core">&os; Core Team</link>
</simpara>
</footnote>
of developers provide some level of direction over the project.</para>
<para>The rapid pace of <systemitem>&os;</systemitem>
@ -145,6 +168,55 @@
available to keep systems on the
<emphasis>releng/<replaceable>X</replaceable>.<replaceable>Y</replaceable></emphasis>
branches updated.</para>
<sect2>
<title>What this article describes</title>
<para>The following sections of this article describe:</para>
<variablelist>
<varlistentry>
<term><xref linkend="release-proc"/></term>
<listitem>
<para>The different phases of the release engineering process
leading up to the actual system build.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><xref linkend="release-build"/></term>
<listitem>
<para>The actual build process.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><xref linkend="extensibility"/></term>
<listitem>
<para>How the base release may be extended by third parties.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><xref linkend="lessons-learned"/></term>
<listitem>
<para>Some of the lessons learned through the release of &os;&nbsp;4.4.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><xref linkend="future"/></term>
<listitem>
<para>Future directions of development.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>
<!-- Release Process -->
@ -446,6 +518,18 @@
</listitem>
</itemizedlist>
<para><application>Sysinstall</application> should be updated to note
the number of available ports and the amount of disk space required
for the Ports Collection.
<footnote>
<simpara>
&os; Ports Collection
<uri xlink:href="http://www.FreeBSD.org/ports">http://www.FreeBSD.org/ports</uri>
</simpara>
</footnote>
This information is currently kept in
<filename>src/usr.sbin/sysinstall/dist.c</filename>.</para>
<para>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 <literal>head/</literal> within the
@ -631,6 +715,95 @@
be unwise to distribute binaries that were built on a system
with <varname>CPUTYPE</varname> set to a specific
processor.</para></note>
</sect2>
<sect2>
<title>Contributed Software (<quote>ports</quote>)</title>
<para>The <link xlink:href="http://www.FreeBSD.org/ports">&os; Ports
collection</link> is a collection of over &os.numports;
third-party software packages available for &os;. The &a.portmgr;
is responsible for maintaining a consistent ports tree that can be used
to create the binary packages that accompany official &os;
releases.</para>
</sect2>
<sect2>
<title>Release ISOs</title>
<para>Starting with &os;&nbsp;4.4, the &os; Project decided to
release all four ISO images that were previously sold on the
<emphasis>BSDi/Wind River Systems/FreeBSD Mall</emphasis>
<quote>official</quote> CDROM distributions. Each of the four
discs must contain a <filename>README.TXT</filename> file that
explains the contents of the disc, a
<filename>CDROM.INF</filename> file that provides meta-data for
the disc so that &man.sysinstall.8; can validate and use the
contents, and a <filename>filename.txt</filename> file that
provides a manifest for the disc. This
<emphasis>manifest</emphasis> can be created with a simple
command:</para>
<screen>/stage/cdrom&prompt.root; <userinput>find . -type f | sed -e 's/^\.\///' | sort &gt; filename.txt</userinput></screen>
<para>The specific requirements of each CD are outlined below.</para>
<sect3>
<title>Disc 1</title>
<para>The first disc is almost completely created by
<command>make
release</command>. The only changes
that should be made to the <filename>disc1</filename> directory are the addition of
a <filename>tools</filename> directory, and as many popular
third party software packages as will fit on the disc. The
<filename>tools</filename> 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.</para>
<para>If a custom kernel of &os; is to be included, then
&man.sysinstall.8; and &man.release.7; must be updated to
include installation instructions. The relevant code is contained
in <filename>src/release</filename> and <filename>src/usr.sbin/sysinstall</filename>.
Specifically, the file <filename>src/release/Makefile</filename>, and
<filename>dist.c</filename>, <filename>dist.h</filename>,
<filename>menus.c</filename>, <filename>install.c</filename>, and
<filename>Makefile</filename> will need to be updated under
<filename>src/usr.sbin/sysinstall</filename>. Optionally, you may choose
to update <filename>sysinstall.8</filename>.</para>
</sect3>
<sect3>
<title>Disc 2</title>
<para>The second disc is also largely created by <command>make
release</command>. This disc contains a <quote>live
filesystem</quote> that can be used from &man.sysinstall.8; to
troubleshoot a &os; installation. This disc should be
bootable and should also contain a compressed copy of the CVS
repository in the <filename>CVSROOT</filename> directory and
commercial software demos in the <filename>commerce</filename>
directory.</para>
</sect3>
<sect3>
<title>Multi-volume support</title>
<para><application>Sysinstall</application> supports multiple
volume package installations. This requires that each disc
have an <filename>INDEX</filename> 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
<literal>CD_VOLUME</literal> variable set in the
<filename>cdrom.inf</filename> file so that sysinstall can
tell which volume is which. When a user attempts to install a
package that is not on the current disc, sysinstall will
prompt the user to insert the appropriate one.</para>
</sect3>
</sect2>
</sect1>
@ -709,6 +882,13 @@
time, for example make it relative to GMT.</para>
</sect2>
<sect2 xml:id="dist-cdrom">
<title>CD-ROM Replication</title>
<para>Coming soon: Tips for sending &os; ISOs to a replicator
and quality assurance measures to be taken.</para>
</sect2>
</sect1>
<!-- Extensibility -->
@ -727,8 +907,25 @@
certainly encourage innovation in the form of advanced
installation and administration tools, for example, but we cannot
be expected to answer questions about it.</para>
<sect2>
<title>Scripting <command>sysinstall</command></title>
<para>The &os; system installation and configuration tool,
&man.sysinstall.8;, can be scripted to provide automated installs
for large sites. This functionality can be used in conjunction
with &intel; PXE
<footnote>
<simpara>
<uri xlink:href="&url.books.handbook;/network-pxe-nfs.html">&url.books.handbook;/network-pxe-nfs.html</uri>
</simpara>
</footnote>
to bootstrap systems from the network.
</para>
</sect2>
</sect1>
<!-- Lessons Learned -->
<sect1 xml:id="lessons-learned">
<title>Lessons Learned from &os;&nbsp;4.4</title>
@ -771,12 +968,33 @@
using multiple processors in speeding up the <command>make
release</command> process. If multiple disks are used for
different hierarchies in the &man.chroot.2;
environment, then the subversion checkout of the <filename>ports</filename> and <filename>doc</filename> trees
environment, then the CVS checkout of the <filename>ports</filename> and <filename>doc</filename> trees
can be happening simultaneously as the <command>make
world</command> on another disk. Using a
<acronym>RAID</acronym> solution (hardware or software) can
significantly decrease the overall build time.</para>
</listitem>
<listitem>
<para><emphasis>Cross-building releases</emphasis> - Building
IA-64 or Alpha release on x86 hardware? <command>make
TARGET=ia64 release</command>.
</para>
</listitem>
<listitem>
<para><emphasis>Regression Testing</emphasis> - We need better
automated correctness testing for &os;.</para>
</listitem>
<listitem>
<para><emphasis>Installation Tools</emphasis> - 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.</para>
</listitem>
</itemizedlist>
</sect1>