[30444] trunk/doc-new/man/xml

source_changes at macosforge.org source_changes at macosforge.org
Sat Oct 27 21:16:05 PDT 2007


Revision: 30444
          http://trac.macosforge.org/projects/macports/changeset/30444
Author:   markd at macports.org
Date:     2007-10-27 21:16:04 -0700 (Sat, 27 Oct 2007)

Log Message:
-----------
Split portfile.7 into portfile-global, portfile-phase, portfile-startupitem, portfile-tcl.

Added Paths:
-----------
    trunk/doc-new/man/xml/portfile-global.7.xml
    trunk/doc-new/man/xml/portfile-phase.7.xml
    trunk/doc-new/man/xml/portfile-startupitem.7.xml
    trunk/doc-new/man/xml/portfile-tcl.7.xml
    trunk/doc-new/man/xml/portfile.7.xml.orig

Removed Paths:
-------------
    trunk/doc-new/man/xml/portfile.7.xml

Added: trunk/doc-new/man/xml/portfile-global.7.xml
===================================================================
--- trunk/doc-new/man/xml/portfile-global.7.xml	                        (rev 0)
+++ trunk/doc-new/man/xml/portfile-global.7.xml	2007-10-28 04:16:04 UTC (rev 30444)
@@ -0,0 +1,836 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry>
+  <refmeta>
+    <refentrytitle>PORTFILE-GLOBAL</refentrytitle>
+
+    <manvolnum>7</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>portfile</refname>
+
+    <refpurpose>MacPorts Portfile reference</refpurpose>
+  </refnamediv>
+
+  <refsection>
+    <title>Description</title>
+
+    <para>A reference of all available Portfile global variables and keywords.
+    Portfiles consist of valid TCL and are encoded in UTF-8. They usually
+    contain only simple keyword/value combinations and Tcl extensions as
+    described below, though they may also contain arbitrary TCL code. Every
+    port has a corresponding Portfile, but Portfiles do not completely define
+    a port's installation behavior since the MacPorts base has default port
+    installation characteristics coded within it. Therefore Portfiles need
+    only specify required options and, if necessary, non-default
+    characteristics for a port.</para>
+  </refsection>
+
+  <refsection>
+    <title>Global Variables</title>
+
+    <para>Global variables are variables available to any Portfile. For a list
+    of additional variables available to ports that are assigned to a MacPorts
+    Portgroup, see portgroup(7).</para>
+
+    <variablelist>
+      <varlistentry>
+        <term>prefix</term>
+
+        <listitem>
+          <para>Installation prefix, set in
+          <filename>${prefix}/etc/macports/macports.conf</filename> —may be
+          overridden on a per port basis. For example, aqua applications are
+          installed in <filename>/Applications/MacPorts</filename>.</para>
+
+          <para>Default: /opt/local</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>binpath</term>
+
+        <listitem>
+          <para>Default PATH to use in finding executables.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>libpath</term>
+
+        <listitem>
+          <para>Path to the MacPorts TCL libraries.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>portpath</term>
+
+        <listitem>
+          <para>Full path to the Portfile location.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>filesdir</term>
+
+        <listitem>
+          <para>Path to port files relative to
+          <varname>${portpath}</varname>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>workpath</term>
+
+        <listitem>
+          <para>Full path to work directory.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>worksrcpath</term>
+
+        <listitem>
+          <para>Full path to extracted source code. Equivalent to
+          <varname>${workpath}/${worksrcdir}</varname>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>destroot</term>
+
+        <listitem>
+          <para>Full path into which software will be destrooted. Equivalent
+          to <filename>${workpath}/destroot</filename>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>distpath</term>
+
+        <listitem>
+          <para>Location to store downloaded distfiles.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>install.user</term>
+
+        <listitem>
+          <para>The Unix user at the time of port installation.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>install.group</term>
+
+        <listitem>
+          <para>The Unix group at the time of port installation.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>os.platform</term>
+
+        <listitem>
+          <para>Identifies platform type (ie, "darwin", "freebsd",
+          etc).</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>os.arch</term>
+
+        <listitem>
+          <para>Identifies hardware type (ie, "powerpc", "intel").</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>os.version</term>
+
+        <listitem>
+          <para>The version number of the host operating system (ie "8.0" for
+          Darwin 8.0).</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>os.major</term>
+
+        <listitem>
+          <para>The major version number of the host operating system (ie "8"
+          for Darwin 8.0).</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsection>
+
+  <refsection>
+    <title>Global Keywords</title>
+
+    <para>MacPorts keywords are used to specify required or optional items
+    within a Portfile, or to override default options used by MacPorts base
+    for individual ports. Keywords are to be used within the "global" and
+    "variant" sections of Portfiles, and not within optional port phase
+    declarations.</para>
+
+    <para>The global keywords listed below specify information for ports as a
+    whole, whereas the keywords listed under a port phase specify information
+    to be used during a particular installation phase.</para>
+
+    <refsection>
+      <title>General</title>
+
+      <para>The list of global keywords.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>PortSystem</term>
+
+          <listitem>
+            <para>The top line of every Portfile; it must be followed by a
+            blank line. It defines which version of the Portfile interpreter
+            will be used.</para>
+
+            <programlisting>PortSystem   1.0
+
+</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>name</term>
+
+          <listitem>
+            <para>The name of the Port; it should be lowercase.</para>
+
+            <programlisting>name         foo</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>version</term>
+
+          <listitem>
+            <para>The version of the ported software.</para>
+
+            <programlisting>version      1.23.45</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>revision</term>
+
+          <listitem>
+            <para>Optional keyword (default is 0) that is used to track port
+            revisions. It should not be incremented for port revisions unless
+            it would benefit users to upgrade an installed port, and cleared
+            when the port is updated to a newer version.</para>
+
+            <programlisting>revision     1</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>epoch</term>
+
+          <listitem>
+            <para>Optional keyword (default is 0) that is used if the new port
+            version looks older than the previous version (for example 1.10
+            -&gt; 1.2). Often the epoch is formatted like a date, but it can
+            simple a number like 1.</para>
+
+            <programlisting>epoch        20070924</programlisting>
+
+            <programlisting>epoch        1</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>categories</term>
+
+          <listitem>
+            <para>The category under which the ported software falls. The
+            first category should be the same as the directory within which
+            the Portfile is stored; secondary and tertiary categories may be
+            selected.</para>
+
+            <programlisting>categories     net security</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>maintainers</term>
+
+          <listitem>
+            <para>A port's maintainer is a person or persons who take
+            responsibility for keeping the port up-to-date, and the maintainer
+            keyword lists maintainer email addresses(s). However, many
+            maintainers wish to hide these addresses from spambots; to do so
+            follow these conventions:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>For addresses in domain @macports.org, simply omit the
+                domain name.</para>
+              </listitem>
+
+              <listitem>
+                <para>For addresses in other domains, say
+                <email>account at example.org</email>, use the convention
+                example.org:account to specify the address.</para>
+              </listitem>
+            </itemizedlist>
+
+            <para>In the example below, the maintainer email addresses
+            <email>jdoe at macports.org</email> and
+            <email>julesverne at example.org</email> are hidden using these
+            conventions.</para>
+
+            <programlisting>maintainers       jdoe \
+                  example.org:julesverne</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>description</term>
+
+          <listitem>
+            <para>A one-sentence description of the ported software.</para>
+
+            <programlisting>description    A classic shooter arcade game.</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>long_description</term>
+
+          <listitem>
+            <para>A long description of the ported software. Break long lines
+            with escaped newlines.</para>
+
+            <programlisting>description    A classic shooter arcade game derived from \
+               the game alien-munchers.  Not suitable for \
+               children under two years old.      </programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>homepage</term>
+
+          <listitem>
+            <para>Port application's homepage.</para>
+
+            <programlisting>homepage       http://www.somesite.org/apps</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>platforms</term>
+
+          <listitem>
+            <para>The platforms on which the port has been tested.</para>
+
+            <programlisting>platforms      darwin freebsd</programlisting>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Dependencies</title>
+
+      <para>Free and open source software is highly modular, and MacPorts
+      ports often require that other ports be installed beforehand; these
+      prerequisites for a given port are called a port's
+      <quote>dependencies</quote>.</para>
+
+      <para>There are three types of MacPorts dependencies: library, build,
+      and run dependencies. Dependency types are important for proper port
+      upgrade and uninstall behavior. For example, you may not uninstall a
+      port that is a library dependency for another port, though you may
+      remove one with a build dependency; likewise, upgrading a port will
+      upgrade its library and build dependencies also, but not its run
+      dependencies.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>depends_lib</term>
+
+          <term>depends_lib-append</term>
+
+          <term>depends_lib-delete</term>
+
+          <listitem>
+            <para>The list of dependencies to check before phases
+            <option>configure</option>, <option>build</option>,
+            <option>destroot</option>, <option>install</option>, and
+            <option>package</option>. Library dependencies are needed both at
+            build time (for headers and libraries to link against) and at run
+            time.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>depends_build</term>
+
+          <term>depends_build-append</term>
+
+          <term>depends_build-delete</term>
+
+          <listitem>
+            <para>The list of dependencies to check before phases
+            <option>build</option>, <option>destroot</option>,
+            <option>install</option>, and <option>package</option>. Build
+            dependencies are needed when software is compiled, but not needed
+            at all once the software is compiled and installed.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>depends_run</term>
+
+          <term>depends_run-append</term>
+
+          <term>depends_run-delete</term>
+
+          <listitem>
+            <para>The list of dependencies to check before phases
+            <option>destroot</option>, <option>install</option>, and
+            <option>package</option>. Run dependencies are needed when the
+            software is run, but not to compile it.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <refsection>
+        <title>Port and Non-Port Dependencies</title>
+
+        <para>Port dependencies should be provided by MacPorts ports whenever
+        possible, however dependencies may be provided by vendor-supplied
+        software when satisfying a dependency by a port is not practical or
+        desirable for a special reason. Dependencies of this type are called
+        non-port dependencies.</para>
+
+        <para>Port dependencies, the preferred type, are specified as shown in
+        these examples:</para>
+
+        <programlisting>depends_lib        port:rrdtool port:apache2
+
+depends_build      port:apache2 port:php5</programlisting>
+
+        <para>Non-port dependencies are specified as shown in these
+        examples:</para>
+
+        <programlisting>depends_lib        lib:libX11.6:xorg
+
+depends_build      bin:rrdtool</programlisting>
+      </refsection>
+    </refsection>
+
+    <refsection>
+      <title>Variants</title>
+
+      <para>MacPorts variants are conditional modifications of port
+      installation behavior that may be invoked by a user at the time of port
+      install.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>variant [requires variant] [conflicts variant] [description
+          description]</term>
+
+          <listitem>
+            <para>The variant declaration may contain any keywords that can be
+            placed in a Portfile's global section. If you wish to execute
+            system (shell) calls or Tcl extensions during the execution of a
+            port phase, you should place those statements within a
+            <literal>variant_isset</literal> conditional within a phase
+            declaration and not within the variant declaration itself.
+            Dependencies and conflicts with other variants in the same port
+            can be expressed with requires and conflicts. See the isset Tcl
+            extension.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: no</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>variant gnome requires glib {
+      configure.args-append --with-gnome
+      depends_lib-append port:gnome-session
+}</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>default_variants</term>
+
+          <listitem>
+            <para>If variants are defined, then the default_variants value
+            lists which variants are enabled by default. This allows for
+            Portfile modularity and also allows users to suppress default
+            variants if they wish.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>default_variants +ssl +tcpd
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>Default variants may be suppressed by preceding a variant
+            name with a "-" as shown in this example.</para>
+
+            <programlisting><prompt>%%</prompt> <userinput>port install foo -ssl</userinput></programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>universal_variant</term>
+
+          <listitem>
+            <para>When using MacPorts on Mac OS X, a universal variant is
+            defined by default to configure ports with universal flags. The
+            variant can be overridden if the default code does not work (see
+            the Configure Universal section below), or suppressed if a
+            universal variant is not possible for the port with this
+            keyword.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: yes</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>universal_variant  no</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Livecheck / Distcheck</title>
+
+      <para>Options livecheck and distcheck are especially useful for port
+      maintainers, but others may also find this information valuable.</para>
+
+      <para>Livecheck checks to see if MacPorts can query the developer's
+      download site to determine if a newer version of the software has become
+      available since the port was installed.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>livecheck.check</term>
+
+          <listitem>
+            <para>Specify what kind of update check to perform.</para>
+
+            <para>Open source mirror site options are to use the project's
+            latest file release from <option>sourceforge</option> or
+            <option>googlecode</option>, or the project's
+            <literal>date_updated</literal> XML tag for
+            <option>freshmeat</option>.</para>
+
+            <para>Generic download site options are to specify a
+            <option>moddate</option> (modification date) of a URL resource), a
+            <option>regex</option> (retrieve the version by applying a regex
+            to a URL resource), <option>regexm</option> (retrieve the version
+            by applying a multi-line regex to a URL resource),
+            <option>md5</option> (compares the md5 sum of a URL resource) or
+            <option>none</option> (no check).</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: sourceforge or googlecode if the master_sites
+                is one of these, else freshmeat.</para>
+              </listitem>
+
+              <listitem>
+                <para>Values: freshmeat sourceforge googlecode moddate regex
+                regexm md5 none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>livecheck.check     regex
+livecheck.url       http://dev.mysql.com/
+livecheck.regex     "Generally Available (${major_version}\\.\[0-9.\]+)"
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.name</term>
+
+          <listitem>
+            <para>Name of the project for live checks; only used with
+            freshmeat, sourceforge, and googlecode livechecks.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${name}</varname> or the
+                sourceforge/freshmeat/googlecode project name if it can be
+                guessed from <literal>master_sites</literal>.</para>
+              </listitem>
+
+              <listitem>
+                <para>Values:
+                <replaceable>any_project_name</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.name   hibernate</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.distname</term>
+
+          <listitem>
+            <para>Name of the file release for sourceforge and googlecode
+            checks. You may use this keyword without livecheck.version if you
+            replace the version part of the name with "(.*)".</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: SourceForge:
+                <varname>${livecheck.name}</varname> ; GoogleCode: first
+                ${distfiles} item</para>
+              </listitem>
+
+              <listitem>
+                <para>Values: <replaceable>filename</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.distname  faad2.src</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.version</term>
+
+          <listitem>
+            <para>Version of the project for a check; used for regex-based
+            checks.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${version}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Values: <replaceable>any_version</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.version   ${name}-${version}</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.url</term>
+
+          <listitem>
+            <para>URL to query for a check.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default:</para>
+
+                <itemizedlist>
+                  <listitem>
+                    <para>homepage or the first hit among the following
+                    sites</para>
+                  </listitem>
+
+                  <listitem>
+                    <para>http://freshmeat.net/projects-xml/${livecheck.name}/${livecheck.name}.xml</para>
+                  </listitem>
+
+                  <listitem>
+                    <para>http://sourceforge.net/export/rss2_projfiles.php?project=${livecheck.name}</para>
+                  </listitem>
+
+                  <listitem>
+                    <para>http://code.google.com/p/${livecheck.name}/downloads/list</para>
+                  </listitem>
+                </itemizedlist>
+              </listitem>
+
+              <listitem>
+                <para>Values: <replaceable>any_url</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.url  http://ftp.gnu.org/gnu/bison/</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.regex</term>
+
+          <listitem>
+            <para>Regular expression to parse the resource for regex checks.
+            Be sure to use a regular expression grouping around the version
+            component.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Values: <replaceable>any_regex</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.regex  4th-([a-z0-9.]+)-unix.tar.gz</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.md5</term>
+
+          <listitem>
+            <para>md5 checksum to use for an md5 comparison.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Values:
+                <replaceable>any_md5_checksum</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck  md5 37e6a5b6516a680c7178b72021d3b706</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <para>Distcheck reports whether or not the distfile(s) specified in a
+      Portfile are still available on the developer's download site. Examples
+      are given below.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>distcheck.check</term>
+
+          <listitem>
+            <para>This option can be used to disable distcheck. It specifies
+            what kind of check should be performed on distfiles: moddate
+            (check if the Portfile is older than the distfile) or none (no
+            check).</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: moddate</para>
+              </listitem>
+
+              <listitem>
+                <para>Values: moddate none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>distcheck.check  none</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+  </refsection>
+
+  <refsection>
+    <title>SEE ALSO</title>
+
+    <para><citerefentry>
+        <refentrytitle>portfile-phase</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portfile-startupitem</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portfile-tcl</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry></para>
+  </refsection>
+
+  <refsection>
+    <title>AUTHORS</title>
+
+    <para>Landon Fuller <email>landonf at macports.org</email></para>
+
+    <para>Juan Manuel Palacios <email>jmpp at macports.org</email></para>
+
+    <para>Mark Duling <email>markd at macports.org</email></para>
+
+    <para>Kevin Van Vechten <email>kevin at opendarwin.org</email></para>
+
+    <para>Jordan K. Hubbard <email>jkh at macports.org</email></para>
+
+    <para>Chris Ridd <email>cjr at opendarwin.org</email></para>
+
+    <para>Kevin Ballard <email>eridius at macports.org</email></para>
+
+    <para>Markus W. Weissmann <email>mww at macports.org</email></para>
+  </refsection>
+</refentry>
\ No newline at end of file

Added: trunk/doc-new/man/xml/portfile-phase.7.xml
===================================================================
--- trunk/doc-new/man/xml/portfile-phase.7.xml	                        (rev 0)
+++ trunk/doc-new/man/xml/portfile-phase.7.xml	2007-10-28 04:16:04 UTC (rev 30444)
@@ -0,0 +1,1858 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry>
+  <refmeta>
+    <refentrytitle>PORTFILE-PHASE</refentrytitle>
+
+    <manvolnum>7</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>portfile</refname>
+
+    <refpurpose>MacPorts Portfile reference</refpurpose>
+  </refnamediv>
+
+  <refsection>
+    <title>Description</title>
+
+    <para>A reference of all available Portfile keywords that relate to port
+    phases. Portfiles consist of valid TCL and are encoded in UTF-8. They
+    usually contain only simple keyword/value combinations and Tcl extensions
+    as described below, though they may also contain arbitrary TCL code. Every
+    port has a corresponding Portfile, but Portfiles do not completely define
+    a port's installation behavior since the MacPorts base has default port
+    installation characteristics coded within it. Therefore Portfiles need
+    only specify required options and, if necessary, non-default
+    characteristics for a port.</para>
+  </refsection>
+
+  <refsection>
+    <title>Installation Phase Keywords</title>
+
+    <para>MacPorts keywords are used to specify required or optional items
+    within a Portfile, or to override default options used by MacPorts base
+    for individual ports. Keywords are to be used within the "global" and
+    "variant" sections of Portfiles, and not within optional port phase
+    declarations.</para>
+
+    <para>In other words, port phase keywords are not located within port
+    phase declarations, but rather they <emphasis>refer</emphasis> to port
+    phases and set options for those phases, and they take affect whether or
+    not phase declarations have been explicitly defined in a Portfile.</para>
+
+    <refsection>
+      <title>A Word about Keyword List Modifiers (-append / -delete)</title>
+
+      <para>It is often necessary to add to a list of keyword values
+      previously set by a previously executed Portfile keyword or by MacPorts
+      base. To keep from overwriting a previous keyword list, use a keyword
+      list modifier. Keywords that support list modifiers are identified under
+      appropriate reference sections below.</para>
+
+      <para>The three most common uses for keyword list modifiers are to
+      preserve configure defaults, to preserve PortGroup dependencies, and to
+      add or delete items for variants.</para>
+
+      <refsection>
+        <title>Common Uses for Keyword List Modifiers</title>
+
+        <para>The three most common uses for keyword list modifiers are to
+        preserve configure defaults, to preserve PortGroup dependencies, and
+        to add or delete items for variants.</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>Preserve configure Defaults</term>
+
+            <listitem>
+              <para>MacPorts base sets the gcc compiler flags CFLAGS and
+              LDFLAGS for all ports using <literal>configure.cflags</literal>
+              and <literal>configure.ldflags</literal>, therefore to keep from
+              overwriting the default compiler flags use
+              <literal>configure.cflags-append</literal> and
+              <literal>configure.ldflags-append</literal>.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para><code>configure.cflags-append</code></para>
+                </listitem>
+
+                <listitem>
+                  <para><code>configure.ldflags-append</code></para>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>Preserve PortGroup Dependencies</term>
+
+            <listitem>
+              <para>Ports in a PortGroup have default library dependencies set
+              by MacPorts base. Therefore, never use
+              <literal>depends_lib</literal> in ports belonging to a PortGroup
+              or it will overwrite the default library dependencies. Instead,
+              use <literal>depends_lib-append</literal>.</para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>Add or Delete Items for Variants</term>
+
+            <listitem>
+              <para>When a variant requires more or fewer dependencies,
+              distfiles, or patchfiles, when the variant is invoked you want
+              to add or remove items to the appropriate keyword values list
+              set in the global section of the Portfile. Use the appropriate
+              keywords, for example:</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para><code>depends_lib-append</code> or
+                  <code>depends_lib-delete</code></para>
+                </listitem>
+
+                <listitem>
+                  <para><code>distfiles-append</code> or
+                  <code>distfile-delete</code></para>
+                </listitem>
+
+                <listitem>
+                  <para><code>patchfiles-append</code> or
+                  <code>patchfiles-delete</code></para>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+    </refsection>
+
+    <refsection>
+      <title>A Word about Keyword Argument Modifiers (.pre_args /
+      .post_args)</title>
+
+      <para>Keywords that support pre_args and post_args are used to assemble
+      command strings together in a row, as described in the reference
+      sections below. But it should be noted that all keyword argument
+      modifiers implicitly support keyword list modifiers. For example, the
+      keyword <literal>configure.pre_args</literal> also supports
+      <literal>configure.pre_args-append</literal> and
+      <literal>configure.pre_args-delete</literal>.</para>
+    </refsection>
+
+    <refsection>
+      <title>Fetch Phase Keywords</title>
+
+      <para>The list of keywords related to the fetch phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>master_sites</term>
+
+          <listitem>
+            <para>A list of URLs from which a port's download file(s) may be
+            retrieved. For multiple master_sites, they are searched in order
+            until a file matching <varname>${distfile}</varname> is
+            found.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: ???</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>master_sites   http://www.somesite.org/files/ \
+               http://www.somemirror.org/somesite_org/files/
+
+</programlisting>
+
+                <para>You may also use mirror site lists predefined by
+                MacPorts. Here the sourceforge and gnu mirrors are
+                used.</para>
+
+                <programlisting>master_sites   sourceforge gnu
+
+</programlisting>
+
+                <para>When using mirror master_sites, the subdirectory
+                <varname>${name}</varname> is checked on every mirror. If the
+                mirror subdirectory does not match ${name}, then you may
+                specify it using after the mirror separated by a colon.</para>
+
+                <programlisting>master_sites   sourceforge:widget \
+               gnu:widget
+
+</programlisting>
+
+                <para>For ports that must fetch multiple download files from
+                different locations, you must label the files with tags and
+                match the tags in a distfiles statement. The format is
+                <literal>mirror:subdirectory:tag</literal>.</para>
+
+                <para>In the example below, file_one.tar.gz is fetched from
+                sourceforge mirrors in subdirectory
+                <varname>${name}</varname>; file tagtwo.tar.gz is fetched from
+                the gnu mirrors in subdirectory sources.</para>
+
+                <programlisting>master_sites    sourceforge::tagone \
+                gnu:sources:tagtwo
+
+distfiles       file_one.tar.gz:tagone \
+                file_two.tar.gz:tagtwo</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>patch_sites</term>
+
+          <listitem>
+            <para>A list of sites from which a port's patchfiles may be
+            downloaded, where applicable.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${master_sites}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patch_sites    ftp://ftp.patchcityrepo.com/pub/magic/patches</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>distname</term>
+
+          <listitem>
+            <para>The name of the distribution filename, not including the
+            extract suffix.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${name}-${version}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>distname     ${name}</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>distfiles</term>
+
+          <listitem>
+            <para>The full distribution filename, including the extract
+            suffix. Used to specify non-default distribution filenames; this
+            keyword must be specified (and tags used) when a port has multiple
+            download files (see master_sites).</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default:
+                <varname>${distname}${extract.suffix}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>distfiles    ${name}-dev_src.tgz
+
+
+distfiles       file_one.tar.gz:tagone \
+                file_two.tar.gz:tagtwo</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>extract.suffix</term>
+
+          <listitem>
+            <para>This keyword is used to specify the extract suffix
+            type.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <filename>.tar.gz</filename></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>extract.suffix   .tgz</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>use_bzip2</term>
+
+          <listitem>
+            <para>This keyword is for downloads that are tarred and bzipped.
+            When invoked, it automatically sets:</para>
+
+            <literallayout>extract.suffix = .tar.bz
+extract.cmd = bzip
+
+</literallayout>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: yes</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>use_bzip2     yes</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>use_zip</term>
+
+          <listitem>
+            <para>This keyword is for downloads are zipped. When invoked, it
+            automatically sets:</para>
+
+            <literallayout>extract.suffix = .zip
+extract.cmd = unzip
+extract.pre_args = -q
+extract.post_args = "-d ${portpath}/${workdir}"
+
+</literallayout>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <option>yes</option></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>use_zip       yes</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <refsection>
+        <title>Fetch from CVS</title>
+
+        <para><ulink url="http://www.nongnu.org/cvs/">CVS</ulink> may be used
+        as an alternative method of fetching distribution files using the
+        keywords in this section. However, fetching via CVS may cause
+        non-reproducible builds, so it is strongly discouraged.</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>cvs.root</term>
+
+            <listitem>
+              <para>Specify the url from which to fetch files.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>cvs.root :pserver:anonymous at cvs.sv.gnu.org:/sources/emacs</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>cvs.tag</term>
+
+            <listitem>
+              <para>Optional for fetching with CVS, this specifies the code
+              revision to checkout.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>cvs.tag  HEAD</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>cvs.date</term>
+
+            <listitem>
+              <para>A date that identifies the CVS code set to
+              checkout.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>cvs.date "12-April-2007"</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>cvs.module</term>
+
+            <listitem>
+              <para>A CVS module from which to check out the code.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>cvs.module  Sources</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Fetch from Subversion</title>
+
+        <para><ulink url="http://subversion.tigris.org/">Subversion</ulink>
+        may be used as an alternative method of fetching distribution files
+        using the keywords in this section. However, fetching via Subversion
+        may cause non-reproducible builds, so it is strongly
+        discouraged.</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>svn.url</term>
+
+            <listitem>
+              <para>This specifies the url from which to fetch files.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Examples:</para>
+
+                  <programlisting>svn.url http://www.domain.com/svn-repo/mydirectory
+svn.url svn://www.domain.com/svn-repo/mydirectory
+</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>svn.tag</term>
+
+            <listitem>
+              <para>Optional tag for fetching with Subversion, this specifies
+              the code revision to checkout; it corresponds to the -r option
+              in the svn cli. You must use backslashes to escape characters
+              that are meaningful to the Tcl interpreter, such as braces and
+              double quotes.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Examples:</para>
+
+                  <programlisting>svn.tag 37192
+svn.tag \{\"2006-02-17 15:30 +0230\"\}</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+    </refsection>
+
+    <refsection>
+      <title>Checksum Phase Keywords</title>
+
+      <para>The list of keywords related to the checksum phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>checksums</term>
+
+          <listitem>
+            <para>Checksum(s) of the distribution files. For ports with
+            multiple distribution files, filenames must be included to
+            associate files with their checksums.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: ???</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>checksums     md5 dafa161bc9c61e57636a6085c87c1fe8 \
+              sha1 5da610e1c8bc01b80abc21ab9e98e004363b429c \
+              rmd160 0c1147242adf476f5e93f4d59b553ee3ea378b23</programlisting>
+
+                <programlisting>checksums     ${distname}${extract.suffix} md5 dafa161bc9c61e57636a6085c87c1fe8 \
+                  sha1 5da610e1c8bc01b80abc21ab9e98e004363b429c \
+                  rmd160 0c1147242adf476f5e93f4d59b553ee3ea378b23 \
+              hobbit.tar.gz md5 3b8d02c6cf6239b9bdadbc6543c5a683 \
+                  sha1 27874638b23e66d39ed94fe716ca25c967f6e993 \
+                  rmd160 82b9991f3bf0ceedbf74c188c5fa44b98b5e40c9</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Extract Phase Keywords</title>
+
+      <para>The list of keywords related to the extract phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>extract.only</term>
+
+          <term>extract.only-append</term>
+
+          <term>extract.only-delete</term>
+
+          <listitem>
+            <para>List of files to extract into
+            <varname>${worksrcpath}</varname>; the default is
+            <varname>${distfiles}</varname>. Only use if default extract
+            behavior is not correct for your port.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>extract.only     foo.tar.gz
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>extract.only-append  bar.tar.gz
+extract.only-delete  foo.tar.gz</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>extract.cmd</term>
+
+          <listitem>
+            <para>Command to perform extraction.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: gzip</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>extract.cmd     gunzip</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>extract.args</term>
+
+          <term>extract.pre_args</term>
+
+          <term>extract.post_args</term>
+
+          <listitem>
+            <para>Main arguments to extract.cmd; additional arguments passed
+            before and after the main arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: ${distpath}/${distfile}</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>extract.args      ${distpath}/${distfile}
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>extract.pre_args default: "-dc"</para>
+              </listitem>
+
+              <listitem>
+                <para>extract.post_args default: " | tar -xf"</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>extract.pre_args     xf
+extract.post_args    "| gnutar –x"</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Patch Phase Keywords</title>
+
+      <para>The list of keywords related to the patch phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>patch.dir</term>
+
+          <listitem>
+            <para>Specify the base path for patch files.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${worksrcpath}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patch.dir      ${worksrcpath}/util</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>patch.cmd</term>
+
+          <listitem>
+            <para>Specify the command to be used for patching files.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <command>patch</command></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patch.cmd      cat</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>patchfiles</term>
+
+          <term>patchfiles-append</term>
+
+          <term>patchfiles-delete</term>
+
+          <listitem>
+            <para>Specify patch files to be applied for a port; list modifiers
+            specify patchfiles to be added or removed from a previous
+            patchfile declaration.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patchfiles     patch-Makefile.in \
+               patch-source.c
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>patchfiles-append   patch-configure
+patchfiles-delete   patch-src-Makefile.in
+</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>patch.args</term>
+
+          <term>patch.pre_args</term>
+
+          <term>patch.post_args</term>
+
+          <listitem>
+            <para>Main arguments to patch.cmd; optional argument modifiers
+            pass arguments before and after the main arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patch.args   ???
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>patch.pre_args default: -p0</para>
+              </listitem>
+
+              <listitem>
+                <para>patch.post_args default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>patch.pre_args     -p1
+patch.post_args    ???</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Configure Phase Keywords</title>
+
+      <para>The list of keywords related to the configure phase.</para>
+
+      <para>MacPorts base sets some important default configure options, so
+      should use the -append version of most configure keywords so you don't
+      overwrite them. For example, MacPorts base sets default
+      <literal>configure.cflags</literal> so you should always use
+      <literal>configure.cflags-append</literal> to set additional CFLAGS in
+      Portfiles.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>configure.env</term>
+
+          <term>configure.env-append</term>
+
+          <term>configure.env-delete</term>
+
+          <listitem>
+            <para>Set environment variables for configure; list modifiers add
+            and delete items from a previous Portfile configure.env keyword,
+            or a default set by MacPorts base. If available, it is encouraged
+            to use the predefined options (like configure.cflags) instead of
+            modifying configure.env directly</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>CFLAGS=-I${prefix}/include
+                LDFLAGS=-L${prefix}/lib</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.env   QTDIR=${prefix}/lib/qt3
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>configure.env-append   ABI=32
+configure.env-delete   TCLROOT=${prefix}</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.cflags</term>
+
+          <term>configure.cflags-append</term>
+
+          <term>configure.cflags-delete</term>
+
+          <listitem>
+            <para>Set CFLAGS compiler flags; list modifiers add or delete
+            items from a previous Portfile configure.cflags keyword or the
+            default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-O2</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cflags    -Os -flat_namespace
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>configure.cflags-append   "-undefined suppress"
+configure.cflags-delete   -O2</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.ldflags</term>
+
+          <term>configure.ldflags-append</term>
+
+          <term>configure.ldflags-delete</term>
+
+          <listitem>
+            <para>Set LDFLAGS compiler flags; list modifiers add or delete
+            items from a previous Portfile configure.ldflags keyword or the
+            default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-L${prefix}/lib</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.ldflags    -L${worksrcpath}/zlib -lz
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>configure.ldflags-append   "-L/usr/X11R6/lib -L${worksrcpath}/lib"
+configure.ldflags-delete   -L${prefix}/lib/db44</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.cppflags</term>
+
+          <term>configure.cppflags-append</term>
+
+          <term>configure.cppflags-delete</term>
+
+          <listitem>
+            <para>Set CPPFLAGS to be passed to the C processor; list modifiers
+            add or delete items from a previous Portfile configure.cppflags
+            keyword or the default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-I${prefix}/include</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cppflags    -I${worksrcpath}/include
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>configure.cppflags-append   "-I/usr/X11R6/lib -I${worksrcpath}/lib -DHAVE_RRD_12X"
+configure.cppflags-delete   -I${prefix}/lib/db44</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <!-- fortran compiler options -->
+
+        <varlistentry>
+          <term>configure.fflags</term>
+
+          <term>configure.fflags-append</term>
+
+          <term>configure.fflags-delete</term>
+
+          <listitem>
+            <para>Set FFLAGS to be passed to the Fortran compiler; list
+            modifiers add or delete items from a previous Portfile
+            configure.fflags keyword or the default set by MacPorts
+            base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-O2</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.fflags    -Os
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.fcflags</term>
+
+          <term>configure.fcflags-append</term>
+
+          <term>configure.fcflags-delete</term>
+
+          <listitem>
+            <para>Set FCFLAGS to be passed to the Fortran compiler; list
+            modifiers add or delete items from a previous Portfile
+            configure.fcflags keyword or the default set by MacPorts
+            base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-O2</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.fcflags    -Os
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.f90flags</term>
+
+          <term>configure.f90flags-append</term>
+
+          <term>configure.f90flags-delete</term>
+
+          <listitem>
+            <para>Set F90FLAGS to be passed to the Fortran 90 compiler; list
+            modifiers add or delete items from a previous Portfile
+            configure.f90flags keyword or the default set by MacPorts
+            base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-O2</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.f90flags    -Os
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <!-- fortran compiler options end -->
+
+        <!-- compiler selection arguments -->
+
+        <varlistentry>
+          <term>configure.cc</term>
+
+          <listitem>
+            <para>Set CC compiler flags for selecting a C compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cc    ${prefix}/bin/gcc-mp-4.2</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.cpp</term>
+
+          <listitem>
+            <para>Set CPP compiler flags for selecting a C
+            preprocessor;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cpp    /usr/bin/cpp-3.3</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.cxx</term>
+
+          <listitem>
+            <para>Set CXX compiler flags for selecting a C++ compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cpp    /usr/bin/g++-4.0</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.objc</term>
+
+          <listitem>
+            <para>Set OBJC compiler flags for selecting an Objective-C
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.objc    /usr/bin/gcc-4.0</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.fc</term>
+
+          <listitem>
+            <para>Set FC compiler flags for selecting a Fortran
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.fc    ${prefix}/bin/gfortran-mp-4.2</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.f77</term>
+
+          <listitem>
+            <para>Set F77 compiler flags for selecting a Fortran 77
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.f77    ${prefix}/bin/gfortran-mp-4.2</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.f90</term>
+
+          <listitem>
+            <para>Set F90 compiler flags for selecting a Fortran 90
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.f90    ${prefix}/bin/gfortran-mp-4.2</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.javac</term>
+
+          <listitem>
+            <para>Set JAVAC compiler flags for selecting a Java
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.javac    ${prefix}/bin/jikes</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <!-- compiler selection arguments end -->
+
+        <!-- interpreter selection arguments -->
+
+        <varlistentry>
+          <term>configure.perl</term>
+
+          <listitem>
+            <para>Set PERL flag for selecting a Perl interpreter;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.perl    ${prefix}/bin/perl5.8</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.python</term>
+
+          <listitem>
+            <para>Set PYTHON flag for selecting a Python interpreter;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.python    ${prefix}/bin/python3.0</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.ruby</term>
+
+          <listitem>
+            <para>Set RUBY flag for selecting a Ruby interpreter;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.ruby    ${prefix}/bin/ruby</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <!-- interpreter selection arguments end -->
+
+        <varlistentry>
+          <term>configure.args</term>
+
+          <term>configure.pre_args</term>
+
+          <term>configure.post_args</term>
+
+          <listitem>
+            <para>Main arguments to configure.cmd; optional argument modifiers
+            pass arguments before and after the main arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.args    --bindir=${prefix}/bin
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>configure.pre_args default: --prefix=${prefix}</para>
+              </listitem>
+
+              <listitem>
+                <para>configure.post_args default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>configure.pre_args   --prefix=${prefix}/share/bro
+configure.post_args  OPT="-D__DARWIN_UNIX03"</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <refsection>
+        <title>Configure Universal</title>
+
+        <para>Universal keywords are used to make a port compile on the OS X
+        platform to run on either PPC or Intel.</para>
+
+        <note>
+          <para>There is a default universal variant made available to all
+          ports by MacPorts base, so redefining universal keywords should only
+          be done to make a given port compile if the default options fail to
+          do so.</para>
+        </note>
+
+        <variablelist>
+          <varlistentry>
+            <term>configure.universal_args</term>
+
+            <listitem>
+              <para>Arguments used in the configure script to build the port
+              universal.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: --disable-dependency-tracking</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>configure.universal_cflags</term>
+
+            <listitem>
+              <para>Arguments appended to the configure script to build the
+              port universal.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: -sysroot /Developer/SDKs/MacOSX10.4u.sdk
+                  -arch i386 -arch ppc</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>configure.universal_cppflags</term>
+
+            <listitem>
+              <para>Additional flags to put in the CPPFLAGS environment
+              variable when invoking the configure script.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: ???</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>configure.universal_cxxflags</term>
+
+            <listitem>
+              <para>Additional flags to put in the CXXFLAGS environment
+              variable when invoking the configure script.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: -isysroot /Developer/SDKs/MacOSX10.4u.sdk
+                  -arch i386 -arch ppc</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>configure.universal_ldflags</term>
+
+            <listitem>
+              <para>Additional flags to put in the LDFLAGS environment
+              variable when invoking the configure script.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: -arch i386 -arch ppc</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Automake and Autoconf</title>
+
+        <para>The list of configure keywords available for ports that need
+        automake and/or autoconf.</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>use_automake</term>
+
+            <listitem>
+              <para>Whether or not to use automake; the default is
+              "no".</para>
+
+              <programlisting>use_automake      yes</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>automake.env</term>
+
+            <listitem>
+              <para>Environment variables to pass to automake.</para>
+
+              <programlisting>automake.env      CFLAGS=-I${prefix}/include</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>automake.args</term>
+
+            <listitem>
+              <para>Arguments to pass to automake.</para>
+
+              <programlisting>automake.args     --foreign</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>automake.dir</term>
+
+            <listitem>
+              <para>Directory in which to run
+              <varname>${automake.cmd}</varname>; the default is
+              <varname>${worksrcpath}</varname>.</para>
+
+              <programlisting>automake.dir      ./src</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>use_autoconf</term>
+
+            <listitem>
+              <para>Whether or not to use autoconf; the default is
+              "no".</para>
+
+              <programlisting>use_autoconf      yes</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>autoconf.env</term>
+
+            <listitem>
+              <para>Environmental variables to pass to autoconf.</para>
+
+              <programlisting>autoconf.env      CFLAGS=-I${prefix}/include/gtk12</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>autoconf.args</term>
+
+            <listitem>
+              <para>Arguments to pass to autoconf.</para>
+
+              <programlisting>autoconf.args     -l src/aclocaldir</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>autoconf.dir</term>
+
+            <listitem>
+              <para>Directory in which to run
+              <varname>${autoconf.cmd}</varname>; the default is
+              <varname>${worksrcpath}</varname>.</para>
+
+              <programlisting>autoconf.dir      src</programlisting>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+    </refsection>
+
+    <refsection>
+      <title>Build Phase Keywords</title>
+
+      <para>The list of keywords related to the build phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>build.cmd</term>
+
+          <listitem>
+            <para>Make command to run in <varname>${worksrcdir}</varname>; the
+            default is "make".</para>
+
+            <programlisting>build.cmd      pbxbuild</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>build.type</term>
+
+          <listitem>
+            <para>Defines which "make" is required: "gnu" or "bsd". Sets
+            build.cmd to either "gnumake" or "bsdmake" accordingly.</para>
+
+            <programlisting>build.type     gnu</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>build.args</term>
+
+          <term>build.pre_args</term>
+
+          <term>build.post_args</term>
+
+          <listitem>
+            <para>Main arguments to build.cmd; optional argument modifiers
+            pass arguments before and after the main arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>build.args    -DNOWARN
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>build.pre_args default:
+                <varname>${build.target.current}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>build.post_args default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>build.pre_args  -project AudioSlicer.xcode
+build.post_args CFLAGS_SYS="-DUSE_FREETYPE -DPREFER_FREETYPE"</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>build.target</term>
+
+          <term>build.target-append</term>
+
+          <term>build.target-delete</term>
+
+          <listitem>
+            <para>Build target to pass to ${build.cmd}; list modifiers add or
+            delete items from a previous Portfile build.target keyword or the
+            default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: all</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>build.target    all-src
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>build.target-append   doc extra
+build.target-delete   compat</programlisting>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Destroot Phase Keywords</title>
+
+      <para>The list of keywords related to the destroot phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>destroot.cmd</term>
+
+          <listitem>
+            <para>Install command to run relative to
+            <varname>${worksrcdir}</varname>; default is
+            <varname>${build.cmd}</varname>.</para>
+
+            <programlisting>destroot.cmd         pbxbuild</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.type</term>
+
+          <listitem>
+            <para>Defines which "make" is required: either "gnu" or "bsd".
+            Sets install.cmd to either "gnumake" or "bsdmake"
+            accordingly.</para>
+
+            <programlisting>destroot.type        gnu</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.args</term>
+
+          <term>destroot.pre_args</term>
+
+          <term>destroot.post_args</term>
+
+          <listitem>
+            <para>Main arguments to ${destroot.cmd}; optional argument
+            modifiers pass arguments before and after the main
+            arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>destroot.args    BINDIR=${prefix}/bin
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>destroot.pre_args default:
+                <varname>${destroot.target}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>destroot.post_args default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>destroot.pre_args  -project AudioSlicer.xcode
+destroot.post_args INSTDIR=${destroot}${prefix}</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.target</term>
+
+          <term>destroot.target-append</term>
+
+          <term>destroot.target-delete</term>
+
+          <listitem>
+            <para>Install target to pass to ${destroot.cmd}; list modifiers
+            add or delete items from a previous Portfile destroot.target
+            keyword or the default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>install</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>destroot.target    install install-config install-commandmode
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>destroot.target-append   install-plugins
+destroot.target-delete   install-commandmode</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.destdir</term>
+
+          <listitem>
+            <para>Arguments passed to ${destroot.cmd} to install correctly
+            into the destroot.</para>
+
+            <programlisting>destroot.destdir     prefix=${destroot}${prefix}</programlisting>
+
+            <note>
+              <para>If an application's Makefile properly supports the DESTDIR
+              variable, MacPorts will automatically destroot the port
+              properly. A port must destroot properly or the port will not
+              install correctly, upgrade, or uninstall. If not, you may need
+              to set this variable, or even patch the application's
+              Makefile.</para>
+            </note>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.keepdirs</term>
+
+          <listitem>
+            <para>A list of directories that should not be removed if empty
+            upon destroot completion.</para>
+
+            <programlisting>destroot.keepdirs \
+                ${destroot}${prefix}/var/run \
+                ${destroot}${prefix}/var/log \
+                ${destroot}${prefix}/var/cache/mrtg</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.violate_mtree</term>
+
+          <listitem>
+            <para>MacPorts tests for compliance to the common directory
+            structure in ${prefix}; the default is "no". If a port is not
+            compliant with the standard, set it to "yes".</para>
+
+            <programlisting>destroot.violate_mtree    yes</programlisting>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+  </refsection>
+
+  <refsection>
+    <title>SEE ALSO</title>
+
+    <para><citerefentry>
+        <refentrytitle>portfile-global</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portfile-startupitem</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portfile-tcl</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry></para>
+  </refsection>
+
+  <refsection>
+    <title>AUTHORS</title>
+
+    <para>Landon Fuller <email>landonf at macports.org</email></para>
+
+    <para>Juan Manuel Palacios <email>jmpp at macports.org</email></para>
+
+    <para>Mark Duling <email>markd at macports.org</email></para>
+
+    <para>Kevin Van Vechten <email>kevin at opendarwin.org</email></para>
+
+    <para>Jordan K. Hubbard <email>jkh at macports.org</email></para>
+
+    <para>Chris Ridd <email>cjr at opendarwin.org</email></para>
+
+    <para>Kevin Ballard <email>eridius at macports.org</email></para>
+
+    <para>Markus W. Weissmann <email>mww at macports.org</email></para>
+  </refsection>
+</refentry>
\ No newline at end of file

Added: trunk/doc-new/man/xml/portfile-startupitem.7.xml
===================================================================
--- trunk/doc-new/man/xml/portfile-startupitem.7.xml	                        (rev 0)
+++ trunk/doc-new/man/xml/portfile-startupitem.7.xml	2007-10-28 04:16:04 UTC (rev 30444)
@@ -0,0 +1,668 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry>
+  <refmeta>
+    <refentrytitle>PORTFILE-STARTUPITEM</refentrytitle>
+
+    <manvolnum>7</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>portfile</refname>
+
+    <refpurpose>MacPorts Portfile reference</refpurpose>
+  </refnamediv>
+
+  <refsection>
+    <title>Description</title>
+
+    <para>A complete reference of all available Portfile StartupItem keywords.
+    Portfiles consist of valid TCL and are encoded in UTF-8. They usually
+    contain only simple keyword/value combinations and Tcl extensions as
+    described below, though they may also contain arbitrary TCL code. Every
+    port has a corresponding Portfile, but Portfiles do not completely define
+    a port's installation behavior since the MacPorts base has default port
+    installation characteristics coded within it. Therefore Portfiles need
+    only specify required options and, if necessary, non-default
+    characteristics for a port.</para>
+  </refsection>
+
+  <refsection>
+    <refsection>
+      <title>StartupItems</title>
+
+      <para>A StartupItem is a MacPort facility to run "daemons," a Unix term
+      for programs that run continuously in the background, rather than under
+      the direct control of a user; for example, mail servers, network
+      listeners, etc. Ports that use StartupItem keywords create Mac OS X
+      scripts for <ulink
+      url="http://developer.apple.com/macosx/launchd.html">launchd</ulink>,
+      which is the Apple facility introduced with OS X 10.4 to replace xinetd
+      for starting and managing daemons. To support
+      <command>launchd</command>, a program named <command>daemondo</command>
+      is provided by MacPorts base that serves as an adapter between OS X's
+      <command>launchd</command> and daemons (<quote>executable</quote>
+      StartupItems) or traditional Unix startup scripts that start daemons
+      (<quote>script</quote> StartupItems).</para>
+
+      <para>There are three categories of StartupItem keywords. Those that
+      trigger StartupItem creation and logging, those that specify attributes
+      of <quote>executable</quote> StartupItems, and those that specify
+      attributes of <quote>script</quote> StartupItems.</para>
+
+      <refsection>
+        <title>StartupItem Attributes</title>
+
+        <para>The keywords in this section may be used with either
+        <quote>executable</quote> or <quote>script</quote> StartupItems (see
+        below).</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>startupitem.create</term>
+
+            <listitem>
+              <para>Trigger the creation of a StartupItem.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.create  yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.name</term>
+
+            <listitem>
+              <para>Sets the name for the StartupItem.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: required</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>any_name</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.name  OpenSSH</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.logfile</term>
+
+            <listitem>
+              <para>Path to a logfile for logging events about the lifetime of
+              the StartupItem. Depending on the type of StartupItem, and the
+              manner in which it is started, standard output from the daemon
+              may also be directed to the logfile.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: <filename>/dev/null</filename></para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>/file/path</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.logfile  ${prefix}/var/log/mydaemon.log</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.logevents</term>
+
+            <listitem>
+              <para>Control whether or not to log events to the log file. If
+              logevents is set, events with timestamps are logged to the
+              logfile.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.logevents   yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.netchange</term>
+
+            <listitem>
+              <para>Cause the daemon to be restarted when a change in network
+              state is detected.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.netchange  yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Executable StartupItems</title>
+
+        <para>Daemons run continuously, so monitoring the health of daemon
+        processes and restarting them if they die is an important
+        StartupItems' feature. <quote>Executable</quote> StartupItems are
+        preferred over <quote>script</quote> StartupItems because
+        <command>daemondo</command> launches the daemon
+        <emphasis>directly</emphasis>, rather than
+        <emphasis>indirectly</emphasis> via a script, and therefore it
+        automatically knows how to monitor a daemon process and restart it if
+        it dies. Daemons used with <quote>executable</quote> StartupItems may
+        be programs or scripts (shell, perl, python, etc.), but when a script
+        the script <emphasis>itself</emphasis> must be the daemon, rather than
+        a script that launches a daemon. <quote>Script</quote> StartupItems
+        are to be used for the latter.</para>
+
+        <note>
+          <para>For a given port, the <quote>executable</quote> StartupItem
+          keyword may not be used with any keywords in the
+          <quote>script</quote> StartupItem category.</para>
+        </note>
+
+        <variablelist>
+          <varlistentry>
+            <term>startupitem.executable</term>
+
+            <listitem>
+              <para>Specifies the name of the daemon to be run in the
+              background. It may have multiple arguments, but they must be
+              appropriate for a call to exec; arbitrary shell code may not be
+              used.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values:
+                  <replaceable>/path/to/executable</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.executable  "${prefix}/bin/nmicmpd"</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.inetdcompat</term>
+
+            <listitem>
+              <para>This keyword can only be used with startupitem.executable
+              and sets inetdCompatibility option.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.inetdcompat   yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.inetdsockname</term>
+
+            <listitem>
+              <para>Specify the xinetd socket servicename given in
+              <filename>/etc/services</filename>; this is mandatory when using
+              startupitem.inetdcompat, otherwise an invalid plist file
+              results.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional, but mandatory when using
+                  startupitem.inetdcompat.</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>name</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.inetdsockname   nmicmpd</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.inetdnowait</term>
+
+            <listitem>
+              <para>This keyword can only be used with
+              startupitem.inetdcompat, and corresponds to "wait" or "nowait"
+              option of xinetd services.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.inetdnowait   yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.logevents</term>
+
+            <listitem>
+              <para>Control whether or not to log events to the log file. If
+              logevents is set, events with timestamps are logged to the
+              logfile.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.logevents   yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Script StartupItems</title>
+
+        <para>StartupItems of type <quote>script</quote> use
+        <command>daemondo</command> to launch a daemon
+        <emphasis>indirectly</emphasis> via a startup script. A typical
+        snippet of a startup script that may be used with a
+        <quote>script</quote> StartupItem is shown below. Notice that the
+        script is not a daemon; rather the script indirectly launches the
+        vm-pop3d daemon.</para>
+
+        <programlisting>#!/bin/sh
+#
+case "$1" in
+  start)
+       echo -n "Starting vm-pop3d: "
+       /opt/local/sbin/vm-pop3d -d 10 -t 600
+
+
+[... trimmed ...]</programlisting>
+
+        <para>But if a script itself is a daemon, use the executable
+        StartupItem type since that way it will be launched directly and its
+        health tracked automatically. When using <quote>script</quote>
+        StartupItems, the <code>startupitem.pidfile</code> keyword must be
+        used if you want <command>daemondo</command> to monitor a daemon
+        process and restart it if it dies.</para>
+
+        <note>
+          <para>For a given port, StartupItem keywords in category
+          <quote>script</quote> may not be used with an
+          <quote>executable</quote> StartupItem keyword.</para>
+        </note>
+
+        <variablelist>
+          <varlistentry>
+            <term>startupitem.start</term>
+
+            <term>startupitem.stop</term>
+
+            <term>startupitem.restart</term>
+
+            <listitem>
+              <para>Specify a shell script to start, stop, and restart the
+              daemon. In the absence of a restart key, the daemon will be
+              restarted by taking the stop action, followed by the start
+              action.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>shell_script</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Examples:</para>
+
+                  <programlisting>startupitem.start ${prefix}/share/mysql/mysql.server start
+startupitem.stop ${prefix}/share/mysql/mysql.server stop
+startupitem.restart ${prefix}/share/mysql/mysql.server restart</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.init</term>
+
+            <listitem>
+              <para>Shell code that will be executed prior to any of the
+              options <code>startupitem.start</code>,
+              <code>startupitem.stop</code> and
+              <code>startupitem.restart</code>.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>shell_script</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.init  "PID=/var/run/dhcpd.pid"</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.pidfile</term>
+
+            <listitem>
+              <para>This keyword must be defined properly for
+              <command>daemondo</command> to be able to monitor daemons
+              launched via <quote>script</quote> StartupItems and restart them
+              if they die. It specifies two things: a process id (PID) file
+              handling method, and a pidfile name and path.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: [none] |
+                  [<filename>${prefix}/var/run/${name}.pid</filename>]</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values [none auto manual clean]
+                  [<replaceable>/path/to/pidfile</replaceable>]</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.pidfile auto ${prefix}/var/run/${name}.pidfile</programlisting>
+                </listitem>
+              </itemizedlist>
+
+              <para>PID file handling options:</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para><option>none</option> - daemondo will not create or
+                  track a PID file, so it won't know when a daemon
+                  dies.</para>
+                </listitem>
+
+                <listitem>
+                  <para><option>auto</option> - The started process is
+                  expected to create a PID file that contains the PID of the
+                  running daemon; daemondo then reads the PID from the file
+                  and tracks the process. The started process must delete the
+                  PID file if this is necessary.</para>
+                </listitem>
+
+                <listitem>
+                  <para><option>clean</option> - The started process is
+                  expected to create a PID file that contains the PID of the
+                  running daemon; daemondo then reads the PID from the file
+                  and tracks the process, and deletes the PID file if it
+                  detects the daemon has died.</para>
+                </listitem>
+
+                <listitem>
+                  <para><option>manual</option> - This option should only be
+                  used if an <quote>executable</quote> StartupItem could be
+                  used (daemondo launches a daemon directly)
+                  <emphasis>and</emphasis> a port author wants a PID file
+                  written for some special use. A PID file is not needed to
+                  detect process death for daemons launched directly by
+                  daemondo. As with executale StartupItems, daemondo remembers
+                  the PID of the launched process and tracks it
+                  automatically.</para>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Loading / Unloading StartupItems into launchd</title>
+
+        <para>A port with a StartupItem places a link to a .plist file for the
+        port's daemon within <filename>/Library/LaunchDaemons/</filename>. A
+        .plist file is an XML file; MacPorts installs .plist files tagged as
+        <quote>disabled</quote> for the sake of security. You may enable a
+        startup script (tag the.plist file as <quote>enabled</quote>) and load
+        it into <command>launchd</command> with a single command as
+        shown.</para>
+
+        <programlisting><prompt>%%</prompt> <userinput>sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist</userinput></programlisting>
+
+        <para>You may stop a running startup script, disable it (tag the.plist
+        file as <quote>disabled</quote>), and unload it from
+        <command>launchd</command> with a single command as shown.</para>
+
+        <programlisting><prompt>%%</prompt> <userinput>sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist</userinput></programlisting>
+      </refsection>
+
+      <refsection>
+        <title>StartupItem Internals</title>
+
+        <para>During port installation a MacPorts StartupItem creates a .plist
+        file in <filename>${prefix}/etc/LaunchDaemons/</filename>, and places
+        a symbolic link to the .plist file within
+        <filename>/Library/LaunchDaemons/</filename>.</para>
+
+        <para>For example, the StartupItem for the mysql5 port is
+        <filename>org.macports.mysql5.plist</filename>, and it is linked as
+        shown.</para>
+
+        <programlisting><prompt>%%</prompt> <userinput>ls -l /Library/LaunchDaemons</userinput></programlisting>
+
+        <screen>org.macports.mysql5.plist -&gt;
+     /opt/local/etc/LaunchDaemons/org.macports.mysql5/org.macports.mysql5.plist</screen>
+
+        <para>For <quote>script</quote> StartupItems, in addition to a .plist
+        file, a wrapper is also created.<programlisting><prompt>%%</prompt> <userinput>ls -l /opt/local/etc/LaunchDaemons/org.macports.mysql5/</userinput></programlisting><screen>-rwxr-xr-x   2 root  wheel  475 Aug  2 14:16 mysql5.wrapper
+-rw-r--r--   2 root  wheel  975 Aug  2 14:16 org.macports.mysql5.plist</screen>The
+        wrapper manipulates the script as specified in the startupitem.start
+        and startupitem.stop keywords. An example wrapper script snippet is
+        shown below.</para>
+
+        <programlisting>#!/bin/sh
+#
+# MacPorts generated daemondo support script
+
+# Start
+Start()
+{
+        /opt/local/share/mysql5/mysql/mysql.server start
+}
+
+# Stop
+Stop()
+{
+        /opt/local/share/mysql5/mysql/mysql.server stop
+}
+
+[... trimmed ...]</programlisting>
+      </refsection>
+    </refsection>
+  </refsection>
+
+  <refsection>
+    <title>SEE ALSO</title>
+
+    <para><citerefentry>
+        <refentrytitle>portfile-global</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portfile-phase</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portfile-tcl</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry></para>
+  </refsection>
+
+  <refsection>
+    <title>AUTHORS</title>
+
+    <para>Landon Fuller <email>landonf at macports.org</email></para>
+
+    <para>Juan Manuel Palacios <email>jmpp at macports.org</email></para>
+
+    <para>Mark Duling <email>markd at macports.org</email></para>
+
+    <para>Kevin Van Vechten <email>kevin at opendarwin.org</email></para>
+
+    <para>Jordan K. Hubbard <email>jkh at macports.org</email></para>
+
+    <para>Chris Ridd <email>cjr at opendarwin.org</email></para>
+
+    <para>Kevin Ballard <email>eridius at macports.org</email></para>
+
+    <para>Markus W. Weissmann <email>mww at macports.org</email></para>
+  </refsection>
+</refentry>
\ No newline at end of file

Added: trunk/doc-new/man/xml/portfile-tcl.7.xml
===================================================================
--- trunk/doc-new/man/xml/portfile-tcl.7.xml	                        (rev 0)
+++ trunk/doc-new/man/xml/portfile-tcl.7.xml	2007-10-28 04:16:04 UTC (rev 30444)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry>
+  <refmeta>
+    <refentrytitle>PORTFILE-TCL</refentrytitle>
+
+    <manvolnum>7</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>portfile</refname>
+
+    <refpurpose>MacPorts Portfile reference</refpurpose>
+  </refnamediv>
+
+  <refsection>
+    <title>Description</title>
+
+    <para>A complete reference of all available Portfile Tcl extensions.
+    Portfiles consist of valid TCL and are encoded in UTF-8. They usually
+    contain only simple keyword/value combinations and Tcl extensions as
+    described below, though they may also contain arbitrary TCL code. Every
+    port has a corresponding Portfile, but Portfiles do not completely define
+    a port's installation behavior since the MacPorts base has default port
+    installation characteristics coded within it. Therefore Portfiles need
+    only specify required options and, if necessary, non-default
+    characteristics for a port.</para>
+  </refsection>
+
+  <refsection>
+    <title>TCL EXTENSIONS</title>
+
+    <para></para>
+  </refsection>
+
+  <refsection>
+    <title>SEE ALSO</title>
+
+    <para><citerefentry>
+        <refentrytitle>portfile-global</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portfile-phase</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portfile-startupitem</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry></para>
+  </refsection>
+
+  <refsection>
+    <title>AUTHORS</title>
+
+    <para>Landon Fuller <email>landonf at macports.org</email></para>
+
+    <para>Juan Manuel Palacios <email>jmpp at macports.org</email></para>
+
+    <para>Mark Duling <email>markd at macports.org</email></para>
+
+    <para>Kevin Van Vechten <email>kevin at opendarwin.org</email></para>
+
+    <para>Jordan K. Hubbard <email>jkh at macports.org</email></para>
+
+    <para>Chris Ridd <email>cjr at opendarwin.org</email></para>
+
+    <para>Kevin Ballard <email>eridius at macports.org</email></para>
+
+    <para>Markus W. Weissmann <email>mww at macports.org</email></para>
+  </refsection>
+</refentry>
\ No newline at end of file

Deleted: trunk/doc-new/man/xml/portfile.7.xml
===================================================================
--- trunk/doc-new/man/xml/portfile.7.xml	2007-10-28 01:33:30 UTC (rev 30443)
+++ trunk/doc-new/man/xml/portfile.7.xml	2007-10-28 04:16:04 UTC (rev 30444)
@@ -1,3356 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<refentry>
-  <refmeta>
-    <refentrytitle>PORTFILE</refentrytitle>
-
-    <manvolnum>7</manvolnum>
-  </refmeta>
-
-  <refnamediv>
-    <refname>portfile</refname>
-
-    <refpurpose>MacPorts Portfile reference</refpurpose>
-  </refnamediv>
-
-  <refsection>
-    <title>Description</title>
-
-    <para>A complete reference of all available Portfile variables and example
-    syntax. Portfiles consist of valid TCL and are encoded in UTF-8. They
-    usually contain only simple keyword/value combinations and Tcl extensions
-    as described below, though they may also contain arbitrary TCL code. Every
-    port has a corresponding Portfile, but Portfiles do not completely define
-    a port's installation behavior since the MacPorts base has default port
-    installation characteristics coded within it. Therefore Portfiles need
-    only specify required options and, if necessary, non-default
-    characteristics for a port.</para>
-  </refsection>
-
-  <refsection condition="guide">
-    <title>Table of Contents</title>
-
-    <para>The contents of this man page.</para>
-
-    <orderedlist>
-      <listitem>
-        <para>Global Variables</para>
-      </listitem>
-
-      <listitem>
-        <para>Global Keyword Reference</para>
-
-        <itemizedlist>
-          <listitem>
-            <para>General Global Keywords</para>
-          </listitem>
-
-          <listitem>
-            <para>Dependencies</para>
-          </listitem>
-
-          <listitem>
-            <para>Variants</para>
-          </listitem>
-
-          <listitem>
-            <para>Livecheck / Distcheck</para>
-          </listitem>
-
-          <listitem>
-            <para>StartupItems</para>
-          </listitem>
-        </itemizedlist>
-      </listitem>
-
-      <listitem>
-        <para>Installation Phase Keyword Reference</para>
-
-        <itemizedlist>
-          <listitem>
-            <para>A word about keyword list modifiers</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Common uses for keyword list modifiers</para>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>A word about keyword argument modifiers</para>
-          </listitem>
-
-          <listitem>
-            <para>Fetch</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Fetch from CVS</para>
-              </listitem>
-
-              <listitem>
-                <para>Fetch from SVN</para>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>Checksum</para>
-          </listitem>
-
-          <listitem>
-            <para>Extract</para>
-          </listitem>
-
-          <listitem>
-            <para>Patch</para>
-          </listitem>
-
-          <listitem>
-            <para>Automake / Autoconf</para>
-          </listitem>
-
-          <listitem>
-            <para>Configure</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Configure Universal</para>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>Build</para>
-          </listitem>
-
-          <listitem>
-            <para>Destroot</para>
-          </listitem>
-
-          <listitem>
-            <para>Test</para>
-          </listitem>
-        </itemizedlist>
-      </listitem>
-
-      <listitem>
-        <para>Tcl Extensions</para>
-      </listitem>
-    </orderedlist>
-  </refsection>
-
-  <refsection>
-    <title>Global Variables</title>
-
-    <para>Global variables are variables available to any Portfile. For a list
-    of additional variables available to ports that are assigned to a MacPorts
-    Portgroup, see portgroup(7).</para>
-
-    <variablelist>
-      <varlistentry>
-        <term>prefix</term>
-
-        <listitem>
-          <para>Installation prefix, set in
-          <filename>${prefix}/etc/macports/macports.conf</filename> —may be
-          overridden on a per port basis. For example, aqua applications are
-          installed in <filename>/Applications/MacPorts</filename>.</para>
-
-          <para>Default: /opt/local</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>binpath</term>
-
-        <listitem>
-          <para>Default PATH to use in finding executables.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>libpath</term>
-
-        <listitem>
-          <para>Path to the MacPorts TCL libraries.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>portpath</term>
-
-        <listitem>
-          <para>Full path to the Portfile location.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>filesdir</term>
-
-        <listitem>
-          <para>Path to port files relative to
-          <varname>${portpath}</varname>.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>workpath</term>
-
-        <listitem>
-          <para>Full path to work directory.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>worksrcpath</term>
-
-        <listitem>
-          <para>Full path to extracted source code. Equivalent to
-          <varname>${workpath}/${worksrcdir}</varname>.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>destroot</term>
-
-        <listitem>
-          <para>Full path into which software will be destrooted. Equivalent
-          to <filename>${workpath}/destroot</filename>.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>distpath</term>
-
-        <listitem>
-          <para>Location to store downloaded distfiles.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>install.user</term>
-
-        <listitem>
-          <para>The Unix user at the time of port installation.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>install.group</term>
-
-        <listitem>
-          <para>The Unix group at the time of port installation.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>os.platform</term>
-
-        <listitem>
-          <para>Identifies platform type (ie, "darwin", "freebsd",
-          etc).</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>os.arch</term>
-
-        <listitem>
-          <para>Identifies hardware type (ie, "powerpc", "intel").</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>os.version</term>
-
-        <listitem>
-          <para>The version number of the host operating system (ie "8.0" for
-          Darwin 8.0).</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term>os.major</term>
-
-        <listitem>
-          <para>The major version number of the host operating system (ie "8"
-          for Darwin 8.0).</para>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-  </refsection>
-
-  <refsection>
-    <title>Global Keyword Reference</title>
-
-    <para>MacPorts keywords are used to specify required or optional items
-    within a Portfile, or to override default options used by MacPorts base
-    for individual ports. Keywords are to be used within the "global" and
-    "variant" sections of Portfiles, and not within optional port phase
-    declarations.</para>
-
-    <para>The global keywords listed below specify information for ports as a
-    whole, whereas the keywords listed under a port phase specify information
-    to be used during a particular installation phase.</para>
-
-    <refsection>
-      <title>General Global Keywords</title>
-
-      <para>The list of global keywords.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>PortSystem</term>
-
-          <listitem>
-            <para>The top line of every Portfile; it must be followed by a
-            blank line. It defines which version of the Portfile interpreter
-            will be used.</para>
-
-            <programlisting>PortSystem   1.0
-
-</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>name</term>
-
-          <listitem>
-            <para>The name of the Port; it should be lowercase.</para>
-
-            <programlisting>name         foo</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>version</term>
-
-          <listitem>
-            <para>The version of the ported software.</para>
-
-            <programlisting>version      1.23.45</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>revision</term>
-
-          <listitem>
-            <para>Optional keyword (default is 0) that is used to track port
-            revisions. It should not be incremented for port revisions unless
-            it would benefit users to upgrade an installed port, and cleared
-            when the port is updated to a newer version.</para>
-
-            <programlisting>revision     1</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>epoch</term>
-
-          <listitem>
-            <para>Optional keyword (default is 0) that is used if the new port
-            version looks older than the previous version (for example 1.10
-            -&gt; 1.2). Often the epoch is formatted like a date, but it can
-            simple a number like 1.</para>
-
-            <programlisting>epoch        20070924</programlisting>
-
-            <programlisting>epoch        1</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>categories</term>
-
-          <listitem>
-            <para>The category under which the ported software falls. The
-            first category should be the same as the directory within which
-            the Portfile is stored; secondary and tertiary categories may be
-            selected.</para>
-
-            <programlisting>categories     net security</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>maintainers</term>
-
-          <listitem>
-            <para>A port's maintainer is a person or persons who take
-            responsibility for keeping the port up-to-date, and the maintainer
-            keyword lists maintainer email addresses(s). However, many
-            maintainers wish to hide these addresses from spambots; to do so
-            follow these conventions:</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>For addresses in domain @macports.org, simply omit the
-                domain name.</para>
-              </listitem>
-
-              <listitem>
-                <para>For addresses in other domains, say
-                <email>account at example.org</email>, use the convention
-                example.org:account to specify the address.</para>
-              </listitem>
-            </itemizedlist>
-
-            <para>In the example below, the maintainer email addresses
-            <email>jdoe at macports.org</email> and
-            <email>julesverne at example.org</email> are hidden using these
-            conventions.</para>
-
-            <programlisting>maintainers       jdoe \
-                  example.org:julesverne</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>description</term>
-
-          <listitem>
-            <para>A one-sentence description of the ported software.</para>
-
-            <programlisting>description    A classic shooter arcade game.</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>long_description</term>
-
-          <listitem>
-            <para>A long description of the ported software. Break long lines
-            with escaped newlines.</para>
-
-            <programlisting>description    A classic shooter arcade game derived from \
-               the game alien-munchers.  Not suitable for \
-               children under two years old.      </programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>homepage</term>
-
-          <listitem>
-            <para>Port application's homepage.</para>
-
-            <programlisting>homepage       http://www.somesite.org/apps</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>platforms</term>
-
-          <listitem>
-            <para>The platforms on which the port has been tested.</para>
-
-            <programlisting>platforms      darwin freebsd</programlisting>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsection>
-
-    <refsection>
-      <title>Dependencies</title>
-
-      <para>Free and open source software is highly modular, and MacPorts
-      ports often require that other ports be installed beforehand; these
-      prerequisites for a given port are called a port's
-      <quote>dependencies</quote>.</para>
-
-      <para>There are three types of MacPorts dependencies: library, build,
-      and run dependencies. Dependency types are important for proper port
-      upgrade and uninstall behavior. For example, you may not uninstall a
-      port that is a library dependency for another port, though you may
-      remove one with a build dependency; likewise, upgrading a port will
-      upgrade its library and build dependencies also, but not its run
-      dependencies.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>depends_lib</term>
-
-          <term>depends_lib-append</term>
-
-          <term>depends_lib-delete</term>
-
-          <listitem>
-            <para>The list of dependencies to check before phases
-            <option>configure</option>, <option>build</option>,
-            <option>destroot</option>, <option>install</option>, and
-            <option>package</option>. Library dependencies are needed both at
-            build time (for headers and libraries to link against) and at run
-            time.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>depends_build</term>
-
-          <term>depends_build-append</term>
-
-          <term>depends_build-delete</term>
-
-          <listitem>
-            <para>The list of dependencies to check before phases
-            <option>build</option>, <option>destroot</option>,
-            <option>install</option>, and <option>package</option>. Build
-            dependencies are needed when software is compiled, but not needed
-            at all once the software is compiled and installed.</para>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>depends_run</term>
-
-          <term>depends_run-append</term>
-
-          <term>depends_run-delete</term>
-
-          <listitem>
-            <para>The list of dependencies to check before phases
-            <option>destroot</option>, <option>install</option>, and
-            <option>package</option>. Run dependencies are needed when the
-            software is run, but not to compile it.</para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-
-      <refsection>
-        <title>Port and Non-Port Dependencies</title>
-
-        <para>Port dependencies should be provided by MacPorts ports whenever
-        possible, however dependencies may be provided by vendor-supplied
-        software when satisfying a dependency by a port is not practical or
-        desirable for a special reason. Dependencies of this type are called
-        non-port dependencies.</para>
-
-        <para>Port dependencies, the preferred type, are specified as shown in
-        these examples:</para>
-
-        <programlisting>depends_lib        port:rrdtool port:apache2
-
-depends_build      port:apache2 port:php5</programlisting>
-
-        <para>Non-port dependencies are specified as shown in these
-        examples:</para>
-
-        <programlisting>depends_lib        lib:libX11.6:xorg
-
-depends_build      bin:rrdtool</programlisting>
-      </refsection>
-    </refsection>
-
-    <refsection>
-      <title>Variants</title>
-
-      <para>MacPorts variants are conditional modifications of port
-      installation behavior that may be invoked by a user at the time of port
-      install.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>variant [requires variant] [conflicts variant] [description
-          description]</term>
-
-          <listitem>
-            <para>The variant declaration may contain any keywords that can be
-            placed in a Portfile's global section. If you wish to execute
-            system (shell) calls or Tcl extensions during the execution of a
-            port phase, you should place those statements within a
-            <literal>variant_isset</literal> conditional within a phase
-            declaration and not within the variant declaration itself.
-            Dependencies and conflicts with other variants in the same port
-            can be expressed with requires and conflicts. See the isset Tcl
-            extension.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: no</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>variant gnome requires glib {
-      configure.args-append --with-gnome
-      depends_lib-append port:gnome-session
-}</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>default_variants</term>
-
-          <listitem>
-            <para>If variants are defined, then the default_variants value
-            lists which variants are enabled by default. This allows for
-            Portfile modularity and also allows users to suppress default
-            variants if they wish.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>default_variants +ssl +tcpd
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>Default variants may be suppressed by preceding a variant
-            name with a "-" as shown in this example.</para>
-
-            <programlisting><prompt>%%</prompt> <userinput>port install foo -ssl</userinput></programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>universal_variant</term>
-
-          <listitem>
-            <para>When using MacPorts on Mac OS X, a universal variant is
-            defined by default to configure ports with universal flags. The
-            variant can be overridden if the default code does not work (see
-            the Configure Universal section below), or suppressed if a
-            universal variant is not possible for the port with this
-            keyword.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: yes</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>universal_variant  no</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsection>
-
-    <refsection>
-      <title>Livecheck / Distcheck</title>
-
-      <para>Options livecheck and distcheck are especially useful for port
-      maintainers, but others may also find this information valuable.</para>
-
-      <para>Livecheck checks to see if MacPorts can query the developer's
-      download site to determine if a newer version of the software has become
-      available since the port was installed.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>livecheck.check</term>
-
-          <listitem>
-            <para>Specify what kind of update check to perform.</para>
-
-            <para>Open source mirror site options are to use the project's
-            latest file release from <option>sourceforge</option> or
-            <option>googlecode</option>, or the project's
-            <literal>date_updated</literal> XML tag for
-            <option>freshmeat</option>.</para>
-
-            <para>Generic download site options are to specify a
-            <option>moddate</option> (modification date) of a URL resource), a
-            <option>regex</option> (retrieve the version by applying a regex
-            to a URL resource), <option>regexm</option> (retrieve the version
-            by applying a multi-line regex to a URL resource),
-            <option>md5</option> (compares the md5 sum of a URL resource) or
-            <option>none</option> (no check).</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: sourceforge or googlecode if the master_sites
-                is one of these, else freshmeat.</para>
-              </listitem>
-
-              <listitem>
-                <para>Values: freshmeat sourceforge googlecode moddate regex
-                regexm md5 none</para>
-              </listitem>
-
-              <listitem>
-                <para>Examples:</para>
-
-                <programlisting>livecheck.check     regex
-livecheck.url       http://dev.mysql.com/
-livecheck.regex     "Generally Available (${major_version}\\.\[0-9.\]+)"
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>livecheck.name</term>
-
-          <listitem>
-            <para>Name of the project for live checks; only used with
-            freshmeat, sourceforge, and googlecode livechecks.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <varname>${name}</varname> or the
-                sourceforge/freshmeat/googlecode project name if it can be
-                guessed from <literal>master_sites</literal>.</para>
-              </listitem>
-
-              <listitem>
-                <para>Values:
-                <replaceable>any_project_name</replaceable></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>livecheck.name   hibernate</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>livecheck.distname</term>
-
-          <listitem>
-            <para>Name of the file release for sourceforge and googlecode
-            checks. You may use this keyword without livecheck.version if you
-            replace the version part of the name with "(.*)".</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: SourceForge:
-                <varname>${livecheck.name}</varname> ; GoogleCode: first
-                ${distfiles} item</para>
-              </listitem>
-
-              <listitem>
-                <para>Values: <replaceable>filename</replaceable></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>livecheck.distname  faad2.src</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>livecheck.version</term>
-
-          <listitem>
-            <para>Version of the project for a check; used for regex-based
-            checks.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <varname>${version}</varname></para>
-              </listitem>
-
-              <listitem>
-                <para>Values: <replaceable>any_version</replaceable></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>livecheck.version   ${name}-${version}</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>livecheck.url</term>
-
-          <listitem>
-            <para>URL to query for a check.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default:</para>
-
-                <itemizedlist>
-                  <listitem>
-                    <para>homepage or the first hit among the following
-                    sites</para>
-                  </listitem>
-
-                  <listitem>
-                    <para>http://freshmeat.net/projects-xml/${livecheck.name}/${livecheck.name}.xml</para>
-                  </listitem>
-
-                  <listitem>
-                    <para>http://sourceforge.net/export/rss2_projfiles.php?project=${livecheck.name}</para>
-                  </listitem>
-
-                  <listitem>
-                    <para>http://code.google.com/p/${livecheck.name}/downloads/list</para>
-                  </listitem>
-                </itemizedlist>
-              </listitem>
-
-              <listitem>
-                <para>Values: <replaceable>any_url</replaceable></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>livecheck.url  http://ftp.gnu.org/gnu/bison/</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>livecheck.regex</term>
-
-          <listitem>
-            <para>Regular expression to parse the resource for regex checks.
-            Be sure to use a regular expression grouping around the version
-            component.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Values: <replaceable>any_regex</replaceable></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>livecheck.regex  4th-([a-z0-9.]+)-unix.tar.gz</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>livecheck.md5</term>
-
-          <listitem>
-            <para>md5 checksum to use for an md5 comparison.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Values:
-                <replaceable>any_md5_checksum</replaceable></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>livecheck  md5 37e6a5b6516a680c7178b72021d3b706</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-
-      <para>Distcheck reports whether or not the distfile(s) specified in a
-      Portfile are still available on the developer's download site. Examples
-      are given below.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>distcheck.check</term>
-
-          <listitem>
-            <para>This option can be used to disable distcheck. It specifies
-            what kind of check should be performed on distfiles: moddate
-            (check if the Portfile is older than the distfile) or none (no
-            check).</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: moddate</para>
-              </listitem>
-
-              <listitem>
-                <para>Values: moddate none</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>distcheck.check  none</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsection>
-
-    <refsection>
-      <title>StartupItems</title>
-
-      <para>A StartupItem is a MacPort facility to run "daemons," a Unix term
-      for programs that run continuously in the background, rather than under
-      the direct control of a user; for example, mail servers, network
-      listeners, etc. Ports that use StartupItem keywords create Mac OS X
-      scripts for <ulink
-      url="http://developer.apple.com/macosx/launchd.html">launchd</ulink>,
-      which is the Apple facility introduced with OS X 10.4 to replace xinetd
-      for starting and managing daemons. To support
-      <command>launchd</command>, a program named <command>daemondo</command>
-      is provided by MacPorts base that serves as an adapter between OS X's
-      <command>launchd</command> and daemons (<quote>executable</quote>
-      StartupItems) or traditional Unix startup scripts that start daemons
-      (<quote>script</quote> StartupItems).</para>
-
-      <para>There are three categories of StartupItem keywords. Those that
-      trigger StartupItem creation and logging, those that specify attributes
-      of <quote>executable</quote> StartupItems, and those that specify
-      attributes of <quote>script</quote> StartupItems.</para>
-
-      <refsection>
-        <title>StartupItem Attributes</title>
-
-        <para>The keywords in this section may be used with either
-        <quote>executable</quote> or <quote>script</quote> StartupItems (see
-        below).</para>
-
-        <variablelist>
-          <varlistentry>
-            <term>startupitem.create</term>
-
-            <listitem>
-              <para>Trigger the creation of a StartupItem.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: yes no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.create  yes</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.name</term>
-
-            <listitem>
-              <para>Sets the name for the StartupItem.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: required</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: none</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: <replaceable>any_name</replaceable></para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.name  OpenSSH</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.logfile</term>
-
-            <listitem>
-              <para>Path to a logfile for logging events about the lifetime of
-              the StartupItem. Depending on the type of StartupItem, and the
-              manner in which it is started, standard output from the daemon
-              may also be directed to the logfile.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: <filename>/dev/null</filename></para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: <replaceable>/file/path</replaceable></para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.logfile  ${prefix}/var/log/mydaemon.log</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.logevents</term>
-
-            <listitem>
-              <para>Control whether or not to log events to the log file. If
-              logevents is set, events with timestamps are logged to the
-              logfile.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: yes no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.logevents   yes</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.netchange</term>
-
-            <listitem>
-              <para>Cause the daemon to be restarted when a change in network
-              state is detected.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: yes no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.netchange  yes</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-      </refsection>
-
-      <refsection>
-        <title>Executable StartupItems</title>
-
-        <para>Daemons run continuously, so monitoring the health of daemon
-        processes and restarting them if they die is an important
-        StartupItems' feature. <quote>Executable</quote> StartupItems are
-        preferred over <quote>script</quote> StartupItems because
-        <command>daemondo</command> launches the daemon
-        <emphasis>directly</emphasis>, rather than
-        <emphasis>indirectly</emphasis> via a script, and therefore it
-        automatically knows how to monitor a daemon process and restart it if
-        it dies. Daemons used with <quote>executable</quote> StartupItems may
-        be programs or scripts (shell, perl, python, etc.), but when a script
-        the script <emphasis>itself</emphasis> must be the daemon, rather than
-        a script that launches a daemon. <quote>Script</quote> StartupItems
-        are to be used for the latter.</para>
-
-        <note>
-          <para>For a given port, the <quote>executable</quote> StartupItem
-          keyword may not be used with any keywords in the
-          <quote>script</quote> StartupItem category.</para>
-        </note>
-
-        <variablelist>
-          <varlistentry>
-            <term>startupitem.executable</term>
-
-            <listitem>
-              <para>Specifies the name of the daemon to be run in the
-              background. It may have multiple arguments, but they must be
-              appropriate for a call to exec; arbitrary shell code may not be
-              used.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values:
-                  <replaceable>/path/to/executable</replaceable></para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.executable  "${prefix}/bin/nmicmpd"</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.inetdcompat</term>
-
-            <listitem>
-              <para>This keyword can only be used with startupitem.executable
-              and sets inetdCompatibility option.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: yes no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.inetdcompat   yes</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.inetdsockname</term>
-
-            <listitem>
-              <para>Specify the xinetd socket servicename given in
-              <filename>/etc/services</filename>; this is mandatory when using
-              startupitem.inetdcompat, otherwise an invalid plist file
-              results.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional, but mandatory when using
-                  startupitem.inetdcompat.</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: <replaceable>name</replaceable></para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.inetdsockname   nmicmpd</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.inetdnowait</term>
-
-            <listitem>
-              <para>This keyword can only be used with
-              startupitem.inetdcompat, and corresponds to "wait" or "nowait"
-              option of xinetd services.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: yes no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.inetdnowait   yes</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.logevents</term>
-
-            <listitem>
-              <para>Control whether or not to log events to the log file. If
-              logevents is set, events with timestamps are logged to the
-              logfile.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: yes no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.logevents   yes</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-      </refsection>
-
-      <refsection>
-        <title>Script StartupItems</title>
-
-        <para>StartupItems of type <quote>script</quote> use
-        <command>daemondo</command> to launch a daemon
-        <emphasis>indirectly</emphasis> via a startup script. A typical
-        snippet of a startup script that may be used with a
-        <quote>script</quote> StartupItem is shown below. Notice that the
-        script is not a daemon; rather the script indirectly launches the
-        vm-pop3d daemon.</para>
-
-        <programlisting>#!/bin/sh
-#
-case "$1" in
-  start)
-       echo -n "Starting vm-pop3d: "
-       /opt/local/sbin/vm-pop3d -d 10 -t 600
-
-
-[... trimmed ...]</programlisting>
-
-        <para>But if a script itself is a daemon, use the executable
-        StartupItem type since that way it will be launched directly and its
-        health tracked automatically. When using <quote>script</quote>
-        StartupItems, the <code>startupitem.pidfile</code> keyword must be
-        used if you want <command>daemondo</command> to monitor a daemon
-        process and restart it if it dies.</para>
-
-        <note>
-          <para>For a given port, StartupItem keywords in category
-          <quote>script</quote> may not be used with an
-          <quote>executable</quote> StartupItem keyword.</para>
-        </note>
-
-        <variablelist>
-          <varlistentry>
-            <term>startupitem.start</term>
-
-            <term>startupitem.stop</term>
-
-            <term>startupitem.restart</term>
-
-            <listitem>
-              <para>Specify a shell script to start, stop, and restart the
-              daemon. In the absence of a restart key, the daemon will be
-              restarted by taking the stop action, followed by the start
-              action.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: none</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: <replaceable>shell_script</replaceable></para>
-                </listitem>
-
-                <listitem>
-                  <para>Examples:</para>
-
-                  <programlisting>startupitem.start ${prefix}/share/mysql/mysql.server start
-startupitem.stop ${prefix}/share/mysql/mysql.server stop
-startupitem.restart ${prefix}/share/mysql/mysql.server restart</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.init</term>
-
-            <listitem>
-              <para>Shell code that will be executed prior to any of the
-              options <code>startupitem.start</code>,
-              <code>startupitem.stop</code> and
-              <code>startupitem.restart</code>.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: no</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values: <replaceable>shell_script</replaceable></para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.init  "PID=/var/run/dhcpd.pid"</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>startupitem.pidfile</term>
-
-            <listitem>
-              <para>This keyword must be defined properly for
-              <command>daemondo</command> to be able to monitor daemons
-              launched via <quote>script</quote> StartupItems and restart them
-              if they die. It specifies two things: a process id (PID) file
-              handling method, and a pidfile name and path.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Type: optional</para>
-                </listitem>
-
-                <listitem>
-                  <para>Default: [none] |
-                  [<filename>${prefix}/var/run/${name}.pid</filename>]</para>
-                </listitem>
-
-                <listitem>
-                  <para>Values [none auto manual clean]
-                  [<replaceable>/path/to/pidfile</replaceable>]</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>startupitem.pidfile auto ${prefix}/var/run/${name}.pidfile</programlisting>
-                </listitem>
-              </itemizedlist>
-
-              <para>PID file handling options:</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para><option>none</option> - daemondo will not create or
-                  track a PID file, so it won't know when a daemon
-                  dies.</para>
-                </listitem>
-
-                <listitem>
-                  <para><option>auto</option> - The started process is
-                  expected to create a PID file that contains the PID of the
-                  running daemon; daemondo then reads the PID from the file
-                  and tracks the process. The started process must delete the
-                  PID file if this is necessary.</para>
-                </listitem>
-
-                <listitem>
-                  <para><option>clean</option> - The started process is
-                  expected to create a PID file that contains the PID of the
-                  running daemon; daemondo then reads the PID from the file
-                  and tracks the process, and deletes the PID file if it
-                  detects the daemon has died.</para>
-                </listitem>
-
-                <listitem>
-                  <para><option>manual</option> - This option should only be
-                  used if an <quote>executable</quote> StartupItem could be
-                  used (daemondo launches a daemon directly)
-                  <emphasis>and</emphasis> a port author wants a PID file
-                  written for some special use. A PID file is not needed to
-                  detect process death for daemons launched directly by
-                  daemondo. As with executale StartupItems, daemondo remembers
-                  the PID of the launched process and tracks it
-                  automatically.</para>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-      </refsection>
-
-      <refsection>
-        <title>Loading / Unloading StartupItems into launchd</title>
-
-        <para>A port with a StartupItem places a link to a .plist file for the
-        port's daemon within <filename>/Library/LaunchDaemons/</filename>. A
-        .plist file is an XML file; MacPorts installs .plist files tagged as
-        <quote>disabled</quote> for the sake of security. You may enable a
-        startup script (tag the.plist file as <quote>enabled</quote>) and load
-        it into <command>launchd</command> with a single command as
-        shown.</para>
-
-        <programlisting><prompt>%%</prompt> <userinput>sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist</userinput></programlisting>
-
-        <para>You may stop a running startup script, disable it (tag the.plist
-        file as <quote>disabled</quote>), and unload it from
-        <command>launchd</command> with a single command as shown.</para>
-
-        <programlisting><prompt>%%</prompt> <userinput>sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist</userinput></programlisting>
-      </refsection>
-
-      <refsection>
-        <title>StartupItem Internals</title>
-
-        <para>During port installation a MacPorts StartupItem creates a .plist
-        file in <filename>${prefix}/etc/LaunchDaemons/</filename>, and places
-        a symbolic link to the .plist file within
-        <filename>/Library/LaunchDaemons/</filename>.</para>
-
-        <para>For example, the StartupItem for the mysql5 port is
-        <filename>org.macports.mysql5.plist</filename>, and it is linked as
-        shown.</para>
-
-        <programlisting><prompt>%%</prompt> <userinput>ls -l /Library/LaunchDaemons</userinput></programlisting>
-
-        <screen>org.macports.mysql5.plist -&gt;
-     /opt/local/etc/LaunchDaemons/org.macports.mysql5/org.macports.mysql5.plist</screen>
-
-        <para>For <quote>script</quote> StartupItems, in addition to a .plist
-        file, a wrapper is also created.<programlisting><prompt>%%</prompt> <userinput>ls -l /opt/local/etc/LaunchDaemons/org.macports.mysql5/</userinput></programlisting><screen>-rwxr-xr-x   2 root  wheel  475 Aug  2 14:16 mysql5.wrapper
--rw-r--r--   2 root  wheel  975 Aug  2 14:16 org.macports.mysql5.plist</screen>The
-        wrapper manipulates the script as specified in the startupitem.start
-        and startupitem.stop keywords. An example wrapper script snippet is
-        shown below.</para>
-
-        <programlisting>#!/bin/sh
-#
-# MacPorts generated daemondo support script
-
-# Start
-Start()
-{
-        /opt/local/share/mysql5/mysql/mysql.server start
-}
-
-# Stop
-Stop()
-{
-        /opt/local/share/mysql5/mysql/mysql.server stop
-}
-
-[... trimmed ...]</programlisting>
-      </refsection>
-    </refsection>
-  </refsection>
-
-  <refsection>
-    <title>Installation Phase Keyword Reference</title>
-
-    <para>MacPorts keywords are used to specify required or optional items
-    within a Portfile, or to override default options used by MacPorts base
-    for individual ports. Keywords are to be used within the "global" and
-    "variant" sections of Portfiles, and not within optional port phase
-    declarations.</para>
-
-    <para>In other words, port phase keywords are not located within port
-    phase declarations, but rather they <emphasis>refer</emphasis> to port
-    phases and set options for those phases, and they take affect whether or
-    not phase declarations have been explicitly defined in a Portfile.</para>
-
-    <refsection>
-      <title>A Word about Keyword List Modifiers (-append / -delete)</title>
-
-      <para>It is often necessary to add to a list of keyword values
-      previously set by a previously executed Portfile keyword or by MacPorts
-      base. To keep from overwriting a previous keyword list, use a keyword
-      list modifier. Keywords that support list modifiers are identified under
-      appropriate reference sections below.</para>
-
-      <para>The three most common uses for keyword list modifiers are to
-      preserve configure defaults, to preserve PortGroup dependencies, and to
-      add or delete items for variants.</para>
-
-      <refsection>
-        <title>Common Uses for Keyword List Modifiers</title>
-
-        <para>The three most common uses for keyword list modifiers are to
-        preserve configure defaults, to preserve PortGroup dependencies, and
-        to add or delete items for variants.</para>
-
-        <variablelist>
-          <varlistentry>
-            <term>Preserve configure Defaults</term>
-
-            <listitem>
-              <para>MacPorts base sets the gcc compiler flags CFLAGS and
-              LDFLAGS for all ports using <literal>configure.cflags</literal>
-              and <literal>configure.ldflags</literal>, therefore to keep from
-              overwriting the default compiler flags use
-              <literal>configure.cflags-append</literal> and
-              <literal>configure.ldflags-append</literal>.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para><code>configure.cflags-append</code></para>
-                </listitem>
-
-                <listitem>
-                  <para><code>configure.ldflags-append</code></para>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>Preserve PortGroup Dependencies</term>
-
-            <listitem>
-              <para>Ports in a PortGroup have default library dependencies set
-              by MacPorts base. Therefore, never use
-              <literal>depends_lib</literal> in ports belonging to a PortGroup
-              or it will overwrite the default library dependencies. Instead,
-              use <literal>depends_lib-append</literal>.</para>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>Add or Delete Items for Variants</term>
-
-            <listitem>
-              <para>When a variant requires more or fewer dependencies,
-              distfiles, or patchfiles, when the variant is invoked you want
-              to add or remove items to the appropriate keyword values list
-              set in the global section of the Portfile. Use the appropriate
-              keywords, for example:</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para><code>depends_lib-append</code> or
-                  <code>depends_lib-delete</code></para>
-                </listitem>
-
-                <listitem>
-                  <para><code>distfiles-append</code> or
-                  <code>distfile-delete</code></para>
-                </listitem>
-
-                <listitem>
-                  <para><code>patchfiles-append</code> or
-                  <code>patchfiles-delete</code></para>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-      </refsection>
-    </refsection>
-
-    <refsection>
-      <title>A Word about Keyword Argument Modifiers (.pre_args /
-      .post_args)</title>
-
-      <para>Keywords that support pre_args and post_args are used to assemble
-      command strings together in a row, as described in the reference
-      sections below. But it should be noted that all keyword argument
-      modifiers implicitly support keyword list modifiers. For example, the
-      keyword <literal>configure.pre_args</literal> also supports
-      <literal>configure.pre_args-append</literal> and
-      <literal>configure.pre_args-delete</literal>.</para>
-    </refsection>
-
-    <refsection>
-      <title>Fetch Phase Keywords</title>
-
-      <para>The list of keywords related to the fetch phase.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>master_sites</term>
-
-          <listitem>
-            <para>A list of URLs from which a port's download file(s) may be
-            retrieved. For multiple master_sites, they are searched in order
-            until a file matching <varname>${distfile}</varname> is
-            found.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: ???</para>
-              </listitem>
-
-              <listitem>
-                <para>Examples:</para>
-
-                <programlisting>master_sites   http://www.somesite.org/files/ \
-               http://www.somemirror.org/somesite_org/files/
-
-</programlisting>
-
-                <para>You may also use mirror site lists predefined by
-                MacPorts. Here the sourceforge and gnu mirrors are
-                used.</para>
-
-                <programlisting>master_sites   sourceforge gnu
-
-</programlisting>
-
-                <para>When using mirror master_sites, the subdirectory
-                <varname>${name}</varname> is checked on every mirror. If the
-                mirror subdirectory does not match ${name}, then you may
-                specify it using after the mirror separated by a colon.</para>
-
-                <programlisting>master_sites   sourceforge:widget \
-               gnu:widget
-
-</programlisting>
-
-                <para>For ports that must fetch multiple download files from
-                different locations, you must label the files with tags and
-                match the tags in a distfiles statement. The format is
-                <literal>mirror:subdirectory:tag</literal>.</para>
-
-                <para>In the example below, file_one.tar.gz is fetched from
-                sourceforge mirrors in subdirectory
-                <varname>${name}</varname>; file tagtwo.tar.gz is fetched from
-                the gnu mirrors in subdirectory sources.</para>
-
-                <programlisting>master_sites    sourceforge::tagone \
-                gnu:sources:tagtwo
-
-distfiles       file_one.tar.gz:tagone \
-                file_two.tar.gz:tagtwo</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>patch_sites</term>
-
-          <listitem>
-            <para>A list of sites from which a port's patchfiles may be
-            downloaded, where applicable.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <varname>${master_sites}</varname></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>patch_sites    ftp://ftp.patchcityrepo.com/pub/magic/patches</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>distname</term>
-
-          <listitem>
-            <para>The name of the distribution filename, not including the
-            extract suffix.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <varname>${name}-${version}</varname></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>distname     ${name}</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>distfiles</term>
-
-          <listitem>
-            <para>The full distribution filename, including the extract
-            suffix. Used to specify non-default distribution filenames; this
-            keyword must be specified (and tags used) when a port has multiple
-            download files (see master_sites).</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default:
-                <varname>${distname}${extract.suffix}</varname></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>distfiles    ${name}-dev_src.tgz
-
-
-distfiles       file_one.tar.gz:tagone \
-                file_two.tar.gz:tagtwo</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>extract.suffix</term>
-
-          <listitem>
-            <para>This keyword is used to specify the extract suffix
-            type.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <filename>.tar.gz</filename></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>extract.suffix   .tgz</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>use_bzip2</term>
-
-          <listitem>
-            <para>This keyword is for downloads that are tarred and bzipped.
-            When invoked, it automatically sets:</para>
-
-            <literallayout>extract.suffix = .tar.bz
-extract.cmd = bzip
-
-</literallayout>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: yes</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>use_bzip2     yes</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>use_zip</term>
-
-          <listitem>
-            <para>This keyword is for downloads are zipped. When invoked, it
-            automatically sets:</para>
-
-            <literallayout>extract.suffix = .zip
-extract.cmd = unzip
-extract.pre_args = -q
-extract.post_args = "-d ${portpath}/${workdir}"
-
-</literallayout>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <option>yes</option></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>use_zip       yes</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-
-      <refsection>
-        <title>Fetch from CVS</title>
-
-        <para><ulink url="http://www.nongnu.org/cvs/">CVS</ulink> may be used
-        as an alternative method of fetching distribution files using the
-        keywords in this section. However, fetching via CVS may cause
-        non-reproducible builds, so it is strongly discouraged.</para>
-
-        <variablelist>
-          <varlistentry>
-            <term>cvs.root</term>
-
-            <listitem>
-              <para>Specify the url from which to fetch files.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: none</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>cvs.root :pserver:anonymous at cvs.sv.gnu.org:/sources/emacs</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>cvs.tag</term>
-
-            <listitem>
-              <para>Optional for fetching with CVS, this specifies the code
-              revision to checkout.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: none</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>cvs.tag  HEAD</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>cvs.date</term>
-
-            <listitem>
-              <para>A date that identifies the CVS code set to
-              checkout.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: none</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>cvs.date "12-April-2007"</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>cvs.module</term>
-
-            <listitem>
-              <para>A CVS module from which to check out the code.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: none</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting>cvs.module  Sources</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-      </refsection>
-
-      <refsection>
-        <title>Fetch from Subversion</title>
-
-        <para><ulink url="http://subversion.tigris.org/">Subversion</ulink>
-        may be used as an alternative method of fetching distribution files
-        using the keywords in this section. However, fetching via Subversion
-        may cause non-reproducible builds, so it is strongly
-        discouraged.</para>
-
-        <variablelist>
-          <varlistentry>
-            <term>svn.url</term>
-
-            <listitem>
-              <para>This specifies the url from which to fetch files.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: none</para>
-                </listitem>
-
-                <listitem>
-                  <para>Examples:</para>
-
-                  <programlisting>svn.url http://www.domain.com/svn-repo/mydirectory
-svn.url svn://www.domain.com/svn-repo/mydirectory
-</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>svn.tag</term>
-
-            <listitem>
-              <para>Optional tag for fetching with Subversion, this specifies
-              the code revision to checkout; it corresponds to the -r option
-              in the svn cli. You must use backslashes to escape characters
-              that are meaningful to the Tcl interpreter, such as braces and
-              double quotes.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: none</para>
-                </listitem>
-
-                <listitem>
-                  <para>Examples:</para>
-
-                  <programlisting>svn.tag 37192
-svn.tag \{\"2006-02-17 15:30 +0230\"\}</programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-      </refsection>
-    </refsection>
-
-    <refsection>
-      <title>Checksum Phase Keywords</title>
-
-      <para>The list of keywords related to the checksum phase.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>checksums</term>
-
-          <listitem>
-            <para>Checksum(s) of the distribution files. For ports with
-            multiple distribution files, filenames must be included to
-            associate files with their checksums.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: ???</para>
-              </listitem>
-
-              <listitem>
-                <para>Examples:</para>
-
-                <programlisting>checksums     md5 dafa161bc9c61e57636a6085c87c1fe8 \
-              sha1 5da610e1c8bc01b80abc21ab9e98e004363b429c \
-              rmd160 0c1147242adf476f5e93f4d59b553ee3ea378b23</programlisting>
-
-                <programlisting>checksums     ${distname}${extract.suffix} md5 dafa161bc9c61e57636a6085c87c1fe8 \
-                  sha1 5da610e1c8bc01b80abc21ab9e98e004363b429c \
-                  rmd160 0c1147242adf476f5e93f4d59b553ee3ea378b23 \
-              hobbit.tar.gz md5 3b8d02c6cf6239b9bdadbc6543c5a683 \
-                  sha1 27874638b23e66d39ed94fe716ca25c967f6e993 \
-                  rmd160 82b9991f3bf0ceedbf74c188c5fa44b98b5e40c9</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsection>
-
-    <refsection>
-      <title>Extract Phase Keywords</title>
-
-      <para>The list of keywords related to the extract phase.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>extract.only</term>
-
-          <term>extract.only-append</term>
-
-          <term>extract.only-delete</term>
-
-          <listitem>
-            <para>List of files to extract into
-            <varname>${worksrcpath}</varname>; the default is
-            <varname>${distfiles}</varname>. Only use if default extract
-            behavior is not correct for your port.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>extract.only     foo.tar.gz
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>List modifier examples:</para>
-
-            <programlisting>extract.only-append  bar.tar.gz
-extract.only-delete  foo.tar.gz</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>extract.cmd</term>
-
-          <listitem>
-            <para>Command to perform extraction.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: gzip</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>extract.cmd     gunzip</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>extract.args</term>
-
-          <term>extract.pre_args</term>
-
-          <term>extract.post_args</term>
-
-          <listitem>
-            <para>Main arguments to extract.cmd; additional arguments passed
-            before and after the main arguments.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: ${distpath}/${distfile}</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>extract.args      ${distpath}/${distfile}
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>The following argument modifiers are available:</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>extract.pre_args default: "-dc"</para>
-              </listitem>
-
-              <listitem>
-                <para>extract.post_args default: " | tar -xf"</para>
-              </listitem>
-
-              <listitem>
-                <para>Examples:</para>
-
-                <programlisting>extract.pre_args     xf
-extract.post_args    "| gnutar –x"</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsection>
-
-    <refsection>
-      <title>Patch Phase Keywords</title>
-
-      <para>The list of keywords related to the patch phase.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>patch.dir</term>
-
-          <listitem>
-            <para>Specify the base path for patch files.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <varname>${worksrcpath}</varname></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>patch.dir      ${worksrcpath}/util</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>patch.cmd</term>
-
-          <listitem>
-            <para>Specify the command to be used for patching files.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <command>patch</command></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>patch.cmd      cat</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>patchfiles</term>
-
-          <term>patchfiles-append</term>
-
-          <term>patchfiles-delete</term>
-
-          <listitem>
-            <para>Specify patch files to be applied for a port; list modifiers
-            specify patchfiles to be added or removed from a previous
-            patchfile declaration.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>patchfiles     patch-Makefile.in \
-               patch-source.c
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>List modifier examples:</para>
-
-            <programlisting>patchfiles-append   patch-configure
-patchfiles-delete   patch-src-Makefile.in
-</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>patch.args</term>
-
-          <term>patch.pre_args</term>
-
-          <term>patch.post_args</term>
-
-          <listitem>
-            <para>Main arguments to patch.cmd; optional argument modifiers
-            pass arguments before and after the main arguments.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>patch.args   ???
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>The following argument modifiers are available:</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>patch.pre_args default: -p0</para>
-              </listitem>
-
-              <listitem>
-                <para>patch.post_args default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Examples:</para>
-
-                <programlisting>patch.pre_args     -p1
-patch.post_args    ???</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsection>
-
-    <refsection>
-      <title>Configure Phase Keywords</title>
-
-      <para>The list of keywords related to the configure phase.</para>
-
-      <para>MacPorts base sets some important default configure options, so
-      should use the -append version of most configure keywords so you don't
-      overwrite them. For example, MacPorts base sets default
-      <literal>configure.cflags</literal> so you should always use
-      <literal>configure.cflags-append</literal> to set additional CFLAGS in
-      Portfiles.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>configure.env</term>
-
-          <term>configure.env-append</term>
-
-          <term>configure.env-delete</term>
-
-          <listitem>
-            <para>Set environment variables for configure; list modifiers add
-            and delete items from a previous Portfile configure.env keyword,
-            or a default set by MacPorts base. If available, it is encouraged
-            to use the predefined options (like configure.cflags) instead of
-            modifying configure.env directly</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal>CFLAGS=-I${prefix}/include
-                LDFLAGS=-L${prefix}/lib</literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.env   QTDIR=${prefix}/lib/qt3
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>List modifier examples:</para>
-
-            <programlisting>configure.env-append   ABI=32
-configure.env-delete   TCLROOT=${prefix}</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.cflags</term>
-
-          <term>configure.cflags-append</term>
-
-          <term>configure.cflags-delete</term>
-
-          <listitem>
-            <para>Set CFLAGS compiler flags; list modifiers add or delete
-            items from a previous Portfile configure.cflags keyword or the
-            default set by MacPorts base.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal>-O2</literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.cflags    -Os -flat_namespace
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>List modifier examples:</para>
-
-            <programlisting>configure.cflags-append   "-undefined suppress"
-configure.cflags-delete   -O2</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.ldflags</term>
-
-          <term>configure.ldflags-append</term>
-
-          <term>configure.ldflags-delete</term>
-
-          <listitem>
-            <para>Set LDFLAGS compiler flags; list modifiers add or delete
-            items from a previous Portfile configure.ldflags keyword or the
-            default set by MacPorts base.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal>-L${prefix}/lib</literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.ldflags    -L${worksrcpath}/zlib -lz
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>List modifier examples:</para>
-
-            <programlisting>configure.ldflags-append   "-L/usr/X11R6/lib -L${worksrcpath}/lib"
-configure.ldflags-delete   -L${prefix}/lib/db44</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.cppflags</term>
-
-          <term>configure.cppflags-append</term>
-
-          <term>configure.cppflags-delete</term>
-
-          <listitem>
-            <para>Set CPPFLAGS to be passed to the C processor; list modifiers
-            add or delete items from a previous Portfile configure.cppflags
-            keyword or the default set by MacPorts base.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal>-I${prefix}/include</literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.cppflags    -I${worksrcpath}/include
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>List modifier examples:</para>
-
-            <programlisting>configure.cppflags-append   "-I/usr/X11R6/lib -I${worksrcpath}/lib -DHAVE_RRD_12X"
-configure.cppflags-delete   -I${prefix}/lib/db44</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <!-- fortran compiler options -->
-
-        <varlistentry>
-          <term>configure.fflags</term>
-
-          <term>configure.fflags-append</term>
-
-          <term>configure.fflags-delete</term>
-
-          <listitem>
-            <para>Set FFLAGS to be passed to the Fortran compiler; list
-            modifiers add or delete items from a previous Portfile
-            configure.fflags keyword or the default set by MacPorts
-            base.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal>-O2</literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.fflags    -Os
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.fcflags</term>
-
-          <term>configure.fcflags-append</term>
-
-          <term>configure.fcflags-delete</term>
-
-          <listitem>
-            <para>Set FCFLAGS to be passed to the Fortran compiler; list
-            modifiers add or delete items from a previous Portfile
-            configure.fcflags keyword or the default set by MacPorts
-            base.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal>-O2</literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.fcflags    -Os
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.f90flags</term>
-
-          <term>configure.f90flags-append</term>
-
-          <term>configure.f90flags-delete</term>
-
-          <listitem>
-            <para>Set F90FLAGS to be passed to the Fortran 90 compiler; list
-            modifiers add or delete items from a previous Portfile
-            configure.f90flags keyword or the default set by MacPorts
-            base.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal>-O2</literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.f90flags    -Os
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <!-- fortran compiler options end -->
-
-        <!-- compiler selection arguments -->
-
-        <varlistentry>
-          <term>configure.cc</term>
-
-          <listitem>
-            <para>Set CC compiler flags for selecting a C compiler;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.cc    ${prefix}/bin/gcc-mp-4.2</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.cpp</term>
-
-          <listitem>
-            <para>Set CPP compiler flags for selecting a C
-            preprocessor;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.cpp    /usr/bin/cpp-3.3</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.cxx</term>
-
-          <listitem>
-            <para>Set CXX compiler flags for selecting a C++ compiler;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.cpp    /usr/bin/g++-4.0</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.objc</term>
-
-          <listitem>
-            <para>Set OBJC compiler flags for selecting an Objective-C
-            compiler;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.objc    /usr/bin/gcc-4.0</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.fc</term>
-
-          <listitem>
-            <para>Set FC compiler flags for selecting a Fortran
-            compiler;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.fc    ${prefix}/bin/gfortran-mp-4.2</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.f77</term>
-
-          <listitem>
-            <para>Set F77 compiler flags for selecting a Fortran 77
-            compiler;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.f77    ${prefix}/bin/gfortran-mp-4.2</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.f90</term>
-
-          <listitem>
-            <para>Set F90 compiler flags for selecting a Fortran 90
-            compiler;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.f90    ${prefix}/bin/gfortran-mp-4.2</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.javac</term>
-
-          <listitem>
-            <para>Set JAVAC compiler flags for selecting a Java
-            compiler;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.javac    ${prefix}/bin/jikes</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <!-- compiler selection arguments end -->
-
-        <!-- interpreter selection arguments -->
-
-        <varlistentry>
-          <term>configure.perl</term>
-
-          <listitem>
-            <para>Set PERL flag for selecting a Perl interpreter;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.perl    ${prefix}/bin/perl5.8</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.python</term>
-
-          <listitem>
-            <para>Set PYTHON flag for selecting a Python interpreter;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.python    ${prefix}/bin/python3.0</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>configure.ruby</term>
-
-          <listitem>
-            <para>Set RUBY flag for selecting a Ruby interpreter;</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal></literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.ruby    ${prefix}/bin/ruby</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <!-- interpreter selection arguments end -->
-
-        <varlistentry>
-          <term>configure.args</term>
-
-          <term>configure.pre_args</term>
-
-          <term>configure.post_args</term>
-
-          <listitem>
-            <para>Main arguments to configure.cmd; optional argument modifiers
-            pass arguments before and after the main arguments.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>configure.args    --bindir=${prefix}/bin
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>The following argument modifiers are available:</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>configure.pre_args default: --prefix=${prefix}</para>
-              </listitem>
-
-              <listitem>
-                <para>configure.post_args default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Examples:</para>
-
-                <programlisting>configure.pre_args   --prefix=${prefix}/share/bro
-configure.post_args  OPT="-D__DARWIN_UNIX03"</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-
-      <refsection>
-        <title>Configure Universal</title>
-
-        <para>Universal keywords are used to make a port compile on the OS X
-        platform to run on either PPC or Intel.</para>
-
-        <note>
-          <para>There is a default universal variant made available to all
-          ports by MacPorts base, so redefining universal keywords should only
-          be done to make a given port compile if the default options fail to
-          do so.</para>
-        </note>
-
-        <variablelist>
-          <varlistentry>
-            <term>configure.universal_args</term>
-
-            <listitem>
-              <para>Arguments used in the configure script to build the port
-              universal.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: --disable-dependency-tracking</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting></programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>configure.universal_cflags</term>
-
-            <listitem>
-              <para>Arguments appended to the configure script to build the
-              port universal.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: -sysroot /Developer/SDKs/MacOSX10.4u.sdk
-                  -arch i386 -arch ppc</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting></programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>configure.universal_cppflags</term>
-
-            <listitem>
-              <para>Additional flags to put in the CPPFLAGS environment
-              variable when invoking the configure script.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: ???</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting></programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>configure.universal_cxxflags</term>
-
-            <listitem>
-              <para>Additional flags to put in the CXXFLAGS environment
-              variable when invoking the configure script.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: -isysroot /Developer/SDKs/MacOSX10.4u.sdk
-                  -arch i386 -arch ppc</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting></programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>configure.universal_ldflags</term>
-
-            <listitem>
-              <para>Additional flags to put in the LDFLAGS environment
-              variable when invoking the configure script.</para>
-
-              <itemizedlist>
-                <listitem>
-                  <para>Default: -arch i386 -arch ppc</para>
-                </listitem>
-
-                <listitem>
-                  <para>Example:</para>
-
-                  <programlisting></programlisting>
-                </listitem>
-              </itemizedlist>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-      </refsection>
-
-      <refsection>
-        <title>Automake and Autoconf</title>
-
-        <para>The list of configure keywords available for ports that need
-        automake and/or autoconf.</para>
-
-        <variablelist>
-          <varlistentry>
-            <term>use_automake</term>
-
-            <listitem>
-              <para>Whether or not to use automake; the default is
-              "no".</para>
-
-              <programlisting>use_automake      yes</programlisting>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>automake.env</term>
-
-            <listitem>
-              <para>Environment variables to pass to automake.</para>
-
-              <programlisting>automake.env      CFLAGS=-I${prefix}/include</programlisting>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>automake.args</term>
-
-            <listitem>
-              <para>Arguments to pass to automake.</para>
-
-              <programlisting>automake.args     --foreign</programlisting>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>automake.dir</term>
-
-            <listitem>
-              <para>Directory in which to run
-              <varname>${automake.cmd}</varname>; the default is
-              <varname>${worksrcpath}</varname>.</para>
-
-              <programlisting>automake.dir      ./src</programlisting>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>use_autoconf</term>
-
-            <listitem>
-              <para>Whether or not to use autoconf; the default is
-              "no".</para>
-
-              <programlisting>use_autoconf      yes</programlisting>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>autoconf.env</term>
-
-            <listitem>
-              <para>Environmental variables to pass to autoconf.</para>
-
-              <programlisting>autoconf.env      CFLAGS=-I${prefix}/include/gtk12</programlisting>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>autoconf.args</term>
-
-            <listitem>
-              <para>Arguments to pass to autoconf.</para>
-
-              <programlisting>autoconf.args     -l src/aclocaldir</programlisting>
-            </listitem>
-          </varlistentry>
-
-          <varlistentry>
-            <term>autoconf.dir</term>
-
-            <listitem>
-              <para>Directory in which to run
-              <varname>${autoconf.cmd}</varname>; the default is
-              <varname>${worksrcpath}</varname>.</para>
-
-              <programlisting>autoconf.dir      src</programlisting>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-      </refsection>
-    </refsection>
-
-    <refsection>
-      <title>Build Phase Keywords</title>
-
-      <para>The list of keywords related to the build phase.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>build.cmd</term>
-
-          <listitem>
-            <para>Make command to run in <varname>${worksrcdir}</varname>; the
-            default is "make".</para>
-
-            <programlisting>build.cmd      pbxbuild</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>build.type</term>
-
-          <listitem>
-            <para>Defines which "make" is required: "gnu" or "bsd". Sets
-            build.cmd to either "gnumake" or "bsdmake" accordingly.</para>
-
-            <programlisting>build.type     gnu</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>build.args</term>
-
-          <term>build.pre_args</term>
-
-          <term>build.post_args</term>
-
-          <listitem>
-            <para>Main arguments to build.cmd; optional argument modifiers
-            pass arguments before and after the main arguments.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>build.args    -DNOWARN
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>The following argument modifiers are available:</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>build.pre_args default:
-                <varname>${build.target.current}</varname></para>
-              </listitem>
-
-              <listitem>
-                <para>build.post_args default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Examples:</para>
-
-                <programlisting>build.pre_args  -project AudioSlicer.xcode
-build.post_args CFLAGS_SYS="-DUSE_FREETYPE -DPREFER_FREETYPE"</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>build.target</term>
-
-          <term>build.target-append</term>
-
-          <term>build.target-delete</term>
-
-          <listitem>
-            <para>Build target to pass to ${build.cmd}; list modifiers add or
-            delete items from a previous Portfile build.target keyword or the
-            default set by MacPorts base.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: all</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>build.target    all-src
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>List modifier examples:</para>
-
-            <programlisting>build.target-append   doc extra
-build.target-delete   compat</programlisting>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsection>
-
-    <refsection>
-      <title>Destroot Phase Keywords</title>
-
-      <para>The list of keywords related to the destroot phase.</para>
-
-      <variablelist>
-        <varlistentry>
-          <term>destroot.cmd</term>
-
-          <listitem>
-            <para>Install command to run relative to
-            <varname>${worksrcdir}</varname>; default is
-            <varname>${build.cmd}</varname>.</para>
-
-            <programlisting>destroot.cmd         pbxbuild</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>destroot.type</term>
-
-          <listitem>
-            <para>Defines which "make" is required: either "gnu" or "bsd".
-            Sets install.cmd to either "gnumake" or "bsdmake"
-            accordingly.</para>
-
-            <programlisting>destroot.type        gnu</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>destroot.args</term>
-
-          <term>destroot.pre_args</term>
-
-          <term>destroot.post_args</term>
-
-          <listitem>
-            <para>Main arguments to ${destroot.cmd}; optional argument
-            modifiers pass arguments before and after the main
-            arguments.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>destroot.args    BINDIR=${prefix}/bin
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>The following argument modifiers are available:</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>destroot.pre_args default:
-                <varname>${destroot.target}</varname></para>
-              </listitem>
-
-              <listitem>
-                <para>destroot.post_args default: none</para>
-              </listitem>
-
-              <listitem>
-                <para>Examples:</para>
-
-                <programlisting>destroot.pre_args  -project AudioSlicer.xcode
-destroot.post_args INSTDIR=${destroot}${prefix}</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>destroot.target</term>
-
-          <term>destroot.target-append</term>
-
-          <term>destroot.target-delete</term>
-
-          <listitem>
-            <para>Install target to pass to ${destroot.cmd}; list modifiers
-            add or delete items from a previous Portfile destroot.target
-            keyword or the default set by MacPorts base.</para>
-
-            <itemizedlist>
-              <listitem>
-                <para>Default: <literal>install</literal></para>
-              </listitem>
-
-              <listitem>
-                <para>Example:</para>
-
-                <programlisting>destroot.target    install install-config install-commandmode
-
-</programlisting>
-              </listitem>
-            </itemizedlist>
-          </listitem>
-
-          <listitem>
-            <para>List modifier examples:</para>
-
-            <programlisting>destroot.target-append   install-plugins
-destroot.target-delete   install-commandmode</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>destroot.destdir</term>
-
-          <listitem>
-            <para>Arguments passed to ${destroot.cmd} to install correctly
-            into the destroot.</para>
-
-            <programlisting>destroot.destdir     prefix=${destroot}${prefix}</programlisting>
-
-            <note>
-              <para>If an application's Makefile properly supports the DESTDIR
-              variable, MacPorts will automatically destroot the port
-              properly. A port must destroot properly or the port will not
-              install correctly, upgrade, or uninstall. If not, you may need
-              to set this variable, or even patch the application's
-              Makefile.</para>
-            </note>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>destroot.keepdirs</term>
-
-          <listitem>
-            <para>A list of directories that should not be removed if empty
-            upon destroot completion.</para>
-
-            <programlisting>destroot.keepdirs \
-                ${destroot}${prefix}/var/run \
-                ${destroot}${prefix}/var/log \
-                ${destroot}${prefix}/var/cache/mrtg</programlisting>
-          </listitem>
-        </varlistentry>
-
-        <varlistentry>
-          <term>destroot.violate_mtree</term>
-
-          <listitem>
-            <para>MacPorts tests for compliance to the common directory
-            structure in ${prefix}; the default is "no". If a port is not
-            compliant with the standard, set it to "yes".</para>
-
-            <programlisting>destroot.violate_mtree    yes</programlisting>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </refsection>
-  </refsection>
-
-  <refsection>
-    <title>TCL EXTENSIONS</title>
-
-    <para></para>
-  </refsection>
-
-  <refsection>
-    <title>SEE ALSO</title>
-
-    <para><citerefentry>
-        <refentrytitle>port</refentrytitle>
-
-        <manvolnum>1</manvolnum>
-      </citerefentry>, <citerefentry>
-        <refentrytitle>macports.conf</refentrytitle>
-
-        <manvolnum>5</manvolnum>
-      </citerefentry>, <citerefentry>
-        <refentrytitle>portgroup</refentrytitle>
-
-        <manvolnum>7</manvolnum>
-      </citerefentry>, <citerefentry>
-        <refentrytitle>portstyle</refentrytitle>
-
-        <manvolnum>7</manvolnum>
-      </citerefentry>, <citerefentry>
-        <refentrytitle>porthier</refentrytitle>
-
-        <manvolnum>7</manvolnum>
-      </citerefentry>, <citerefentry>
-        <refentrytitle>file</refentrytitle>
-
-        <manvolnum>n</manvolnum>
-      </citerefentry></para>
-  </refsection>
-
-  <refsection>
-    <title>AUTHORS</title>
-
-    <para>Landon Fuller <email>landonf at macports.org</email></para>
-
-    <para>Juan Manuel Palacios <email>jmpp at macports.org</email></para>
-
-    <para>Mark Duling <email>markd at macports.org</email></para>
-
-    <para>Kevin Van Vechten <email>kevin at opendarwin.org</email></para>
-
-    <para>Jordan K. Hubbard <email>jkh at macports.org</email></para>
-
-    <para>Chris Ridd <email>cjr at opendarwin.org</email></para>
-
-    <para>Kevin Ballard <email>eridius at macports.org</email></para>
-
-    <para>Markus W. Weissmann <email>mww at macports.org</email></para>
-  </refsection>
-</refentry>
\ No newline at end of file

Copied: trunk/doc-new/man/xml/portfile.7.xml.orig (from rev 30437, trunk/doc-new/man/xml/portfile.7.xml)
===================================================================
--- trunk/doc-new/man/xml/portfile.7.xml.orig	                        (rev 0)
+++ trunk/doc-new/man/xml/portfile.7.xml.orig	2007-10-28 04:16:04 UTC (rev 30444)
@@ -0,0 +1,3356 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<refentry>
+  <refmeta>
+    <refentrytitle>PORTFILE</refentrytitle>
+
+    <manvolnum>7</manvolnum>
+  </refmeta>
+
+  <refnamediv>
+    <refname>portfile</refname>
+
+    <refpurpose>MacPorts Portfile reference</refpurpose>
+  </refnamediv>
+
+  <refsection>
+    <title>Description</title>
+
+    <para>A complete reference of all available Portfile variables and example
+    syntax. Portfiles consist of valid TCL and are encoded in UTF-8. They
+    usually contain only simple keyword/value combinations and Tcl extensions
+    as described below, though they may also contain arbitrary TCL code. Every
+    port has a corresponding Portfile, but Portfiles do not completely define
+    a port's installation behavior since the MacPorts base has default port
+    installation characteristics coded within it. Therefore Portfiles need
+    only specify required options and, if necessary, non-default
+    characteristics for a port.</para>
+  </refsection>
+
+  <refsection condition="guide">
+    <title>Table of Contents</title>
+
+    <para>The contents of this man page.</para>
+
+    <orderedlist>
+      <listitem>
+        <para>Global Variables</para>
+      </listitem>
+
+      <listitem>
+        <para>Global Keyword Reference</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>General Global Keywords</para>
+          </listitem>
+
+          <listitem>
+            <para>Dependencies</para>
+          </listitem>
+
+          <listitem>
+            <para>Variants</para>
+          </listitem>
+
+          <listitem>
+            <para>Livecheck / Distcheck</para>
+          </listitem>
+
+          <listitem>
+            <para>StartupItems</para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+
+      <listitem>
+        <para>Installation Phase Keyword Reference</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>A word about keyword list modifiers</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Common uses for keyword list modifiers</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>A word about keyword argument modifiers</para>
+          </listitem>
+
+          <listitem>
+            <para>Fetch</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Fetch from CVS</para>
+              </listitem>
+
+              <listitem>
+                <para>Fetch from SVN</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>Checksum</para>
+          </listitem>
+
+          <listitem>
+            <para>Extract</para>
+          </listitem>
+
+          <listitem>
+            <para>Patch</para>
+          </listitem>
+
+          <listitem>
+            <para>Automake / Autoconf</para>
+          </listitem>
+
+          <listitem>
+            <para>Configure</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Configure Universal</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>Build</para>
+          </listitem>
+
+          <listitem>
+            <para>Destroot</para>
+          </listitem>
+
+          <listitem>
+            <para>Test</para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+
+      <listitem>
+        <para>Tcl Extensions</para>
+      </listitem>
+    </orderedlist>
+  </refsection>
+
+  <refsection>
+    <title>Global Variables</title>
+
+    <para>Global variables are variables available to any Portfile. For a list
+    of additional variables available to ports that are assigned to a MacPorts
+    Portgroup, see portgroup(7).</para>
+
+    <variablelist>
+      <varlistentry>
+        <term>prefix</term>
+
+        <listitem>
+          <para>Installation prefix, set in
+          <filename>${prefix}/etc/macports/macports.conf</filename> —may be
+          overridden on a per port basis. For example, aqua applications are
+          installed in <filename>/Applications/MacPorts</filename>.</para>
+
+          <para>Default: /opt/local</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>binpath</term>
+
+        <listitem>
+          <para>Default PATH to use in finding executables.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>libpath</term>
+
+        <listitem>
+          <para>Path to the MacPorts TCL libraries.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>portpath</term>
+
+        <listitem>
+          <para>Full path to the Portfile location.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>filesdir</term>
+
+        <listitem>
+          <para>Path to port files relative to
+          <varname>${portpath}</varname>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>workpath</term>
+
+        <listitem>
+          <para>Full path to work directory.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>worksrcpath</term>
+
+        <listitem>
+          <para>Full path to extracted source code. Equivalent to
+          <varname>${workpath}/${worksrcdir}</varname>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>destroot</term>
+
+        <listitem>
+          <para>Full path into which software will be destrooted. Equivalent
+          to <filename>${workpath}/destroot</filename>.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>distpath</term>
+
+        <listitem>
+          <para>Location to store downloaded distfiles.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>install.user</term>
+
+        <listitem>
+          <para>The Unix user at the time of port installation.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>install.group</term>
+
+        <listitem>
+          <para>The Unix group at the time of port installation.</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>os.platform</term>
+
+        <listitem>
+          <para>Identifies platform type (ie, "darwin", "freebsd",
+          etc).</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>os.arch</term>
+
+        <listitem>
+          <para>Identifies hardware type (ie, "powerpc", "intel").</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>os.version</term>
+
+        <listitem>
+          <para>The version number of the host operating system (ie "8.0" for
+          Darwin 8.0).</para>
+        </listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term>os.major</term>
+
+        <listitem>
+          <para>The major version number of the host operating system (ie "8"
+          for Darwin 8.0).</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsection>
+
+  <refsection>
+    <title>Global Keyword Reference</title>
+
+    <para>MacPorts keywords are used to specify required or optional items
+    within a Portfile, or to override default options used by MacPorts base
+    for individual ports. Keywords are to be used within the "global" and
+    "variant" sections of Portfiles, and not within optional port phase
+    declarations.</para>
+
+    <para>The global keywords listed below specify information for ports as a
+    whole, whereas the keywords listed under a port phase specify information
+    to be used during a particular installation phase.</para>
+
+    <refsection>
+      <title>General Global Keywords</title>
+
+      <para>The list of global keywords.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>PortSystem</term>
+
+          <listitem>
+            <para>The top line of every Portfile; it must be followed by a
+            blank line. It defines which version of the Portfile interpreter
+            will be used.</para>
+
+            <programlisting>PortSystem   1.0
+
+</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>name</term>
+
+          <listitem>
+            <para>The name of the Port; it should be lowercase.</para>
+
+            <programlisting>name         foo</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>version</term>
+
+          <listitem>
+            <para>The version of the ported software.</para>
+
+            <programlisting>version      1.23.45</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>revision</term>
+
+          <listitem>
+            <para>Optional keyword (default is 0) that is used to track port
+            revisions. It should not be incremented for port revisions unless
+            it would benefit users to upgrade an installed port, and cleared
+            when the port is updated to a newer version.</para>
+
+            <programlisting>revision     1</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>epoch</term>
+
+          <listitem>
+            <para>Optional keyword (default is 0) that is used if the new port
+            version looks older than the previous version (for example 1.10
+            -&gt; 1.2). Often the epoch is formatted like a date, but it can
+            simple a number like 1.</para>
+
+            <programlisting>epoch        20070924</programlisting>
+
+            <programlisting>epoch        1</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>categories</term>
+
+          <listitem>
+            <para>The category under which the ported software falls. The
+            first category should be the same as the directory within which
+            the Portfile is stored; secondary and tertiary categories may be
+            selected.</para>
+
+            <programlisting>categories     net security</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>maintainers</term>
+
+          <listitem>
+            <para>A port's maintainer is a person or persons who take
+            responsibility for keeping the port up-to-date, and the maintainer
+            keyword lists maintainer email addresses(s). However, many
+            maintainers wish to hide these addresses from spambots; to do so
+            follow these conventions:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>For addresses in domain @macports.org, simply omit the
+                domain name.</para>
+              </listitem>
+
+              <listitem>
+                <para>For addresses in other domains, say
+                <email>account at example.org</email>, use the convention
+                example.org:account to specify the address.</para>
+              </listitem>
+            </itemizedlist>
+
+            <para>In the example below, the maintainer email addresses
+            <email>jdoe at macports.org</email> and
+            <email>julesverne at example.org</email> are hidden using these
+            conventions.</para>
+
+            <programlisting>maintainers       jdoe \
+                  example.org:julesverne</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>description</term>
+
+          <listitem>
+            <para>A one-sentence description of the ported software.</para>
+
+            <programlisting>description    A classic shooter arcade game.</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>long_description</term>
+
+          <listitem>
+            <para>A long description of the ported software. Break long lines
+            with escaped newlines.</para>
+
+            <programlisting>description    A classic shooter arcade game derived from \
+               the game alien-munchers.  Not suitable for \
+               children under two years old.      </programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>homepage</term>
+
+          <listitem>
+            <para>Port application's homepage.</para>
+
+            <programlisting>homepage       http://www.somesite.org/apps</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>platforms</term>
+
+          <listitem>
+            <para>The platforms on which the port has been tested.</para>
+
+            <programlisting>platforms      darwin freebsd</programlisting>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Dependencies</title>
+
+      <para>Free and open source software is highly modular, and MacPorts
+      ports often require that other ports be installed beforehand; these
+      prerequisites for a given port are called a port's
+      <quote>dependencies</quote>.</para>
+
+      <para>There are three types of MacPorts dependencies: library, build,
+      and run dependencies. Dependency types are important for proper port
+      upgrade and uninstall behavior. For example, you may not uninstall a
+      port that is a library dependency for another port, though you may
+      remove one with a build dependency; likewise, upgrading a port will
+      upgrade its library and build dependencies also, but not its run
+      dependencies.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>depends_lib</term>
+
+          <term>depends_lib-append</term>
+
+          <term>depends_lib-delete</term>
+
+          <listitem>
+            <para>The list of dependencies to check before phases
+            <option>configure</option>, <option>build</option>,
+            <option>destroot</option>, <option>install</option>, and
+            <option>package</option>. Library dependencies are needed both at
+            build time (for headers and libraries to link against) and at run
+            time.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>depends_build</term>
+
+          <term>depends_build-append</term>
+
+          <term>depends_build-delete</term>
+
+          <listitem>
+            <para>The list of dependencies to check before phases
+            <option>build</option>, <option>destroot</option>,
+            <option>install</option>, and <option>package</option>. Build
+            dependencies are needed when software is compiled, but not needed
+            at all once the software is compiled and installed.</para>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>depends_run</term>
+
+          <term>depends_run-append</term>
+
+          <term>depends_run-delete</term>
+
+          <listitem>
+            <para>The list of dependencies to check before phases
+            <option>destroot</option>, <option>install</option>, and
+            <option>package</option>. Run dependencies are needed when the
+            software is run, but not to compile it.</para>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <refsection>
+        <title>Port and Non-Port Dependencies</title>
+
+        <para>Port dependencies should be provided by MacPorts ports whenever
+        possible, however dependencies may be provided by vendor-supplied
+        software when satisfying a dependency by a port is not practical or
+        desirable for a special reason. Dependencies of this type are called
+        non-port dependencies.</para>
+
+        <para>Port dependencies, the preferred type, are specified as shown in
+        these examples:</para>
+
+        <programlisting>depends_lib        port:rrdtool port:apache2
+
+depends_build      port:apache2 port:php5</programlisting>
+
+        <para>Non-port dependencies are specified as shown in these
+        examples:</para>
+
+        <programlisting>depends_lib        lib:libX11.6:xorg
+
+depends_build      bin:rrdtool</programlisting>
+      </refsection>
+    </refsection>
+
+    <refsection>
+      <title>Variants</title>
+
+      <para>MacPorts variants are conditional modifications of port
+      installation behavior that may be invoked by a user at the time of port
+      install.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>variant [requires variant] [conflicts variant] [description
+          description]</term>
+
+          <listitem>
+            <para>The variant declaration may contain any keywords that can be
+            placed in a Portfile's global section. If you wish to execute
+            system (shell) calls or Tcl extensions during the execution of a
+            port phase, you should place those statements within a
+            <literal>variant_isset</literal> conditional within a phase
+            declaration and not within the variant declaration itself.
+            Dependencies and conflicts with other variants in the same port
+            can be expressed with requires and conflicts. See the isset Tcl
+            extension.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: no</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>variant gnome requires glib {
+      configure.args-append --with-gnome
+      depends_lib-append port:gnome-session
+}</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>default_variants</term>
+
+          <listitem>
+            <para>If variants are defined, then the default_variants value
+            lists which variants are enabled by default. This allows for
+            Portfile modularity and also allows users to suppress default
+            variants if they wish.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>default_variants +ssl +tcpd
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>Default variants may be suppressed by preceding a variant
+            name with a "-" as shown in this example.</para>
+
+            <programlisting><prompt>%%</prompt> <userinput>port install foo -ssl</userinput></programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>universal_variant</term>
+
+          <listitem>
+            <para>When using MacPorts on Mac OS X, a universal variant is
+            defined by default to configure ports with universal flags. The
+            variant can be overridden if the default code does not work (see
+            the Configure Universal section below), or suppressed if a
+            universal variant is not possible for the port with this
+            keyword.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: yes</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>universal_variant  no</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Livecheck / Distcheck</title>
+
+      <para>Options livecheck and distcheck are especially useful for port
+      maintainers, but others may also find this information valuable.</para>
+
+      <para>Livecheck checks to see if MacPorts can query the developer's
+      download site to determine if a newer version of the software has become
+      available since the port was installed.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>livecheck.check</term>
+
+          <listitem>
+            <para>Specify what kind of update check to perform.</para>
+
+            <para>Open source mirror site options are to use the project's
+            latest file release from <option>sourceforge</option> or
+            <option>googlecode</option>, or the project's
+            <literal>date_updated</literal> XML tag for
+            <option>freshmeat</option>.</para>
+
+            <para>Generic download site options are to specify a
+            <option>moddate</option> (modification date) of a URL resource), a
+            <option>regex</option> (retrieve the version by applying a regex
+            to a URL resource), <option>regexm</option> (retrieve the version
+            by applying a multi-line regex to a URL resource),
+            <option>md5</option> (compares the md5 sum of a URL resource) or
+            <option>none</option> (no check).</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: sourceforge or googlecode if the master_sites
+                is one of these, else freshmeat.</para>
+              </listitem>
+
+              <listitem>
+                <para>Values: freshmeat sourceforge googlecode moddate regex
+                regexm md5 none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>livecheck.check     regex
+livecheck.url       http://dev.mysql.com/
+livecheck.regex     "Generally Available (${major_version}\\.\[0-9.\]+)"
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.name</term>
+
+          <listitem>
+            <para>Name of the project for live checks; only used with
+            freshmeat, sourceforge, and googlecode livechecks.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${name}</varname> or the
+                sourceforge/freshmeat/googlecode project name if it can be
+                guessed from <literal>master_sites</literal>.</para>
+              </listitem>
+
+              <listitem>
+                <para>Values:
+                <replaceable>any_project_name</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.name   hibernate</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.distname</term>
+
+          <listitem>
+            <para>Name of the file release for sourceforge and googlecode
+            checks. You may use this keyword without livecheck.version if you
+            replace the version part of the name with "(.*)".</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: SourceForge:
+                <varname>${livecheck.name}</varname> ; GoogleCode: first
+                ${distfiles} item</para>
+              </listitem>
+
+              <listitem>
+                <para>Values: <replaceable>filename</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.distname  faad2.src</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.version</term>
+
+          <listitem>
+            <para>Version of the project for a check; used for regex-based
+            checks.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${version}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Values: <replaceable>any_version</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.version   ${name}-${version}</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.url</term>
+
+          <listitem>
+            <para>URL to query for a check.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default:</para>
+
+                <itemizedlist>
+                  <listitem>
+                    <para>homepage or the first hit among the following
+                    sites</para>
+                  </listitem>
+
+                  <listitem>
+                    <para>http://freshmeat.net/projects-xml/${livecheck.name}/${livecheck.name}.xml</para>
+                  </listitem>
+
+                  <listitem>
+                    <para>http://sourceforge.net/export/rss2_projfiles.php?project=${livecheck.name}</para>
+                  </listitem>
+
+                  <listitem>
+                    <para>http://code.google.com/p/${livecheck.name}/downloads/list</para>
+                  </listitem>
+                </itemizedlist>
+              </listitem>
+
+              <listitem>
+                <para>Values: <replaceable>any_url</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.url  http://ftp.gnu.org/gnu/bison/</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.regex</term>
+
+          <listitem>
+            <para>Regular expression to parse the resource for regex checks.
+            Be sure to use a regular expression grouping around the version
+            component.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Values: <replaceable>any_regex</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck.regex  4th-([a-z0-9.]+)-unix.tar.gz</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>livecheck.md5</term>
+
+          <listitem>
+            <para>md5 checksum to use for an md5 comparison.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Values:
+                <replaceable>any_md5_checksum</replaceable></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>livecheck  md5 37e6a5b6516a680c7178b72021d3b706</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <para>Distcheck reports whether or not the distfile(s) specified in a
+      Portfile are still available on the developer's download site. Examples
+      are given below.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>distcheck.check</term>
+
+          <listitem>
+            <para>This option can be used to disable distcheck. It specifies
+            what kind of check should be performed on distfiles: moddate
+            (check if the Portfile is older than the distfile) or none (no
+            check).</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: moddate</para>
+              </listitem>
+
+              <listitem>
+                <para>Values: moddate none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>distcheck.check  none</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>StartupItems</title>
+
+      <para>A StartupItem is a MacPort facility to run "daemons," a Unix term
+      for programs that run continuously in the background, rather than under
+      the direct control of a user; for example, mail servers, network
+      listeners, etc. Ports that use StartupItem keywords create Mac OS X
+      scripts for <ulink
+      url="http://developer.apple.com/macosx/launchd.html">launchd</ulink>,
+      which is the Apple facility introduced with OS X 10.4 to replace xinetd
+      for starting and managing daemons. To support
+      <command>launchd</command>, a program named <command>daemondo</command>
+      is provided by MacPorts base that serves as an adapter between OS X's
+      <command>launchd</command> and daemons (<quote>executable</quote>
+      StartupItems) or traditional Unix startup scripts that start daemons
+      (<quote>script</quote> StartupItems).</para>
+
+      <para>There are three categories of StartupItem keywords. Those that
+      trigger StartupItem creation and logging, those that specify attributes
+      of <quote>executable</quote> StartupItems, and those that specify
+      attributes of <quote>script</quote> StartupItems.</para>
+
+      <refsection>
+        <title>StartupItem Attributes</title>
+
+        <para>The keywords in this section may be used with either
+        <quote>executable</quote> or <quote>script</quote> StartupItems (see
+        below).</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>startupitem.create</term>
+
+            <listitem>
+              <para>Trigger the creation of a StartupItem.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.create  yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.name</term>
+
+            <listitem>
+              <para>Sets the name for the StartupItem.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: required</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>any_name</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.name  OpenSSH</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.logfile</term>
+
+            <listitem>
+              <para>Path to a logfile for logging events about the lifetime of
+              the StartupItem. Depending on the type of StartupItem, and the
+              manner in which it is started, standard output from the daemon
+              may also be directed to the logfile.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: <filename>/dev/null</filename></para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>/file/path</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.logfile  ${prefix}/var/log/mydaemon.log</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.logevents</term>
+
+            <listitem>
+              <para>Control whether or not to log events to the log file. If
+              logevents is set, events with timestamps are logged to the
+              logfile.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.logevents   yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.netchange</term>
+
+            <listitem>
+              <para>Cause the daemon to be restarted when a change in network
+              state is detected.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.netchange  yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Executable StartupItems</title>
+
+        <para>Daemons run continuously, so monitoring the health of daemon
+        processes and restarting them if they die is an important
+        StartupItems' feature. <quote>Executable</quote> StartupItems are
+        preferred over <quote>script</quote> StartupItems because
+        <command>daemondo</command> launches the daemon
+        <emphasis>directly</emphasis>, rather than
+        <emphasis>indirectly</emphasis> via a script, and therefore it
+        automatically knows how to monitor a daemon process and restart it if
+        it dies. Daemons used with <quote>executable</quote> StartupItems may
+        be programs or scripts (shell, perl, python, etc.), but when a script
+        the script <emphasis>itself</emphasis> must be the daemon, rather than
+        a script that launches a daemon. <quote>Script</quote> StartupItems
+        are to be used for the latter.</para>
+
+        <note>
+          <para>For a given port, the <quote>executable</quote> StartupItem
+          keyword may not be used with any keywords in the
+          <quote>script</quote> StartupItem category.</para>
+        </note>
+
+        <variablelist>
+          <varlistentry>
+            <term>startupitem.executable</term>
+
+            <listitem>
+              <para>Specifies the name of the daemon to be run in the
+              background. It may have multiple arguments, but they must be
+              appropriate for a call to exec; arbitrary shell code may not be
+              used.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values:
+                  <replaceable>/path/to/executable</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.executable  "${prefix}/bin/nmicmpd"</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.inetdcompat</term>
+
+            <listitem>
+              <para>This keyword can only be used with startupitem.executable
+              and sets inetdCompatibility option.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.inetdcompat   yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.inetdsockname</term>
+
+            <listitem>
+              <para>Specify the xinetd socket servicename given in
+              <filename>/etc/services</filename>; this is mandatory when using
+              startupitem.inetdcompat, otherwise an invalid plist file
+              results.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional, but mandatory when using
+                  startupitem.inetdcompat.</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>name</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.inetdsockname   nmicmpd</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.inetdnowait</term>
+
+            <listitem>
+              <para>This keyword can only be used with
+              startupitem.inetdcompat, and corresponds to "wait" or "nowait"
+              option of xinetd services.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.inetdnowait   yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.logevents</term>
+
+            <listitem>
+              <para>Control whether or not to log events to the log file. If
+              logevents is set, events with timestamps are logged to the
+              logfile.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: yes no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.logevents   yes</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Script StartupItems</title>
+
+        <para>StartupItems of type <quote>script</quote> use
+        <command>daemondo</command> to launch a daemon
+        <emphasis>indirectly</emphasis> via a startup script. A typical
+        snippet of a startup script that may be used with a
+        <quote>script</quote> StartupItem is shown below. Notice that the
+        script is not a daemon; rather the script indirectly launches the
+        vm-pop3d daemon.</para>
+
+        <programlisting>#!/bin/sh
+#
+case "$1" in
+  start)
+       echo -n "Starting vm-pop3d: "
+       /opt/local/sbin/vm-pop3d -d 10 -t 600
+
+
+[... trimmed ...]</programlisting>
+
+        <para>But if a script itself is a daemon, use the executable
+        StartupItem type since that way it will be launched directly and its
+        health tracked automatically. When using <quote>script</quote>
+        StartupItems, the <code>startupitem.pidfile</code> keyword must be
+        used if you want <command>daemondo</command> to monitor a daemon
+        process and restart it if it dies.</para>
+
+        <note>
+          <para>For a given port, StartupItem keywords in category
+          <quote>script</quote> may not be used with an
+          <quote>executable</quote> StartupItem keyword.</para>
+        </note>
+
+        <variablelist>
+          <varlistentry>
+            <term>startupitem.start</term>
+
+            <term>startupitem.stop</term>
+
+            <term>startupitem.restart</term>
+
+            <listitem>
+              <para>Specify a shell script to start, stop, and restart the
+              daemon. In the absence of a restart key, the daemon will be
+              restarted by taking the stop action, followed by the start
+              action.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>shell_script</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Examples:</para>
+
+                  <programlisting>startupitem.start ${prefix}/share/mysql/mysql.server start
+startupitem.stop ${prefix}/share/mysql/mysql.server stop
+startupitem.restart ${prefix}/share/mysql/mysql.server restart</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.init</term>
+
+            <listitem>
+              <para>Shell code that will be executed prior to any of the
+              options <code>startupitem.start</code>,
+              <code>startupitem.stop</code> and
+              <code>startupitem.restart</code>.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: no</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values: <replaceable>shell_script</replaceable></para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.init  "PID=/var/run/dhcpd.pid"</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>startupitem.pidfile</term>
+
+            <listitem>
+              <para>This keyword must be defined properly for
+              <command>daemondo</command> to be able to monitor daemons
+              launched via <quote>script</quote> StartupItems and restart them
+              if they die. It specifies two things: a process id (PID) file
+              handling method, and a pidfile name and path.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Type: optional</para>
+                </listitem>
+
+                <listitem>
+                  <para>Default: [none] |
+                  [<filename>${prefix}/var/run/${name}.pid</filename>]</para>
+                </listitem>
+
+                <listitem>
+                  <para>Values [none auto manual clean]
+                  [<replaceable>/path/to/pidfile</replaceable>]</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>startupitem.pidfile auto ${prefix}/var/run/${name}.pidfile</programlisting>
+                </listitem>
+              </itemizedlist>
+
+              <para>PID file handling options:</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para><option>none</option> - daemondo will not create or
+                  track a PID file, so it won't know when a daemon
+                  dies.</para>
+                </listitem>
+
+                <listitem>
+                  <para><option>auto</option> - The started process is
+                  expected to create a PID file that contains the PID of the
+                  running daemon; daemondo then reads the PID from the file
+                  and tracks the process. The started process must delete the
+                  PID file if this is necessary.</para>
+                </listitem>
+
+                <listitem>
+                  <para><option>clean</option> - The started process is
+                  expected to create a PID file that contains the PID of the
+                  running daemon; daemondo then reads the PID from the file
+                  and tracks the process, and deletes the PID file if it
+                  detects the daemon has died.</para>
+                </listitem>
+
+                <listitem>
+                  <para><option>manual</option> - This option should only be
+                  used if an <quote>executable</quote> StartupItem could be
+                  used (daemondo launches a daemon directly)
+                  <emphasis>and</emphasis> a port author wants a PID file
+                  written for some special use. A PID file is not needed to
+                  detect process death for daemons launched directly by
+                  daemondo. As with executale StartupItems, daemondo remembers
+                  the PID of the launched process and tracks it
+                  automatically.</para>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Loading / Unloading StartupItems into launchd</title>
+
+        <para>A port with a StartupItem places a link to a .plist file for the
+        port's daemon within <filename>/Library/LaunchDaemons/</filename>. A
+        .plist file is an XML file; MacPorts installs .plist files tagged as
+        <quote>disabled</quote> for the sake of security. You may enable a
+        startup script (tag the.plist file as <quote>enabled</quote>) and load
+        it into <command>launchd</command> with a single command as
+        shown.</para>
+
+        <programlisting><prompt>%%</prompt> <userinput>sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist</userinput></programlisting>
+
+        <para>You may stop a running startup script, disable it (tag the.plist
+        file as <quote>disabled</quote>), and unload it from
+        <command>launchd</command> with a single command as shown.</para>
+
+        <programlisting><prompt>%%</prompt> <userinput>sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist</userinput></programlisting>
+      </refsection>
+
+      <refsection>
+        <title>StartupItem Internals</title>
+
+        <para>During port installation a MacPorts StartupItem creates a .plist
+        file in <filename>${prefix}/etc/LaunchDaemons/</filename>, and places
+        a symbolic link to the .plist file within
+        <filename>/Library/LaunchDaemons/</filename>.</para>
+
+        <para>For example, the StartupItem for the mysql5 port is
+        <filename>org.macports.mysql5.plist</filename>, and it is linked as
+        shown.</para>
+
+        <programlisting><prompt>%%</prompt> <userinput>ls -l /Library/LaunchDaemons</userinput></programlisting>
+
+        <screen>org.macports.mysql5.plist -&gt;
+     /opt/local/etc/LaunchDaemons/org.macports.mysql5/org.macports.mysql5.plist</screen>
+
+        <para>For <quote>script</quote> StartupItems, in addition to a .plist
+        file, a wrapper is also created.<programlisting><prompt>%%</prompt> <userinput>ls -l /opt/local/etc/LaunchDaemons/org.macports.mysql5/</userinput></programlisting><screen>-rwxr-xr-x   2 root  wheel  475 Aug  2 14:16 mysql5.wrapper
+-rw-r--r--   2 root  wheel  975 Aug  2 14:16 org.macports.mysql5.plist</screen>The
+        wrapper manipulates the script as specified in the startupitem.start
+        and startupitem.stop keywords. An example wrapper script snippet is
+        shown below.</para>
+
+        <programlisting>#!/bin/sh
+#
+# MacPorts generated daemondo support script
+
+# Start
+Start()
+{
+        /opt/local/share/mysql5/mysql/mysql.server start
+}
+
+# Stop
+Stop()
+{
+        /opt/local/share/mysql5/mysql/mysql.server stop
+}
+
+[... trimmed ...]</programlisting>
+      </refsection>
+    </refsection>
+  </refsection>
+
+  <refsection>
+    <title>Installation Phase Keyword Reference</title>
+
+    <para>MacPorts keywords are used to specify required or optional items
+    within a Portfile, or to override default options used by MacPorts base
+    for individual ports. Keywords are to be used within the "global" and
+    "variant" sections of Portfiles, and not within optional port phase
+    declarations.</para>
+
+    <para>In other words, port phase keywords are not located within port
+    phase declarations, but rather they <emphasis>refer</emphasis> to port
+    phases and set options for those phases, and they take affect whether or
+    not phase declarations have been explicitly defined in a Portfile.</para>
+
+    <refsection>
+      <title>A Word about Keyword List Modifiers (-append / -delete)</title>
+
+      <para>It is often necessary to add to a list of keyword values
+      previously set by a previously executed Portfile keyword or by MacPorts
+      base. To keep from overwriting a previous keyword list, use a keyword
+      list modifier. Keywords that support list modifiers are identified under
+      appropriate reference sections below.</para>
+
+      <para>The three most common uses for keyword list modifiers are to
+      preserve configure defaults, to preserve PortGroup dependencies, and to
+      add or delete items for variants.</para>
+
+      <refsection>
+        <title>Common Uses for Keyword List Modifiers</title>
+
+        <para>The three most common uses for keyword list modifiers are to
+        preserve configure defaults, to preserve PortGroup dependencies, and
+        to add or delete items for variants.</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>Preserve configure Defaults</term>
+
+            <listitem>
+              <para>MacPorts base sets the gcc compiler flags CFLAGS and
+              LDFLAGS for all ports using <literal>configure.cflags</literal>
+              and <literal>configure.ldflags</literal>, therefore to keep from
+              overwriting the default compiler flags use
+              <literal>configure.cflags-append</literal> and
+              <literal>configure.ldflags-append</literal>.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para><code>configure.cflags-append</code></para>
+                </listitem>
+
+                <listitem>
+                  <para><code>configure.ldflags-append</code></para>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>Preserve PortGroup Dependencies</term>
+
+            <listitem>
+              <para>Ports in a PortGroup have default library dependencies set
+              by MacPorts base. Therefore, never use
+              <literal>depends_lib</literal> in ports belonging to a PortGroup
+              or it will overwrite the default library dependencies. Instead,
+              use <literal>depends_lib-append</literal>.</para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>Add or Delete Items for Variants</term>
+
+            <listitem>
+              <para>When a variant requires more or fewer dependencies,
+              distfiles, or patchfiles, when the variant is invoked you want
+              to add or remove items to the appropriate keyword values list
+              set in the global section of the Portfile. Use the appropriate
+              keywords, for example:</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para><code>depends_lib-append</code> or
+                  <code>depends_lib-delete</code></para>
+                </listitem>
+
+                <listitem>
+                  <para><code>distfiles-append</code> or
+                  <code>distfile-delete</code></para>
+                </listitem>
+
+                <listitem>
+                  <para><code>patchfiles-append</code> or
+                  <code>patchfiles-delete</code></para>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+    </refsection>
+
+    <refsection>
+      <title>A Word about Keyword Argument Modifiers (.pre_args /
+      .post_args)</title>
+
+      <para>Keywords that support pre_args and post_args are used to assemble
+      command strings together in a row, as described in the reference
+      sections below. But it should be noted that all keyword argument
+      modifiers implicitly support keyword list modifiers. For example, the
+      keyword <literal>configure.pre_args</literal> also supports
+      <literal>configure.pre_args-append</literal> and
+      <literal>configure.pre_args-delete</literal>.</para>
+    </refsection>
+
+    <refsection>
+      <title>Fetch Phase Keywords</title>
+
+      <para>The list of keywords related to the fetch phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>master_sites</term>
+
+          <listitem>
+            <para>A list of URLs from which a port's download file(s) may be
+            retrieved. For multiple master_sites, they are searched in order
+            until a file matching <varname>${distfile}</varname> is
+            found.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: ???</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>master_sites   http://www.somesite.org/files/ \
+               http://www.somemirror.org/somesite_org/files/
+
+</programlisting>
+
+                <para>You may also use mirror site lists predefined by
+                MacPorts. Here the sourceforge and gnu mirrors are
+                used.</para>
+
+                <programlisting>master_sites   sourceforge gnu
+
+</programlisting>
+
+                <para>When using mirror master_sites, the subdirectory
+                <varname>${name}</varname> is checked on every mirror. If the
+                mirror subdirectory does not match ${name}, then you may
+                specify it using after the mirror separated by a colon.</para>
+
+                <programlisting>master_sites   sourceforge:widget \
+               gnu:widget
+
+</programlisting>
+
+                <para>For ports that must fetch multiple download files from
+                different locations, you must label the files with tags and
+                match the tags in a distfiles statement. The format is
+                <literal>mirror:subdirectory:tag</literal>.</para>
+
+                <para>In the example below, file_one.tar.gz is fetched from
+                sourceforge mirrors in subdirectory
+                <varname>${name}</varname>; file tagtwo.tar.gz is fetched from
+                the gnu mirrors in subdirectory sources.</para>
+
+                <programlisting>master_sites    sourceforge::tagone \
+                gnu:sources:tagtwo
+
+distfiles       file_one.tar.gz:tagone \
+                file_two.tar.gz:tagtwo</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>patch_sites</term>
+
+          <listitem>
+            <para>A list of sites from which a port's patchfiles may be
+            downloaded, where applicable.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${master_sites}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patch_sites    ftp://ftp.patchcityrepo.com/pub/magic/patches</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>distname</term>
+
+          <listitem>
+            <para>The name of the distribution filename, not including the
+            extract suffix.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${name}-${version}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>distname     ${name}</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>distfiles</term>
+
+          <listitem>
+            <para>The full distribution filename, including the extract
+            suffix. Used to specify non-default distribution filenames; this
+            keyword must be specified (and tags used) when a port has multiple
+            download files (see master_sites).</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default:
+                <varname>${distname}${extract.suffix}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>distfiles    ${name}-dev_src.tgz
+
+
+distfiles       file_one.tar.gz:tagone \
+                file_two.tar.gz:tagtwo</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>extract.suffix</term>
+
+          <listitem>
+            <para>This keyword is used to specify the extract suffix
+            type.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <filename>.tar.gz</filename></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>extract.suffix   .tgz</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>use_bzip2</term>
+
+          <listitem>
+            <para>This keyword is for downloads that are tarred and bzipped.
+            When invoked, it automatically sets:</para>
+
+            <literallayout>extract.suffix = .tar.bz
+extract.cmd = bzip
+
+</literallayout>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: yes</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>use_bzip2     yes</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>use_zip</term>
+
+          <listitem>
+            <para>This keyword is for downloads are zipped. When invoked, it
+            automatically sets:</para>
+
+            <literallayout>extract.suffix = .zip
+extract.cmd = unzip
+extract.pre_args = -q
+extract.post_args = "-d ${portpath}/${workdir}"
+
+</literallayout>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <option>yes</option></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>use_zip       yes</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <refsection>
+        <title>Fetch from CVS</title>
+
+        <para><ulink url="http://www.nongnu.org/cvs/">CVS</ulink> may be used
+        as an alternative method of fetching distribution files using the
+        keywords in this section. However, fetching via CVS may cause
+        non-reproducible builds, so it is strongly discouraged.</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>cvs.root</term>
+
+            <listitem>
+              <para>Specify the url from which to fetch files.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>cvs.root :pserver:anonymous at cvs.sv.gnu.org:/sources/emacs</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>cvs.tag</term>
+
+            <listitem>
+              <para>Optional for fetching with CVS, this specifies the code
+              revision to checkout.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>cvs.tag  HEAD</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>cvs.date</term>
+
+            <listitem>
+              <para>A date that identifies the CVS code set to
+              checkout.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>cvs.date "12-April-2007"</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>cvs.module</term>
+
+            <listitem>
+              <para>A CVS module from which to check out the code.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting>cvs.module  Sources</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Fetch from Subversion</title>
+
+        <para><ulink url="http://subversion.tigris.org/">Subversion</ulink>
+        may be used as an alternative method of fetching distribution files
+        using the keywords in this section. However, fetching via Subversion
+        may cause non-reproducible builds, so it is strongly
+        discouraged.</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>svn.url</term>
+
+            <listitem>
+              <para>This specifies the url from which to fetch files.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Examples:</para>
+
+                  <programlisting>svn.url http://www.domain.com/svn-repo/mydirectory
+svn.url svn://www.domain.com/svn-repo/mydirectory
+</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>svn.tag</term>
+
+            <listitem>
+              <para>Optional tag for fetching with Subversion, this specifies
+              the code revision to checkout; it corresponds to the -r option
+              in the svn cli. You must use backslashes to escape characters
+              that are meaningful to the Tcl interpreter, such as braces and
+              double quotes.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: none</para>
+                </listitem>
+
+                <listitem>
+                  <para>Examples:</para>
+
+                  <programlisting>svn.tag 37192
+svn.tag \{\"2006-02-17 15:30 +0230\"\}</programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+    </refsection>
+
+    <refsection>
+      <title>Checksum Phase Keywords</title>
+
+      <para>The list of keywords related to the checksum phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>checksums</term>
+
+          <listitem>
+            <para>Checksum(s) of the distribution files. For ports with
+            multiple distribution files, filenames must be included to
+            associate files with their checksums.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: ???</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>checksums     md5 dafa161bc9c61e57636a6085c87c1fe8 \
+              sha1 5da610e1c8bc01b80abc21ab9e98e004363b429c \
+              rmd160 0c1147242adf476f5e93f4d59b553ee3ea378b23</programlisting>
+
+                <programlisting>checksums     ${distname}${extract.suffix} md5 dafa161bc9c61e57636a6085c87c1fe8 \
+                  sha1 5da610e1c8bc01b80abc21ab9e98e004363b429c \
+                  rmd160 0c1147242adf476f5e93f4d59b553ee3ea378b23 \
+              hobbit.tar.gz md5 3b8d02c6cf6239b9bdadbc6543c5a683 \
+                  sha1 27874638b23e66d39ed94fe716ca25c967f6e993 \
+                  rmd160 82b9991f3bf0ceedbf74c188c5fa44b98b5e40c9</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Extract Phase Keywords</title>
+
+      <para>The list of keywords related to the extract phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>extract.only</term>
+
+          <term>extract.only-append</term>
+
+          <term>extract.only-delete</term>
+
+          <listitem>
+            <para>List of files to extract into
+            <varname>${worksrcpath}</varname>; the default is
+            <varname>${distfiles}</varname>. Only use if default extract
+            behavior is not correct for your port.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>extract.only     foo.tar.gz
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>extract.only-append  bar.tar.gz
+extract.only-delete  foo.tar.gz</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>extract.cmd</term>
+
+          <listitem>
+            <para>Command to perform extraction.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: gzip</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>extract.cmd     gunzip</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>extract.args</term>
+
+          <term>extract.pre_args</term>
+
+          <term>extract.post_args</term>
+
+          <listitem>
+            <para>Main arguments to extract.cmd; additional arguments passed
+            before and after the main arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: ${distpath}/${distfile}</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>extract.args      ${distpath}/${distfile}
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>extract.pre_args default: "-dc"</para>
+              </listitem>
+
+              <listitem>
+                <para>extract.post_args default: " | tar -xf"</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>extract.pre_args     xf
+extract.post_args    "| gnutar –x"</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Patch Phase Keywords</title>
+
+      <para>The list of keywords related to the patch phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>patch.dir</term>
+
+          <listitem>
+            <para>Specify the base path for patch files.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <varname>${worksrcpath}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patch.dir      ${worksrcpath}/util</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>patch.cmd</term>
+
+          <listitem>
+            <para>Specify the command to be used for patching files.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <command>patch</command></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patch.cmd      cat</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>patchfiles</term>
+
+          <term>patchfiles-append</term>
+
+          <term>patchfiles-delete</term>
+
+          <listitem>
+            <para>Specify patch files to be applied for a port; list modifiers
+            specify patchfiles to be added or removed from a previous
+            patchfile declaration.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patchfiles     patch-Makefile.in \
+               patch-source.c
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>patchfiles-append   patch-configure
+patchfiles-delete   patch-src-Makefile.in
+</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>patch.args</term>
+
+          <term>patch.pre_args</term>
+
+          <term>patch.post_args</term>
+
+          <listitem>
+            <para>Main arguments to patch.cmd; optional argument modifiers
+            pass arguments before and after the main arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>patch.args   ???
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>patch.pre_args default: -p0</para>
+              </listitem>
+
+              <listitem>
+                <para>patch.post_args default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>patch.pre_args     -p1
+patch.post_args    ???</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Configure Phase Keywords</title>
+
+      <para>The list of keywords related to the configure phase.</para>
+
+      <para>MacPorts base sets some important default configure options, so
+      should use the -append version of most configure keywords so you don't
+      overwrite them. For example, MacPorts base sets default
+      <literal>configure.cflags</literal> so you should always use
+      <literal>configure.cflags-append</literal> to set additional CFLAGS in
+      Portfiles.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>configure.env</term>
+
+          <term>configure.env-append</term>
+
+          <term>configure.env-delete</term>
+
+          <listitem>
+            <para>Set environment variables for configure; list modifiers add
+            and delete items from a previous Portfile configure.env keyword,
+            or a default set by MacPorts base. If available, it is encouraged
+            to use the predefined options (like configure.cflags) instead of
+            modifying configure.env directly</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>CFLAGS=-I${prefix}/include
+                LDFLAGS=-L${prefix}/lib</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.env   QTDIR=${prefix}/lib/qt3
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>configure.env-append   ABI=32
+configure.env-delete   TCLROOT=${prefix}</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.cflags</term>
+
+          <term>configure.cflags-append</term>
+
+          <term>configure.cflags-delete</term>
+
+          <listitem>
+            <para>Set CFLAGS compiler flags; list modifiers add or delete
+            items from a previous Portfile configure.cflags keyword or the
+            default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-O2</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cflags    -Os -flat_namespace
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>configure.cflags-append   "-undefined suppress"
+configure.cflags-delete   -O2</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.ldflags</term>
+
+          <term>configure.ldflags-append</term>
+
+          <term>configure.ldflags-delete</term>
+
+          <listitem>
+            <para>Set LDFLAGS compiler flags; list modifiers add or delete
+            items from a previous Portfile configure.ldflags keyword or the
+            default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-L${prefix}/lib</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.ldflags    -L${worksrcpath}/zlib -lz
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>configure.ldflags-append   "-L/usr/X11R6/lib -L${worksrcpath}/lib"
+configure.ldflags-delete   -L${prefix}/lib/db44</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.cppflags</term>
+
+          <term>configure.cppflags-append</term>
+
+          <term>configure.cppflags-delete</term>
+
+          <listitem>
+            <para>Set CPPFLAGS to be passed to the C processor; list modifiers
+            add or delete items from a previous Portfile configure.cppflags
+            keyword or the default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-I${prefix}/include</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cppflags    -I${worksrcpath}/include
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>configure.cppflags-append   "-I/usr/X11R6/lib -I${worksrcpath}/lib -DHAVE_RRD_12X"
+configure.cppflags-delete   -I${prefix}/lib/db44</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <!-- fortran compiler options -->
+
+        <varlistentry>
+          <term>configure.fflags</term>
+
+          <term>configure.fflags-append</term>
+
+          <term>configure.fflags-delete</term>
+
+          <listitem>
+            <para>Set FFLAGS to be passed to the Fortran compiler; list
+            modifiers add or delete items from a previous Portfile
+            configure.fflags keyword or the default set by MacPorts
+            base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-O2</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.fflags    -Os
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.fcflags</term>
+
+          <term>configure.fcflags-append</term>
+
+          <term>configure.fcflags-delete</term>
+
+          <listitem>
+            <para>Set FCFLAGS to be passed to the Fortran compiler; list
+            modifiers add or delete items from a previous Portfile
+            configure.fcflags keyword or the default set by MacPorts
+            base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-O2</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.fcflags    -Os
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.f90flags</term>
+
+          <term>configure.f90flags-append</term>
+
+          <term>configure.f90flags-delete</term>
+
+          <listitem>
+            <para>Set F90FLAGS to be passed to the Fortran 90 compiler; list
+            modifiers add or delete items from a previous Portfile
+            configure.f90flags keyword or the default set by MacPorts
+            base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>-O2</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.f90flags    -Os
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <!-- fortran compiler options end -->
+
+        <!-- compiler selection arguments -->
+
+        <varlistentry>
+          <term>configure.cc</term>
+
+          <listitem>
+            <para>Set CC compiler flags for selecting a C compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cc    ${prefix}/bin/gcc-mp-4.2</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.cpp</term>
+
+          <listitem>
+            <para>Set CPP compiler flags for selecting a C
+            preprocessor;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cpp    /usr/bin/cpp-3.3</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.cxx</term>
+
+          <listitem>
+            <para>Set CXX compiler flags for selecting a C++ compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.cpp    /usr/bin/g++-4.0</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.objc</term>
+
+          <listitem>
+            <para>Set OBJC compiler flags for selecting an Objective-C
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.objc    /usr/bin/gcc-4.0</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.fc</term>
+
+          <listitem>
+            <para>Set FC compiler flags for selecting a Fortran
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.fc    ${prefix}/bin/gfortran-mp-4.2</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.f77</term>
+
+          <listitem>
+            <para>Set F77 compiler flags for selecting a Fortran 77
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.f77    ${prefix}/bin/gfortran-mp-4.2</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.f90</term>
+
+          <listitem>
+            <para>Set F90 compiler flags for selecting a Fortran 90
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.f90    ${prefix}/bin/gfortran-mp-4.2</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.javac</term>
+
+          <listitem>
+            <para>Set JAVAC compiler flags for selecting a Java
+            compiler;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.javac    ${prefix}/bin/jikes</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <!-- compiler selection arguments end -->
+
+        <!-- interpreter selection arguments -->
+
+        <varlistentry>
+          <term>configure.perl</term>
+
+          <listitem>
+            <para>Set PERL flag for selecting a Perl interpreter;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.perl    ${prefix}/bin/perl5.8</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.python</term>
+
+          <listitem>
+            <para>Set PYTHON flag for selecting a Python interpreter;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.python    ${prefix}/bin/python3.0</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>configure.ruby</term>
+
+          <listitem>
+            <para>Set RUBY flag for selecting a Ruby interpreter;</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal></literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.ruby    ${prefix}/bin/ruby</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <!-- interpreter selection arguments end -->
+
+        <varlistentry>
+          <term>configure.args</term>
+
+          <term>configure.pre_args</term>
+
+          <term>configure.post_args</term>
+
+          <listitem>
+            <para>Main arguments to configure.cmd; optional argument modifiers
+            pass arguments before and after the main arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>configure.args    --bindir=${prefix}/bin
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>configure.pre_args default: --prefix=${prefix}</para>
+              </listitem>
+
+              <listitem>
+                <para>configure.post_args default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>configure.pre_args   --prefix=${prefix}/share/bro
+configure.post_args  OPT="-D__DARWIN_UNIX03"</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+
+      <refsection>
+        <title>Configure Universal</title>
+
+        <para>Universal keywords are used to make a port compile on the OS X
+        platform to run on either PPC or Intel.</para>
+
+        <note>
+          <para>There is a default universal variant made available to all
+          ports by MacPorts base, so redefining universal keywords should only
+          be done to make a given port compile if the default options fail to
+          do so.</para>
+        </note>
+
+        <variablelist>
+          <varlistentry>
+            <term>configure.universal_args</term>
+
+            <listitem>
+              <para>Arguments used in the configure script to build the port
+              universal.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: --disable-dependency-tracking</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>configure.universal_cflags</term>
+
+            <listitem>
+              <para>Arguments appended to the configure script to build the
+              port universal.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: -sysroot /Developer/SDKs/MacOSX10.4u.sdk
+                  -arch i386 -arch ppc</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>configure.universal_cppflags</term>
+
+            <listitem>
+              <para>Additional flags to put in the CPPFLAGS environment
+              variable when invoking the configure script.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: ???</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>configure.universal_cxxflags</term>
+
+            <listitem>
+              <para>Additional flags to put in the CXXFLAGS environment
+              variable when invoking the configure script.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: -isysroot /Developer/SDKs/MacOSX10.4u.sdk
+                  -arch i386 -arch ppc</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>configure.universal_ldflags</term>
+
+            <listitem>
+              <para>Additional flags to put in the LDFLAGS environment
+              variable when invoking the configure script.</para>
+
+              <itemizedlist>
+                <listitem>
+                  <para>Default: -arch i386 -arch ppc</para>
+                </listitem>
+
+                <listitem>
+                  <para>Example:</para>
+
+                  <programlisting></programlisting>
+                </listitem>
+              </itemizedlist>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+
+      <refsection>
+        <title>Automake and Autoconf</title>
+
+        <para>The list of configure keywords available for ports that need
+        automake and/or autoconf.</para>
+
+        <variablelist>
+          <varlistentry>
+            <term>use_automake</term>
+
+            <listitem>
+              <para>Whether or not to use automake; the default is
+              "no".</para>
+
+              <programlisting>use_automake      yes</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>automake.env</term>
+
+            <listitem>
+              <para>Environment variables to pass to automake.</para>
+
+              <programlisting>automake.env      CFLAGS=-I${prefix}/include</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>automake.args</term>
+
+            <listitem>
+              <para>Arguments to pass to automake.</para>
+
+              <programlisting>automake.args     --foreign</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>automake.dir</term>
+
+            <listitem>
+              <para>Directory in which to run
+              <varname>${automake.cmd}</varname>; the default is
+              <varname>${worksrcpath}</varname>.</para>
+
+              <programlisting>automake.dir      ./src</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>use_autoconf</term>
+
+            <listitem>
+              <para>Whether or not to use autoconf; the default is
+              "no".</para>
+
+              <programlisting>use_autoconf      yes</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>autoconf.env</term>
+
+            <listitem>
+              <para>Environmental variables to pass to autoconf.</para>
+
+              <programlisting>autoconf.env      CFLAGS=-I${prefix}/include/gtk12</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>autoconf.args</term>
+
+            <listitem>
+              <para>Arguments to pass to autoconf.</para>
+
+              <programlisting>autoconf.args     -l src/aclocaldir</programlisting>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term>autoconf.dir</term>
+
+            <listitem>
+              <para>Directory in which to run
+              <varname>${autoconf.cmd}</varname>; the default is
+              <varname>${worksrcpath}</varname>.</para>
+
+              <programlisting>autoconf.dir      src</programlisting>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </refsection>
+    </refsection>
+
+    <refsection>
+      <title>Build Phase Keywords</title>
+
+      <para>The list of keywords related to the build phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>build.cmd</term>
+
+          <listitem>
+            <para>Make command to run in <varname>${worksrcdir}</varname>; the
+            default is "make".</para>
+
+            <programlisting>build.cmd      pbxbuild</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>build.type</term>
+
+          <listitem>
+            <para>Defines which "make" is required: "gnu" or "bsd". Sets
+            build.cmd to either "gnumake" or "bsdmake" accordingly.</para>
+
+            <programlisting>build.type     gnu</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>build.args</term>
+
+          <term>build.pre_args</term>
+
+          <term>build.post_args</term>
+
+          <listitem>
+            <para>Main arguments to build.cmd; optional argument modifiers
+            pass arguments before and after the main arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>build.args    -DNOWARN
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>build.pre_args default:
+                <varname>${build.target.current}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>build.post_args default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>build.pre_args  -project AudioSlicer.xcode
+build.post_args CFLAGS_SYS="-DUSE_FREETYPE -DPREFER_FREETYPE"</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>build.target</term>
+
+          <term>build.target-append</term>
+
+          <term>build.target-delete</term>
+
+          <listitem>
+            <para>Build target to pass to ${build.cmd}; list modifiers add or
+            delete items from a previous Portfile build.target keyword or the
+            default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: all</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>build.target    all-src
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>build.target-append   doc extra
+build.target-delete   compat</programlisting>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+
+    <refsection>
+      <title>Destroot Phase Keywords</title>
+
+      <para>The list of keywords related to the destroot phase.</para>
+
+      <variablelist>
+        <varlistentry>
+          <term>destroot.cmd</term>
+
+          <listitem>
+            <para>Install command to run relative to
+            <varname>${worksrcdir}</varname>; default is
+            <varname>${build.cmd}</varname>.</para>
+
+            <programlisting>destroot.cmd         pbxbuild</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.type</term>
+
+          <listitem>
+            <para>Defines which "make" is required: either "gnu" or "bsd".
+            Sets install.cmd to either "gnumake" or "bsdmake"
+            accordingly.</para>
+
+            <programlisting>destroot.type        gnu</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.args</term>
+
+          <term>destroot.pre_args</term>
+
+          <term>destroot.post_args</term>
+
+          <listitem>
+            <para>Main arguments to ${destroot.cmd}; optional argument
+            modifiers pass arguments before and after the main
+            arguments.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>destroot.args    BINDIR=${prefix}/bin
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>The following argument modifiers are available:</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>destroot.pre_args default:
+                <varname>${destroot.target}</varname></para>
+              </listitem>
+
+              <listitem>
+                <para>destroot.post_args default: none</para>
+              </listitem>
+
+              <listitem>
+                <para>Examples:</para>
+
+                <programlisting>destroot.pre_args  -project AudioSlicer.xcode
+destroot.post_args INSTDIR=${destroot}${prefix}</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.target</term>
+
+          <term>destroot.target-append</term>
+
+          <term>destroot.target-delete</term>
+
+          <listitem>
+            <para>Install target to pass to ${destroot.cmd}; list modifiers
+            add or delete items from a previous Portfile destroot.target
+            keyword or the default set by MacPorts base.</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Default: <literal>install</literal></para>
+              </listitem>
+
+              <listitem>
+                <para>Example:</para>
+
+                <programlisting>destroot.target    install install-config install-commandmode
+
+</programlisting>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>List modifier examples:</para>
+
+            <programlisting>destroot.target-append   install-plugins
+destroot.target-delete   install-commandmode</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.destdir</term>
+
+          <listitem>
+            <para>Arguments passed to ${destroot.cmd} to install correctly
+            into the destroot.</para>
+
+            <programlisting>destroot.destdir     prefix=${destroot}${prefix}</programlisting>
+
+            <note>
+              <para>If an application's Makefile properly supports the DESTDIR
+              variable, MacPorts will automatically destroot the port
+              properly. A port must destroot properly or the port will not
+              install correctly, upgrade, or uninstall. If not, you may need
+              to set this variable, or even patch the application's
+              Makefile.</para>
+            </note>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.keepdirs</term>
+
+          <listitem>
+            <para>A list of directories that should not be removed if empty
+            upon destroot completion.</para>
+
+            <programlisting>destroot.keepdirs \
+                ${destroot}${prefix}/var/run \
+                ${destroot}${prefix}/var/log \
+                ${destroot}${prefix}/var/cache/mrtg</programlisting>
+          </listitem>
+        </varlistentry>
+
+        <varlistentry>
+          <term>destroot.violate_mtree</term>
+
+          <listitem>
+            <para>MacPorts tests for compliance to the common directory
+            structure in ${prefix}; the default is "no". If a port is not
+            compliant with the standard, set it to "yes".</para>
+
+            <programlisting>destroot.violate_mtree    yes</programlisting>
+          </listitem>
+        </varlistentry>
+      </variablelist>
+    </refsection>
+  </refsection>
+
+  <refsection>
+    <title>TCL EXTENSIONS</title>
+
+    <para></para>
+  </refsection>
+
+  <refsection>
+    <title>SEE ALSO</title>
+
+    <para><citerefentry>
+        <refentrytitle>port</refentrytitle>
+
+        <manvolnum>1</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>macports.conf</refentrytitle>
+
+        <manvolnum>5</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portgroup</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>portstyle</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>porthier</refentrytitle>
+
+        <manvolnum>7</manvolnum>
+      </citerefentry>, <citerefentry>
+        <refentrytitle>file</refentrytitle>
+
+        <manvolnum>n</manvolnum>
+      </citerefentry></para>
+  </refsection>
+
+  <refsection>
+    <title>AUTHORS</title>
+
+    <para>Landon Fuller <email>landonf at macports.org</email></para>
+
+    <para>Juan Manuel Palacios <email>jmpp at macports.org</email></para>
+
+    <para>Mark Duling <email>markd at macports.org</email></para>
+
+    <para>Kevin Van Vechten <email>kevin at opendarwin.org</email></para>
+
+    <para>Jordan K. Hubbard <email>jkh at macports.org</email></para>
+
+    <para>Chris Ridd <email>cjr at opendarwin.org</email></para>
+
+    <para>Kevin Ballard <email>eridius at macports.org</email></para>
+
+    <para>Markus W. Weissmann <email>mww at macports.org</email></para>
+  </refsection>
+</refentry>
\ No newline at end of file

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20071027/811c61e3/attachment-0001.html


More information about the macports-changes mailing list