2009-03-04 23:48:51 +01:00
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
|
|
|
|
<article>
|
|
|
|
<!--$Id$-->
|
|
|
|
|
|
|
|
<articleinfo>
|
2009-04-04 19:44:06 +02:00
|
|
|
<title>Building Shorewall from Git</title>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<authorgroup>
|
|
|
|
<author>
|
|
|
|
<firstname>Tom</firstname>
|
|
|
|
|
|
|
|
<surname>Eastep</surname>
|
|
|
|
</author>
|
|
|
|
</authorgroup>
|
|
|
|
|
|
|
|
<pubdate><?dbtimestamp format="Y/m/d"?></pubdate>
|
|
|
|
|
|
|
|
<copyright>
|
|
|
|
<year>2009</year>
|
|
|
|
|
|
|
|
<holder>Thomas M. Eastep</holder>
|
|
|
|
</copyright>
|
|
|
|
|
|
|
|
<legalnotice>
|
|
|
|
<para>Permission is granted to copy, distribute and/or modify this
|
|
|
|
document under the terms of the GNU Free Documentation License, Version
|
|
|
|
1.2 or any later version published by the Free Software Foundation; with
|
|
|
|
no Invariant Sections, with no Front-Cover, and with no Back-Cover
|
|
|
|
Texts. A copy of the license is included in the section entitled
|
|
|
|
<quote><ulink url="GnuCopyright.htm">GNU Free Documentation
|
|
|
|
License</ulink></quote>.</para>
|
|
|
|
</legalnotice>
|
|
|
|
</articleinfo>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<para>This information is provided primarily for Shorewall developers.
|
2009-04-04 19:22:29 +02:00
|
|
|
Users are expected to install from pre-built tarballs or packages.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</note>
|
|
|
|
|
|
|
|
<section>
|
2009-04-04 19:44:06 +02:00
|
|
|
<title>Git Taxonomy</title>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
2009-04-04 19:44:06 +02:00
|
|
|
<para>The Shorewall Git tree at Sourceforge serves as the master
|
|
|
|
repository for Shorewall 4.4 and later versions. It is not possible to
|
2009-04-04 20:31:10 +02:00
|
|
|
simply export a directory from Git and run the
|
2009-04-04 19:44:06 +02:00
|
|
|
<command>install.sh</command> script in that directory. A build step is
|
|
|
|
required to produce a directory that is suitable for the
|
|
|
|
<command>install.sh</command> script to run in.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>trunk</title>
|
|
|
|
|
|
|
|
<para>The development branch of each product is kept here.</para>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>Shorewall</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Shorewall6</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Shorewall-lite</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Shorewall6-lite</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<para>There are also several other directories which are described in
|
|
|
|
the following sub-sections.</para>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>trunk/docs</title>
|
|
|
|
|
|
|
|
<para>The development release XML documents. Depending on the point in
|
|
|
|
the release cycle, these documents may also apply to the current
|
|
|
|
stable version. In that case, there is no docs directory in that
|
|
|
|
release's directory in <emphasis
|
|
|
|
role="bold">branches</emphasis>.</para>
|
|
|
|
</section>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>trunk/web</title>
|
|
|
|
|
|
|
|
<para>The files from the web site that are maintained in HTML format.
|
|
|
|
are kept in this directory.</para>
|
|
|
|
</section>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>trunk/manpages, trunk/manpages6, trunk/manpages-lite and
|
|
|
|
trunk/manpages6-lite</title>
|
|
|
|
|
|
|
|
<para>The development release XML manpages. Depending on the point in
|
|
|
|
the release cycle, these documents may also apply to the current
|
2009-04-04 20:31:47 +02:00
|
|
|
stable version.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</section>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>trunk/tools</title>
|
|
|
|
|
|
|
|
<para>This is where the release and build tools are kept. There are
|
|
|
|
two subordinate directories:</para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>trunk/tools/build</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Tools for building and uploading new releases.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>trunk/tools/web</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Tools for publishing web content.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>Build Tools</title>
|
|
|
|
|
|
|
|
<para>As described above, the build tools are kept in <filename
|
|
|
|
class="directory">trunk/tools/build.</filename> They are described in the
|
|
|
|
following sections.</para>
|
|
|
|
|
|
|
|
<section>
|
|
|
|
<title>setversion</title>
|
|
|
|
|
|
|
|
<para>The <command>setversion</command> script updates the version
|
2009-05-30 17:34:34 +02:00
|
|
|
number in a directory. The script is run with the current working
|
|
|
|
directory being <filename class="directory">trunk</filename>.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<blockquote>
|
|
|
|
<para><command>setversion</command>
|
|
|
|
<replaceable>version</replaceable></para>
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
<para>The <replaceable>version</replaceable> may either be a minor
|
2009-04-04 19:44:06 +02:00
|
|
|
version or a patch version.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</section>
|
|
|
|
|
|
|
|
<section>
|
2009-04-04 19:44:06 +02:00
|
|
|
<title>build44</title>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
2009-05-30 17:34:34 +02:00
|
|
|
<para>This is the script that builds Shorewall packages from Git.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
2009-04-04 20:31:10 +02:00
|
|
|
<para>The script copies content from Git using the <command>git
|
2009-04-04 19:44:06 +02:00
|
|
|
archive</command> command. It then uses that content to build the
|
2009-03-04 23:48:51 +01:00
|
|
|
packages. In addition to the usual Gnu utilities, the following software
|
|
|
|
is required:</para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>rpmbuild (I use rpm version 4.4.2.3-20.3)</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Required to build the RPM packages.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>xsltproc (libxslt -- I use version 1.1.24-19.1)</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Required to convert the XML documents to other
|
|
|
|
formats.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>Docbook XSL Stylesheets (I use docbook-xsl-stylesheets version
|
|
|
|
1.74.0-1.35)</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Required to convert the XML documents to other
|
|
|
|
formats.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>Perl (I use Perl 5.10.0-62.17.1)</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Required to massage some of the config files.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>xmlto (I use version 0.0.18-182.27)</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Required to convert the XML manpages to manpages.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
|
|
|
|
<para>You should ensure that you have the latest script. The scripts
|
2009-04-04 19:22:29 +02:00
|
|
|
change periodically as we move through the release cycles.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<para>The scripts may need to be modified to fit your particular
|
|
|
|
environment. There are a number of variables that are set near the front
|
|
|
|
of the script:</para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>STYLESHEET</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Must point to the XHTML docbook.xsl stylesheet from your
|
|
|
|
Docbook XSL Stylesheets installation.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>LOGDIR</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Directory where you want the build log placed. Defaults to
|
|
|
|
the current working directory.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>RPMDIR</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Points to your RPM directory .</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>DIR</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Directory where you want the release to be built. Defaults
|
|
|
|
to the current working directory.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>GPG</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Command to be used for signing your packages</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2009-04-04 19:44:06 +02:00
|
|
|
<term>GIT</term>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<listitem>
|
2009-04-04 19:44:06 +02:00
|
|
|
<para>Shorewall GIT repository</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
|
|
|
|
<para>The scripts assume that there will be a separete <firstterm>build
|
|
|
|
directory</firstterm> per major release. To build a release, you cd to
|
|
|
|
the appropriate directory and run the build script.</para>
|
|
|
|
|
|
|
|
<para>The general form of the build command is:</para>
|
|
|
|
|
|
|
|
<blockquote>
|
2009-04-04 19:44:06 +02:00
|
|
|
<para><command>build44</command> [ -<replaceable>options</replaceable>
|
|
|
|
] <replaceable>release</replaceable> [ <replaceable>prior
|
2009-03-04 23:48:51 +01:00
|
|
|
release</replaceable> ]</para>
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
<para>where</para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>opt<emphasis>i</emphasis>ons</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>are one of the following. If no options are given then all
|
|
|
|
options are assumed</para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>t</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>build tar files</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>r</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>build RPMs</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>c</term>
|
|
|
|
|
|
|
|
<listitem>
|
2009-04-04 19:44:06 +02:00
|
|
|
<para>Build the shorewall package.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>l</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Build the shorewall-lite package.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>6</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Build the shorewall6 package.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>L</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Build the shorewall6-lite package.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><emphasis>release</emphasis></term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>The release version to build. Must match the version in the
|
2009-04-04 19:44:06 +02:00
|
|
|
associated Git path.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><emphasis>prior release</emphasis></term>
|
|
|
|
|
|
|
|
<listitem>
|
2009-04-04 19:22:29 +02:00
|
|
|
<para>The release to be used to generate patch files.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
|
2009-04-04 20:31:26 +02:00
|
|
|
<para>Example 1 - Build Shorewall 4.3.7 and generate patches against
|
|
|
|
4.3.6:</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<blockquote>
|
2009-05-30 17:34:34 +02:00
|
|
|
<para><command>build44 4.3.7 4.3.6</command></para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</blockquote>
|
|
|
|
|
2009-05-30 17:34:34 +02:00
|
|
|
<para>Example 2 - Build Shorewall 4.2.7.1 Shorewall and generate patches
|
|
|
|
against 4.2.7:</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<blockquote>
|
2009-05-30 17:34:34 +02:00
|
|
|
<para><command>build44 -trSc 4.3.7.1 4.3.7</command></para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</blockquote>
|
|
|
|
</section>
|
|
|
|
|
|
|
|
<section>
|
2009-08-22 16:31:52 +02:00
|
|
|
<title>upload44</title>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<para>This script is used to upload a release to lists.shorewall.net.
|
|
|
|
The command is run in the build directory for the major release of the
|
|
|
|
product.</para>
|
|
|
|
|
|
|
|
<blockquote>
|
2009-08-22 16:31:52 +02:00
|
|
|
<para><command>upload44</command> [
|
|
|
|
-<replaceable>products</replaceable> ]
|
|
|
|
<replaceable>release</replaceable></para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
<para>where</para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term><emphasis>products</emphasis></term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>specifes the products to upload. If not given, all products
|
|
|
|
are uploaded. This option is generally given only when uploading a
|
|
|
|
patch release.</para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>c</term>
|
|
|
|
|
|
|
|
<listitem>
|
2009-04-04 20:31:26 +02:00
|
|
|
<para>Upload the shorewall package.</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>l</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Upload the shorewall-lite package.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>6</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Upload the shorewall6 package.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>L</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Upload the shorewall6-lite package.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><emphasis>release</emphasis></term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>The version number of the release to update.</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
|
2009-04-04 20:31:26 +02:00
|
|
|
<para>Example 1 - Upload release 4.3.7:</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<blockquote>
|
2009-04-04 20:31:26 +02:00
|
|
|
<para><command>upload 4.3.7</command></para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</blockquote>
|
|
|
|
|
2009-04-04 20:31:26 +02:00
|
|
|
<para>Example 2 - Upload shorewall-perl-4.3.7.3:</para>
|
2009-03-04 23:48:51 +01:00
|
|
|
|
|
|
|
<blockquote>
|
2009-04-04 20:31:26 +02:00
|
|
|
<para><command>upload -p 4.3.7.3</command></para>
|
2009-03-04 23:48:51 +01:00
|
|
|
</blockquote>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</article>
|