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:
parent
a868de680f
commit
dbf9b8e880
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46515
1 changed files with 220 additions and 2 deletions
|
@ -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; 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; 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 > 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; 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>
|
||||
|
|
Loading…
Reference in a new issue