<pre style='margin:0'>
Mojca Miklavec (mojca) pushed a commit to branch master
in repository macports-guide.

</pre>
<p><a href="https://github.com/macports/macports-guide/commit/33b25e8c0b2a05875768575b0ca2c03147e635fc">https://github.com/macports/macports-guide/commit/33b25e8c0b2a05875768575b0ca2c03147e635fc</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 33b25e8  Initial attempt to convert docbook to asciidoc
</span>33b25e8 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 33b25e8c0b2a05875768575b0ca2c03147e635fc
</span>Author: Mojca Miklavec <mojca@macports.org>
AuthorDate: Sun Apr 22 08:32:56 2018 +0200

<span style='display:block; white-space:pre;color:#404040;'>    Initial attempt to convert docbook to asciidoc
</span>---
 guide/adoc/README.md                  |   47 +
 guide/adoc/glossary.adoc              |  475 +++++++++
 guide/adoc/guide.adoc                 |   57 +
 guide/adoc/installing.adoc            |  428 ++++++++
 guide/adoc/internals-hier.adoc        |  374 +++++++
 guide/adoc/internals-tests.adoc       |  206 ++++
 guide/adoc/internals.adoc             |  249 +++++
 guide/adoc/intro.adoc                 |   48 +
 guide/adoc/macports.conf.adoc         |  238 +++++
 guide/adoc/macros.adoc                |   13 +
 guide/adoc/portfile-dependencies.adoc |   76 ++
 guide/adoc/portfile-keywords.adoc     |  232 +++++
 guide/adoc/portfile-livecheck.adoc    |  123 +++
 guide/adoc/portfile-phase.adoc        | 1856 +++++++++++++++++++++++++++++++++
 guide/adoc/portfile-startupitem.adoc  |  308 ++++++
 guide/adoc/portfile-tcl.adoc          |  169 +++
 guide/adoc/portfile-variables.adoc    |   73 ++
 guide/adoc/portfile-variants.adoc     |  145 +++
 guide/adoc/portfiledev.adoc           |  974 +++++++++++++++++
 guide/adoc/portfileref.adoc           |   77 ++
 guide/adoc/portgroup-github.adoc      |  118 +++
 guide/adoc/portgroup-gnustep.adoc     |  117 +++
 guide/adoc/portgroup-haskell.adoc     |   60 ++
 guide/adoc/portgroup-perl.adoc        |   68 ++
 guide/adoc/portgroup-python.adoc      |  136 +++
 guide/adoc/portgroup-ruby.adoc        |   24 +
 guide/adoc/portgroup-xcode.adoc       |  164 +++
 guide/adoc/portgroups.adoc            |   41 +
 guide/adoc/project.adoc               |  686 ++++++++++++
 guide/adoc/using.adoc                 | 1558 +++++++++++++++++++++++++++
 30 files changed, 9140 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/README.md b/guide/adoc/README.md
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d1eeacf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/README.md
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# AsciiDoc version of the guide
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is a preliminary attempt to convert the guide from DocBook to AsciiDoc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The conversion has been done with [docbookrx](https://github.com/asciidoctor/docbookrx):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    docbookrx guide.xml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+## Generating HTML
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An easy way to create HTML pages is to run
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    asciidoc guide.adoc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    asciidoctor guide.adoc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+## Plan
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For MacPorts transition to AsciiDoc we envision doing the following:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* With the highest priority fix issues with conversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (either manually or by patching `docbookrx`).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* First convert `.adoc` files back to docbook `.xml` format and use the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  existing toolchain to generate the html pages (to avoid further delays).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Once that works, start working on improving the workflow and try to go
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  directly from AsciiDoc to html (and pdf), trying to keep the option to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  generate multi-page html.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+We would be grateful for help, in particular towards fixing the issues with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conversion.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+## Known issues
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+During the initial conversion the following warnings are thrown:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    No visitor defined for <simplelist>! Skipping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    No visitor defined for <email>! Skipping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    No visitor defined for <optional>! Skipping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    No visitor defined for <citerefentry>! Skipping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    No visitor defined for <refentry>! Skipping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    No visitor defined for <screenshot>! Skipping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    No visitor defined for <tbody>! Skipping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    No visitor defined for <glossdiv>! Skipping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Quite some parts of the guide are not interpreted correctly and might end up being displayed as code rather than actual portion of text.
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/glossary.adoc b/guide/adoc/glossary.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..6aad8a0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/glossary.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,475 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_guide_terms]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= MacPorts Guide Glossary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:doctype: book
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:toc: left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:icons: font
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:experimental:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sourcedir: .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This section defines a number of words which may be new to the reader.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These are all defined in the context of Macports instead of as general purpose definition.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums!:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[glossary]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Glossary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// <glossdiv xml:id="terms">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <title>MacPorts Guide Terms</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>activate phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>automake</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>autoconf</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>API</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>destroot phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>port binary</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>build</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>build phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>checksum</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para>A checksum is a small piece of data, derived from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             an original that can be used to ensure that two files are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             identical.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>checksum phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>compile</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>configure</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>configure phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>dependency</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>destroot phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>diff</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>extract phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>fetch phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>free software</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>global keyword</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>gunzip</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>keyword</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>keyword argument modifier</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>keyword list modifier</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>library</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>MacPorts</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para>A system for compiling, installing, and managing free and open
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           source software comprised of an infrastructure called MacPorts base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           and a collection of ports. MacPorts current port collection defines
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           the software may be installed.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>open source software</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>patch phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>patch file</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>pextlib</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>port</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>port command</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>port image</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>port maintainer</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>port phase</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>port phase keyword</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>PortGroup</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>Portfile</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>registry</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>rsync</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>selfupdate</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>shell</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>StartupItem</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>Subversion</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>sync</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>tar</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>Tcl</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>Tcl extension</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>Trac</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>Unix</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>unzip</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>variant</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>Xcode Tools</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>X11</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossterm>zip</glossterm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para/>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </glossdef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </glossentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     </glossdiv>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/guide.adoc b/guide/adoc/guide.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..ac093e8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/guide.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,57 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Mark
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Duling
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ; 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Dr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Michael
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Maibaum
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    A
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ; 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Barton
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ; 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Clemens
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Lang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:doctype: book
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:toc: left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:icons: font
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:experimental:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::intro.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::installing.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::using.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfiledev.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfileref.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::internals.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::project.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::glossary.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::macros.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/installing.adoc b/guide/adoc/installing.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..bc80c57
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/installing.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,428 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Installing MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:doctype: book
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:toc: left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:icons: font
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:experimental:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sourcedir: .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This chapter shows you how to install MacPorts and its prerequisites step-by-step.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Note that the section about <<_installing.xcode,installing Xcode>> is macOS-specific.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you wish to install MacPorts on another platform, first make sure you have a working C compiler installed, skip ahead to <<_installing.macports.source,installing MacPorts from source>>, and continue to the end of the chapter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.xcode]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Install Xcode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:Xcode is a package provided by Apple containing compilers, libraries and additional tools required to develop applications for macOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Always make sure to install the latest available version of Xcode for your macOS release; using outdated versions of Xcode may cause port install failures.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Also note that Xcode is not updated via OS X's Software Update utility on OS versions prior to 10.6, and is updated via the Mac App Store starting with 10.7.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Follow the instructions for your version of macOS:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.xcode.mavericks]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Install Xcode on OS X 10.9 or Later
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Download the latest version of Xcode link:from the Apple developer website or get it link:using the Mac App
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Store.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Once you have Xcode installed, open a terminal, run ``xcode-select --install``, and click the Install button to install the required command line developer tools.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Don't worry if you see a message telling you the software cannot be installed because it is not currently available from the Software Update Server.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This usually means you already have the latest version installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You can also get the command line tools from link:the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Apple developer website.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.xcode.lion]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Install Xcode on OS X 10.7 Lion or OS X 10.8 Mountain Lion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Download the latest version of Xcode link:from the Apple developer website or get it link:using the Mac App
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Store.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.xcode.lion.43]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+==== Xcode 4.3 and Later
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Xcode 4.3 and later do not automatically install the command line tools, but MacPorts requires them.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To install them, open the Xcode application, go to the Preferences window, to the Downloads section, and click the Install button next to Command Line Tools.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Be sure to return to this window after every Xcode upgrade to ensure that the command line tools are also upgraded.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you wish to create Installer packages with ``port pkg``, you will also need to install PackageMaker, which is in the "`Auxiliary Tools for Xcode`" package as of Xcode 4.3.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The download page for this package can be opened via the Xcode -> Open Developer Tool -> More Developer Tools... menu item.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+After downloading and mounting the disk image, drag the PackageMaker application to your /Applications directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.xcode.snowleopard]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Install Xcode on Mac OS X 10.6 Snow Leopard
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you are using Mac OS X 10.6, there are two branches of Xcode which could be considered to be the latest, 3.2.x and 4.x.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Xcode 4 costs money, but Xcode 3 is still available free of charge.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There are two options for downloading it:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Xcode 3.2 - smaller download, but you will need to run Software Update after installing to get the latest version. Note that Apple might at some point discontinue providing these updates via their update servers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Xcode 3.2.6 and iOS SDK 4.3 - includes the iOS SDK which is not needed for MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Both are available from the link:Apple
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    developer website.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You may also be able to install Xcode 3.2 from your Mac OS X 10.6 DVD and then run Software Update to get the latest version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Ensure that those of the following options that are available in the installer for your version of Xcode are selected:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* btn:[UNIX Development]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* btn:[System Tools]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* btn:[X11 SDK]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* btn:[Command Line Support]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.xcode.other]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Install Xcode on Older Releases of Mac OS X
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you have an earlier release of Mac OS X, you may download the latest version of Xcode for Mac OS X 10.5 (Xcode 3.0 and Xcode 3.1 Developer Tools) or 10.4 (Xcode 2.4.1 and Xcode 2.5 Developer Tools) from the link:Apple developer website.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Ensure that those of the following options that are available in the installer for your version of Xcode are selected:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* btn:[UNIX Development]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* btn:[System Tools]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* btn:[X11 SDK]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* btn:[Command Line Support]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.macports]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Install MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you are using macOS, you should install MacPorts using the macOS package installer unless you do not wish to install it to [path]_/opt/local/_, the default MacPorts location, or if you wish to install a pre-release version of MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, if you wish to <<_installing.macports.source.multiple,install multiple copies of MacPorts>> or install MacPorts on another OS platform, you must <<_installing.macports.source,install MacPorts from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                the source code>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.macports.binary]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== macOS Package Install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The macOS package installer automatically installs MacPorts, <<_installing.shell,sets the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    shell environment>>, and runs a <<_using.port.selfupdate,selfupdate>> operation to update the ports tree and MacPorts base with the latest release.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Download the latest [path]_MacPorts-2.4.3-....pkg_ installer from the releases link:on GitHub. Here are direct links for the latest versions of macOS:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ macOS 10.13 High Sierra: ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:MacPorts-2.4.3-10.13-HighSierra.pkg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ macOS 10.12 Sierra: ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:MacPorts-2.4.3-10.12-Sierra.pkg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ OS X 10.11 El Capitan: ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:MacPorts-2.4.3-10.11-ElCapitan.pkg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Double-click the downloaded package installer to perform the default "`easy`" install.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. After this step you are done already, MacPorts is now installed and your shell environment was set up automatically by the installer. To confirm the installation is working as expected, now try using `port` in a _new_ terminal window.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ port version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Version: 2.4.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In case of problems such as "`command not found`", make sure that you opened a new terminal window or consult <<_installing.shell>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Otherwise, please skip the remainder of this chapter and continue with <<_using>> in this guide.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.macports.source]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Source Install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you installed MacPorts using the package installer, skip this section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To install MacPorts from the source code, follow the steps below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Download and extract the link: MacPorts 2.4.3 tarball. Either do so using your browser and the Finder, or use the given commands in a terminal window.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.4.3.tar.bz2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ tar xf MacPorts-2.4.3.tar.bz2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Afterwards, perform the commands shown in the terminal window. If you wish to use a path other than [path]_/opt/local_, follow the instructions for <<_installing.macports.source.multiple,installing multiple copies of MacPorts>> instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ cd MacPorts-2.4.3/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ ./configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ make
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ sudo make install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Please continue with <<_installing.shell>> to set up your shell environment.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.macports.git]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Git Install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you installed MacPorts using the package installer, skip this section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There are times when some may want to run MacPorts from a version newer than the current stable release.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Maybe there's a new feature that you'd like to use, or it fixes an issue you've encountered, or you just like to be on the cutting edge.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These steps explain how to setup MacPorts for developers, using only Git to keep MacPorts up to date.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Though a distinction is made between pre-release and release versions of MacPorts base, the ports collection supports no such distinction or versioning.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The <<_using.port.selfupdate,selfupdate>> command installs the latest ports tree, and updates MacPorts base to the latest released version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Check out MacPorts source
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Pick a location to store a working copy of the MacPorts code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For this example, [path]_/opt/mports_ will be used, but you can put the source anywhere.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This example will create [path]_/opt/mports/macports-base_ containing everything needed for MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ mkdir -p /opt/mports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ cd /opt/mports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ git clone https://github.com/macports/macports-base.git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ git checkout v2.4.3  # skip this if you want to use the development version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Build and Install MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts uses autoconf and makefiles for installation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These commands will build and install MacPorts to [path]_/opt/local_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You can add [option]``--prefix`` to [path]_./configure_ to relocate MacPorts to another directory if needed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ cd /opt/mports/macports-base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ ./configure --enable-readline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ make
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ sudo make install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ make distclean
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. (Optional) Configure MacPorts to use port information from Git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This step is useful if you want to do port development.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Check out the ports tree from git:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ cd /opt/mports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ git clone https://github.com/macports/macports-ports.git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Then open [path]_/opt/local/etc/macports/sources.conf_ in a text editor.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The last line should look like this:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rsync://rsync.macports.org/macports/release/tarballs/ports.tar [default]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Change it to point to the working copy you checked out:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+file:///opt/mports/macports-ports [default]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Now MacPorts will look for portfiles in the working copy and use Git instead of rsync to update your ports tree.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Environment
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You should setup your PATH and other environment options according to <<_installing.shell>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.macports.source.multiple]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Install Multiple MacPorts Copies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Occasionally a MacPorts developer may wish to install more than one MacPorts instance on the same host.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Only one copy of MacPorts may use the default prefix [path]_/opt/local_, so for additional installations use the option [option]``--prefix`` as shown below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It's also recommended to change the applications dir using [option]``--with-applications-dir`` to avoid conflicts in [path]_/Applications/MacPorts_. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The first command temporarily removes the standard MacPorts binary paths because they must not be present while installing a second instance.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ export PATH=/bin:/sbin:/usr/bin:/usr/sbin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ MP_PREFIX=/opt/macports-test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ ./configure --prefix=$MP_PREFIX --with-applications-dir=$MP_PREFIX/Applications
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ make
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ sudo make install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+After installing the second instance you might need to add 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem_install no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+to [path]_$MP_PREFIX/etc/macports/macports.conf_ to avoid conflicts in [path]_/Library/LaunchAgents_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.macports.upgrade]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== MacPorts Upgrade
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts base upgrades are performed automatically (when a newer release is available) during a <<_using.port.selfupdate,selfupdate>> operation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To upgrade a copy of MacPorts that was installed from source to the newer release of the source code, simply repeat the <<_installing.macports.source,source install>> with the newer version of the MacPorts source code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.macports.uninstalling]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Uninstall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Uninstalling MacPorts can be a drastic step, and depending on the issue you are experiencing, you may not need to do so.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you are unsure, ask on the link:macports-users mailing list first.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you need to uninstall MacPorts, and `port` is functioning, first uninstall all the installed ports by running this command in the Terminal:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ sudo port -fp uninstall installed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+All that will be left in your installation prefix now will be files that were not registered to any port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This includes configuration files, databases, any files which MacPorts renamed in order to allow a forced installation or upgrade, and the base MacPorts software itself.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You may wish to save your configuration files (most are in [path]_$prefix/etc_), databases, or any other unique data by moving it aside.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To remove all remaining traces of MacPorts, run the following command in the Terminal.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you have changed [var]``prefix``, [var]``applications_dir`` or [var]``frameworks_dir`` from their default values, then replace [path]_/opt/local_ with your [var]``prefix``, replace [path]_/Applications/MacPorts_ with your [var]``applications_dir``, and/or add your [var]``frameworks_dir`` to the list, respectively.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ sudo rm -rf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /opt/local \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /Applications/DarwinPorts \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /Applications/MacPorts \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /Library/LaunchDaemons/org.macports.* \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /Library/Receipts/DarwinPorts*.pkg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /Library/Receipts/MacPorts*.pkg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /Library/StartupItems/DarwinPortsStartup \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /Library/Tcl/darwinports1.0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /Library/Tcl/macports1.0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ~/.macports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you use a shell other than bash (perhaps tcsh), you may need to adjust the above to fit your shell's syntax.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Also note that depending on which version of MacPorts you have and which ports you have installed, not all of the above paths will exist on your system.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is OK.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.shell]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== MacPorts and the Shell
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts requires that some environment variables be set in the shell.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When MacPorts is installed using the macOS package installer, a "`postflight`" script is run after installation that automatically adds or modifies a shell configuration file in your home directory, ensuring that it defines variables according to the rules described in the following section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Those <<_installing.macports.source,installing MacPorts from source code>> must modify their environment manually using the rules as a guide.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Depending on your shell and which configuration files already exist, the installer may use [path]_.profile_, [path]_.bash_login_, [path]_.bash_profile_, [path]_.tcshrc_, or [path]_.cshrc_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.shell.postflight]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== The Postflight Script
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The postflight script automatically sets the [var]``PATH`` variable, and optionally the [var]``MANPATH`` and [var]``DISPLAY`` variables according to the rules described below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a current shell configuration file exists at installation time it is renamed to "`mpsaved_$timestamp`".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Those <<_installing.macports.source,installing MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    from source code>> must modify their environment manually using the rules as a guide.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Required: [var]``PATH`` variable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This variable is set by the postflight script to prepend the MacPorts executable paths to the current path as shown.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This puts the MacPorts paths at the front of [var]``PATH`` so that the MacPorts binaries will take precedence over vendor-supplied binaries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+export PATH=/opt/local/bin:/opt/local/sbin:$PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The user environment's $PATH is not in effect while ports are being installed, because the $PATH is scrubbed before ports are installed, and restored afterwards.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To change the search path for locating system executables (rsync, tar, etc.) during port installation, see the <<_internals.configuration_files.macports_conf,macports.conf>> file variable [var]``binpath``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+But changing this variable is for advanced users only, and is not generally needed or recommended.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Optional: [var]``MANPATH`` variable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Condition: If prior to MacPorts installation a [var]``MANPATH`` variable exists in a current [path]_.profile_ that contains neither the value [path]_${prefix}/share/man,_ nor any empty values, the postflight script sets the [var]``MANPATH`` variable as shown below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Otherwise, the [var]``MANPATH`` variable is omitted.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+export MANPATH=/opt/local/share/man:$MANPATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Here are some examples of paths that contain empty values:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// <simplelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <member>/usr/share/man:</member>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <member>:/usr/share/man</member>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <member>/usr/share/man::/usr/X11R6/man</member>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </simplelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Optional: [var]``DISPLAY`` variable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Condition: If installing on a Mac OS X version earlier than 10.5 (Leopard), and if a shell configuration file exists at time of MacPorts installation without a [var]``DISPLAY`` variable, the postflight script sets a [var]``DISPLAY`` variable as shown below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The [var]``DISPLAY`` variable is always omitted on Mac OS X 10.5 or higher.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+export DISPLAY=:0.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.shell.verifyprofile]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Verify the Configuration File
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To verify that the file containing the MacPorts variables is in effect, type `env` in the terminal to verify the current environment settings after the file has been created.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Example output for `env` is shown below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Changes to shell configuration files do not take effect until a new terminal session is opened.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MANPATH=
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TERM_PROGRAM=Apple_Terminal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TERM=xterm-color
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SHELL=/bin/bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TERM_PROGRAM_VERSION=237
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+USER=joebob
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+__CF_USER_TEXT_ENCODING=0x1FC:0:0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PATH=/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PWD=/Users/joebob
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+EDITOR=/usr/bin/pico
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SHLVL=1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+HOME=/Users/joebob
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LOGNAME=joebob
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+DISPLAY=:0.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SECURITYSESSIONID=b0cea0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+_=/usr/bin/env
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_installing.shell.editorvar]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Optional Editor Variables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You can set an environment variable in order to use your favorite text editor with the `port edit` command.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts will check [var]``MP_EDITOR``, [var]``VISUAL`` and [var]``EDITOR`` in this order, allowing you to either use a default editor shared with other programs ([var]``VISUAL`` and [var]``EDITOR``) or a MacPorts-specific one ([var]``MP_EDITOR``).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, to use the nano editor, add this line to your bash config:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+export EDITOR=/usr/bin/nano
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To use the user-friendly GUI editor link:BBEdit (installation required), add this line:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+export EDITOR=/Applications/BBEdit.app/Contents/Helpers/bbedit_tool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To keep a command-line text editor as default while using BBEdit with portfiles, add this:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+export EDITOR=/usr/bin/vi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+export MP_EDITOR=/Applications/BBEdit.app/Contents/Helpers/bbedit_tool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/internals-hier.adoc b/guide/adoc/internals-hier.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..57e9a11
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/internals-hier.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,374 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// <refentry xml:id="porthier">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   <refmeta>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <refentrytitle>PORTHIER</refentrytitle>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <manvolnum>7</manvolnum>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   </refmeta>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   <refnamediv>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <refname>porthier</refname>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <refpurpose>layout of the ports filesystems</refpurpose>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   </refnamediv>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   <refsection>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <title>Description</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <para>A map of the filesystem hierarchy used by MacPorts and the ports it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     installs. Much of it is based on <citerefentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <refentrytitle>hier</refentrytitle>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <manvolnum>7</manvolnum>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </citerefentry>.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <term><varname>${prefix}</varname></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para>The base of the MacPorts filesystem hierarchy.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para>Default: <filename>/opt/local/</filename></para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>bin/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>Common utilities, programming tools, and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 applications.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>etc/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>System configuration files and scripts.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>include/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>Standard C include files.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>lib/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>Archive libraries.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>libexec/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>System daemons and system utilities (executed by other
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 programs).</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>Library/Frameworks/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>Native macOS frameworks.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>sbin/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>System programs and administration utilities.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>share/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>Architecture-independent files.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>doc/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Miscellaneous documentation.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>examples/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Examples for users and programmers.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>info/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>GNU Info hypertext system.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>locale/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Localization files.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>man/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Manual pages.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>misc/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Miscellaneous system-wide ASCII text files.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>src/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>Source code.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>var/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>Multi-purpose log, temporary, transient and spool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 files.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>db/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Miscellaneous automatically generated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       system-specific database files.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>macports/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>MacPorts package building topdir.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <term><filename>build/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             <para>Where ports are built and destrooted.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <term><filename>distfiles/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             <para>Storage location for the distfiles of fetched
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             ports.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <term><filename>packages/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             <para>Obsolete. Formerly contained archives (packages) of installed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             ports.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <term><filename>receipts/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             <para>Obsolete. Formerly contained the registry information and receipts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             for installed ports, in flat-file format.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <term><filename>registry/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             <para>Contains the registry database in sqlite format.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <term><filename>software/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             <para>The files for each installed port are stored here.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <term><filename>sources/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             <para>Holds the sources for the ports tree (the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                             Portfiles) and also MacPorts base.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                           </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                         </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>spool/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Directory containing output spool files.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>log/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Miscellaneous system log files.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>run/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>System information files describing various
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       information about the system since it was booted.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <term><filename>www/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <para>Files to be served by an http server.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <term><filename>cgi-bin/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                       <para>Directory for cgi executables.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                     </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                   </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//                 </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//               </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//             </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       <varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <term><filename>/Applications/MacPorts/</filename></term>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//           <para>Native macOS applications.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         </listitem>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </varlistentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     </variablelist>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   </refsection>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   <refsection>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <title>SEE ALSO</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <para><citerefentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <refentrytitle>port</refentrytitle>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <manvolnum>1</manvolnum>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </citerefentry>, <citerefentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <refentrytitle>macports.conf</refentrytitle>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <manvolnum>5</manvolnum>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </citerefentry>, <citerefentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <refentrytitle>portfile</refentrytitle>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <manvolnum>7</manvolnum>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </citerefentry>, <citerefentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <refentrytitle>portgroup</refentrytitle>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <manvolnum>7</manvolnum>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </citerefentry>, <citerefentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <refentrytitle>portstyle</refentrytitle>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <manvolnum>7</manvolnum>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </citerefentry>, <citerefentry>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <refentrytitle>hier</refentrytitle>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//         <manvolnum>7</manvolnum>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//       </citerefentry></para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   </refsection>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   <refsection>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <title>AUTHORS</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <para>Felix Kroniage <email>fkr@opendarwin.org</email></para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//     <para>Juan Manuel Palacios <email>jmpp@macports.org</email></para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+//   </refsection>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// </refentry>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/internals-tests.adoc b/guide/adoc/internals-tests.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..7f7a307
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/internals-tests.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,206 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.tests]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Tests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts testing framework uses link:tcltest for its unit tests as well as regression tests.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The framework was developed during Google Summer of Code 2013 by Marius Coțofană (marius@). 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To keep things simple, each module of MacPorts ( link:macports1.0, link:package1.0, link:port1.0, link:registry2.0 ) has its own [path]_tests/_ directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Each Tcl script in a module (e.g. link:macports.tcl) has its own test script located in the [path]_tests_ directory, with the same name and the '.test' extension (e.g. link:macports.test). Every proc in a script (e.g. ``proc macports::findBinary``) should have its own test proc (e.g. ``test findBinary``) in the corresponding test file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Test procs should maintain the order in the original script and should be independent one of another. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.tests.running]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Running tests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Tests can be run only on an installed version of MacPorts (so make sure you have run ``sudo make install``). 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The easiest way to run all the tests, is to use the target in the Makefile. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ make test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Each [path]_tests/_ directory has a [path]_test.tcl_ file, used by the make target to run all tests and format the output, making it easy to read.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The script just runs the tests individually, printing the test file name, the total number of tests, number of passed, skipped, failed as well as constraints or errors of failed tests.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is one possible output when running [path]_macports.test_: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Total:31 Passed:31 Failed:0 Skipped:0  macports.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Many tests need root privileges to run correctly, but will be auto skipped in the other case.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Constraints are printed just below the final result, together with the number of test cases that require it, as so: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Total:31 Passed:24 Failed:0 Skipped:7  macports.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Constraint: 7  root
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The stack trace of an error that occurs during a test is printed below the constraints (if any). 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The file can be used also to: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* run all tests: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ tclsh test.tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* get debug info: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ tclsh test.tcl -debug \[0-3\]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* list individual test files: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ tclsh test.tcl -l
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* run specific test files: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ tclsh test.tcl -t macports.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* print help message: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ tclsh test.tcl -h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Specific test cases can be run using the `'-match'` argument for the file that contains the test, from its parent directory. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ tclsh macports.test -match mportclose
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Regression tests can be found in link:tests/test/ and can be run just as unit tests, using `make test` from the parent directory. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.tests.mustknow]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Must know
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* regression tests have their own directory, found in link:trunk/base/tests/test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* each module of MacPorts (port1.0, macports1.0, package1.0) has its own '`tests/`' directory where the test files are located and also additional files needed (Portfile, test.tcl)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* each file in a module has a corresponding test file (.test extension) in the '`tests/`' directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* each proc in a file has a corresponding test case (test proc_name) in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* each test case must be independent from each other, so they can be run individually if needed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* each test must clean all auxiliary files or directories it creates and revert all ports it installs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* use a single test procedure for each tested proc; sub-test cases should be included in the same body
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* when adding new regression tests, make sure to specify its name in the test_suite list of 'trunk/base/tests/test.tcl'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* variables used in tests can be set at install-time using the '[module]_test_autoconf.tcl.in' file in each module (macports_autoconf.tcl.in, port_autoconf.tcl.in)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* for some tests in package1.0, an update of the ports tree is required; this is done automatically if they are run using the 'test' target in the Makefile, with root privileges 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.tests.sample_file]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Sample file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# include required tcltest package and set namespace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+package require tcltest 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+namespace import tcltest::*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# get absolute path to current ‘tests/’ directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pwd [file normalize $argv0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pwd [eval file join {*}[lrange [file split $pwd] 0 end-1]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the macports_fastload.tcl file needs to be sourced so we
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# can directly require packages later on; we can use the autoconf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# file to get the path to the file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+source ../port_test_autoconf.tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+source $macports::autoconf::macports_tcl_dir/macports1.0/macports_fastload.tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+package require macports 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# source/require tested/needed files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# source ../../port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+package require portutil 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# use custom macports.conf and sources.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# you need to provide the sources.conf (see additional files) file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+makeDirectory $pwd/tmpdir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+makeDirectory $pwd/tmpdir/share
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+makeDirectory $pwd/tmpdir/var/macports/registry
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set fd [open $pwd/tmpdir/macports.conf w+]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+puts $fd "portdbpath $pwd/tmpdir/var/macports"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+puts $fd "prefix $pwd/tmpdir"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+puts $fd "variants_conf $pwd/tmpdir/variants.conf"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+puts $fd "sources_conf $pwd/sources.conf"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+puts $fd "applications_dir $pwd/tmpdir/Applications"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+puts $fd "frameworks_dir $pwd/tmpdir/Library/Frameworks"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+close $fd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set env(PORTSRC) $pwd/tmpdir/macports.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+file link -symbolic $pwd/tmpdir/share/macports $macports::autoconf::prefix/share/macports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+close [open $pwd/tmpdir/variants.conf w+]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# debug options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# ports_debug and ports_verbose are commented out as default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# need to be set before ‘mportinit’
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+array set ui_options {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#set ui_options(ports_debug)   yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#set ui_options(ports_verbose) yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+mportinit ui_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# if you need to use procs from macports namespace, that are just aliases, you can
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# always source library.tcl (see additional files) which provides a copy macports::worker_init
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# without sub-interpreters; it also sets some important environment variables like
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# os.platform, os.major, os.arch, workpath, destpath, portpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# some other option would be to get the $workername from a $mport and use it directly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# additional procs needed for testing go before the actual test cases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# test case example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the test name must reflect the tested proc (remove namespaces if any)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the test description should list specific values from the tested proc on which it depends
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# or the partial cases it tests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test mportclose {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Mport close unit test.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# this branch is optional and you can use other constraints too
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} -constraints {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    root
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the setup branch is optional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} -setup {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set mport [mportopen file://.]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# please make output as useful as possible (even error cases)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# all sub-test cases should be part of the body branch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} -body {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[catch {mportclose $mport}] != 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return "FAIL: cannot run mportclose"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return "Mport close successful."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the cleanup branch is optional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} -cleanup {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    file delete -force $pwd/work
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} -result "Mport close successful."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# print test results
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cleanupTests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.tests.addtional_files]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Additional files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* In all tests we use this link:Portfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* This is the link:test.tcl file used to run and parse the output of all the tests in a module.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* A worker_init copy, without using sub-interpreters link:library.tcl.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example of link:sources.conf.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* An example of a test file link:macports.test.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* A link:library.tcl of useful procs in regression testing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.tests.resources]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Resources
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* link:Tcltest official wiki page
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* link:Getting started with tcltest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* link:Official tcltest documentation
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/internals.adoc b/guide/adoc/internals.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..0e17366
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/internals.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,249 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= MacPorts Internals
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:doctype: book
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:toc: left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:icons: font
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:experimental:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sourcedir: .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This chapter contains information about the MacPorts file layout, configuration files, a few fundamental port installation concepts, and the MacPorts APIs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.hierarchy]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== File Hierarchy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::internals-hier.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::macports.conf.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.images]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Port Images
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts has a unique ability to allow multiple versions, revisions, and variants of the same port to be installed at the same time, so you may test new port versions without uninstalling a previous working version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This capability derives from the fact that a MacPorts port by default is not installed into its final or "`activated`" location, but rather to an intermediate location that is only made available to other ports and end-users after an activation phase that extracts all its files from the image repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Deactivating a port only removes the files from their activated locations (usually under [var]``${prefix}``)--the deactivated port's image is not disturbed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The location of an installed port's image can be seen by running: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% port location PORTNAME
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.apis]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== APIs and Libs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts system is composed of three Tcl libraries:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* MacPorts API - MacPorts public API for handling Portfiles, dependencies, and registry
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Ports API - API for Portfile parsing and execution
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* pextlib - C extensions to Tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.apis.ports]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Ports API
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The code for the Port API is located in [path]_base/src/port1.0_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The Port API provides all the primitives required for a Portfile to be parsed, queried, and executed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It also provides a single procedure call that the MacPorts API uses to kick off execution: ``eval_targets``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The port Tcl library supplies these procedures, all of which are generated at run-time using the `options` procedure in portutil.tcl.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The macports Tcl library loads the Portfile into a sub-interpreter, within which all port-specific code is run.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This process ensures that there will never be pollution of the Tcl space of other ports, nor the MacPorts libraries, nor the calling application.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles are executed in a Tcl interpreter as Tcl code (and not truly parsed strictly speaking), so every Portfile option must be a Tcl procedure.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The Ports API performs the following functions:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Manages target registrations. All targets register themselves with the Port API. Accordingly, the Port API creates pre-/post-/main overrides for each of the targets.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Option/Default handling. All Portfile options (name, version, revision ...) are registered by targets. The Port API creates procedures for these options, and sets up the complex variable traces necessary to support option defaults.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Executes target procedures, including the pre/post/main routines.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Manages a state file containing information about what variants were specified and what targets have run successfully.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Provides essential Portfile Tcl extensions (reinplace, xinstall, etc).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Provides simple access to the ui_event mechanism by providing the various ui_ procedures (i.e., ui_msg, ui_error).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.apis.macports]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== MacPorts API
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The code for the MacPorts API is located in [path]_base/src/macports1.0_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts API provides a public API into the MacPorts system by providing simple primitives for handling Portfiles, dependencies, and registry operations, and exports the MacPorts API for the `port` command line utility, or any other.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The API has very little information about the contents Portfiles; instead, it relies entirely upon the `port` Tcl library.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+By keeping the high level API simple and generic, revisions to the underlying ports system will not necessarily require a revision of the high level MacPorts API.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts API is also responsible for loading user specified options into a sub-interpreter to be evaluated by the ports API.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In that case it sets the variable name in the sub-interpreter and adds the option to the sub-interpreter's global array user_options(). User options are passed as part of the call to ``mportopen``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts API performs the following functions:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Dependency support.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is implemented in a highly generic fashion, and is used throughout the system.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The dependency functions are exported to the Port API, and the Port API uses them to execute targets in the correct order.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Dependency processing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Software dependencies are handled at this layer using the dependency support layer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* UI abstractions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+UI Abstractions are handled at this layer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Each port action is provided a context, and a mechanism for posting user interface events is exported to the Port API (ui_event).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Registry management routines.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Manages the SQLite port registry in [path]_${prefix}/var/macports/registry/_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See also <<_internals.registry>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Exports the MacPorts API for use by client applications.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following routines are defined.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `mportinit:` Initializes the MacPorts system. Should be called before trying to use any other procedure.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `mportsearch:` Given a regexp, searches the [path]_PortIndex_ for ports with matching names.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `mportopen:` Given a URI to a port, opens a Portfile and returns an opaque handle to it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `mportclose:` Given a port handle, closes a Portfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `mportexec:` Given a port handle, executes a target (e.g., install).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `mportinfo:` Given a port handle, this returns the PortInfo array (as a flat list of array elements). This is a little tricky and unstable and only used by ``portindex``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `mportdepends:` Given a port handle, returns a list of ports upon which the specified port depends.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For an example of the MacPorts API, when one executes ``port search cm3``, the port utility:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Calls the `mportsearch` function to find all ports containing "`cm3`".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Returns Tcl array(s) containing data from the [path]_PortIndex_: port name, version, revision, variants, etc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Formats the list of arrays in the standard viewing format.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For another MacPorts API example, when one executes ``port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      install cm3``, the port utility:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Calls the `mportsearch` function to find the first port that matches the name "`cm3`".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Calls the `mportopen` function to open the port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Calls the `mportexec` function to execute the install target in the port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Calls the `mportclose` function to close the port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.apis.pextlib]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== pextlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The pextlib Tcl library provides a variety of C extensions to add capabilities to Tcl procedures; for example, an interface to flock(2) and mkstemp(3).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.registry]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== The MacPorts Registry
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This chapter provides an overview of the MacPorts registry and its API.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The registry is queried by MacPorts utilities for information about installed ports related to dependencies, port images, and simple user information about what is installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It provides abstraction over a modular receipt storage layer; where the default format is a SQLite database.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The registry allows MacPorts utilities to:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Modify receipts to reflect changes made to installed ports being maintained by MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Query the global file and dependency databases for file conflicts between a port being installed and a port already installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Maintain dependency trees of installed ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.registry.files]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Registry Files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The SQLite registry used by default is located at [path]_${portdbpath}/registry_, which by default would be [path]_${prefix}/var/macports/registry_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+All data is stored in a single file named [path]_registry.db_, although the additional directory [path]_portfiles_ is used temporarily for extracting stored Portfiles from the registry.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Furthermore, access to the registry may be locked using [path]_.registry.lock_ with the `registry::exclusive_lock` and `registry::exclusive_unlock` APIs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The legacy flat file registry files are contained in [path]_${portdbpath}/receipts_, which by default is location [path]_${prefix}/var/macports/receipts_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+File mappings and dependency mappings are tracked in the flat file registry by [path]_file_map.db_ and [path]_dep_map.bz2_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If found, these will be automatically converted to the new SQLite registry. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.registry.api]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== The Registry API
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts registry provides a public API in the registry1.0 Tcl package.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Using this API listed below you can access the MacPorts Registry using the default receipt storage mechanism chosen in [path]_macports.conf_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::new_entry {name version {revision 0} {variants ""}}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Begin the creation of a new registry entry for the given port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns a reference ID to the registry entry created.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::open_entry {name {version 0} {revision 0} {variants ""}}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Opens an existing registry entry.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns a reference ID to the registry entry that was opened.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::entry_exists {name version {revision 0} {variants ""}}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Checks to see if a port exists in the registry.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns 1 if the entry exists, 0 if not.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::write_entry {ref}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Writes the receipt associated with the given reference.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::delete_entry {ref}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Deletes the receipt associated with the given reference.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::property_store {ref property value}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Store the given value with the property name in the receipt associated with the given reference.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::property_retrieve {ref property}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Retrieve the property name from the receipt associated with the given reference.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns the value of the property, if the property exists.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::installed {{name ""} {version ""}}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Get all installed ports, optionally all installed ports matching the given name, or the given name and version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns a list of the installed ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::location {portname portversion}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns the physical location the port is installed in on the disk.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is primarily useful for finding out where a port image is installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::open_file_map {args}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Opens the file map that contains file-port relationships.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::file_registered {file}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns the name of the port that owns the given file, if the file is registered as installed, and 0 otherwise.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::port_registered {name}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns a list of all files associated with the given port if that port is installed, and 0 otherwise.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::register_file {file port}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Registers the given file in the file map as belonging to the given port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::unregister_file {file}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Removes the file from the file map.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::write_file_map {args}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Write the changes to the file map.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::open_dep_map {args}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Opens the dependency map that contains port dependency relationships.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::fileinfo_for_file {fname}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns a list for the given file name representing all data currently known about the file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is a 6-tuple in the form of:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. file path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. uid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. gid
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. mode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. size
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. md5 checksum
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::fileinfo_for_index {flist}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns a list of information concerning each file in the given file list, if that file exists in the registry.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The information if obtained through registry::fileinfo_for_file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::list_depends {name}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns a list of all the ports that given port name depends on.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::list_dependents {name}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns a list of all the ports that depend on the given port name.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::register_dep {dep type port}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Registers the given dependency as the given type of dependency with the given port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::unregister_dep {dep type port}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Unregister the given dependency of the given type as a dependency of the given port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`registry::write_dep_map {args}`::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Write changes to the dependency map.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::internals-tests.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/intro.adoc b/guide/adoc/intro.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..e4dee1d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/intro.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,48 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Introduction
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:doctype: book
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:toc: left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:icons: font
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:experimental:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sourcedir: .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts is an easy to use system for compiling, installing, and managing open source software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts may be conceptually divided into two main parts: the infrastructure, known as MacPorts base, and the set of available ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A MacPorts port is a set of specifications contained in a <<_development.introduction,Portfile>> that defines an application, its characteristics, and any files or special instructions required to install it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This allows you to use a single command to tell MacPorts to automatically download, compile, and install applications and libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+But using MacPorts to manage your open source software provides several other significant advantages.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, MacPorts:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Installs automatically any required support software, known as <<_reference.dependencies,dependencies>>, for a given port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Provides for uninstalls and upgrades for installed ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Confines ported software to a private "`sandbox`" that keeps it from intermingling with your operating system and its vendor-supplied software to prevent them from becoming corrupted.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Allows you to create pre-compiled binary installers of ported applications to quickly install software on remote computers without compiling from source code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts is developed on macOS, though it is designed to be portable so it can work on other Unix-like systems, especially those descended from the Berkeley Software Distribution (BSD). In practice, installing ports only works on macOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts base can be compiled on Linux (and possibly other POSIX-compatible systems) where it is mainly used to set up mirrors and generate support files for installations on macOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following notational conventions are used in the MacPorts Guide to distinguish between terminal input/output, file text, and other special text types.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Terminal I/O and file text.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$ Commands to be typed into a terminal window.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Command output to a terminal window.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+File text.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Other special text types.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** A hyperlink: link:spontaneous combustion.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** A file: [path]_/var/log/system.log_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** A command: ``ifconfig``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** An option: port [option]``install``
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/macports.conf.adoc b/guide/adoc/macports.conf.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d8e9cf0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/macports.conf.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,238 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.configuration_files]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Configuration Files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts configuration files often do not need to be modified for the general end user.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+They contain options that may be of use to advanced users and port developers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Some automatically configured options may need to be updated when migrating to a new CPU architecture or a new OS version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There are three MacPorts configuration files that define important variables used by the MacPorts system: [path]_macports.conf_, [path]_sources.conf_, and [path]_variants.conf_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+All MacPorts configurations files are located in [path]_${prefix}/etc/macports_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts configuration file format is a simple key/value pair separated by either a space or a tab.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Lines beginning with '#' are comments, empty lines are ignored.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.configuration_files.macports_conf]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== macports.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+macports.conf is the configuration file used to bootstrap the MacPorts system.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This file is read by the port command and determines how it behaves.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Options locating other .conf files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sources_conf::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Where to find the sources list.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_${prefix}/etc/macports/sources.conf_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variants_conf::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Where to find global variants definition file (optional).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_${prefix}/etc/macports/variants.conf_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Options for MacPorts general operating characteristics.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+prefix::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets the directory where ports are installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Any path may be used but those with spaces and/or non-ASCII characters should be avoided because it can break some ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_/opt/local_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+portdbpath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Directory where MacPorts keeps working data such as downloaded sources, installed port receipts, and the main registry.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Same path restrictions apply as for '${prefix}'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: ${prefix}/var/macports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+portdbformat::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Formerly selected the storage type to use for the MacPorts registry: flat or sqlite.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Currently, only sqlite can be used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``sqlite``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build_arch::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The machine architecture for which to build in normal use.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Options include: ppc, i386, ppc64, x86_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Snow Leopard and later) [option]``x86_64`` or [option]``i386`` depending on hardware
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Leopard/Tiger) [option]``i386`` or [option]``ppc`` depending on hardware
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+applications_dir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Directory in which ports will install native macOS application bundles.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_/Applications/MacPorts_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+frameworks_dir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Directory in which ports will install native macOS frameworks.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_${prefix}/Library/Frameworks_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+developer_dir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Directory where Xcode is installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_/Developer_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+buildfromsource::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Controls whether ports are built from source or downloaded as pre-built archives.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Setting to 'always' will never use archives, 'never' will always try to use an archive and fail if one is not available.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+'ifneeded' will try to fetch an archive and fall back to building from source if that isn't possible.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``ifneeded``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+portarchivetype::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Format of archives in which to store port images.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This controls both the type of archive created locally after building from source, and the type to request from remote servers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Changing this will not affect the usability of already installed archives; they can be of any supported type.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Supported types are: tgz, tar, tbz, tbz2, tlz, txz, xar, zip, cpgz, cpio
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_tbz2_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configureccache::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use ccache (C/C++ compiler cache) - see https://ccache.samba.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configuredistcc::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use distcc (distributed compiler) - see https://distcc.samba.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configurepipe::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use pipes rather than intermediate files when compiling C/C++/etc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``yes``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+buildnicevalue::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Lowered scheduling priority (0-20) to use for make when building ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+buildmakejobs::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Number of simultaneous make jobs (commands) to use when building ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Using "`0`" will cause a runtime autodetection to use all available processor cores.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+portautoclean::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set whether to automatically execute "`clean`" after "`install`" of ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``yes``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rsync_server::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Rsync server from which to fetch MacPorts sources.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: rsync.macports.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rsync_dir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Rsync directory from which to pull the base/ component (infrastructure) of MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_release/tarballs/base.tar_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rsync_options::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Rsync options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: -rtzv --delete-after
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot_umask::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Umask value to use during the destrooting of a port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: 022
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+binpath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets env(PATH), the directory search path for locating system executables (rsync, tar, etc.) during port installation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Only applications in these directories are available while ports are being installed even if other paths are specified by $PATH in a user's environment.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: ${prefix}/bin:${prefix}/sbin:/bin:/sbin:/usr/bin:/usr/sbin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The binpath is implicitly defined, but it may be overwritten by defining the variable in macports.conf.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, using a non-default binpath is discouraged and should only be performed by advanced users.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+host_blacklist::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Space-separated list of download hosts that should not be used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This feature is especially useful if a host turns out to be consistently slow and therefore should be excluded for MacPorts' actions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+preferred_hosts::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Space-separated list of download hosts that should be used preferentially.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revupgrade_autorun::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Controls whether the rev-upgrade action will be run automatically after upgrading ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revupgrade_mode::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Controls the rev-upgrade functionality which checks for broken linking and can rebuild ports to fix it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+'rebuild' means ports will automatically be rebuilt when broken linking is detected in their files, while 'report' means broken files will be scanned for and reported but the ports will not be rebuilt.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: rebuild
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Options for MacPorts Universal Binaries (+universal variant)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+universal_archs::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The machine architectures to use for +universal variant (multiple entries must be space delimited). Options include: ppc, i386, ppc64, x86_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``x86_64 i386`` ([option]``ppc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+i386`` for 10.5 and earlier)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Options for StartupItems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem_type::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Options for generated startup items, though this may be overridden by the `startupitem.type` Portfile key.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Options are "`default`" option, "`SystemStarter`", "`launchd`", or "`none`".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For an empty or "`default`" option, a startupitem type appropriate to the platform is used; if "`none`", no port startupitems are installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``default``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem_install::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Create system-level symlinks to generated StartupItems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If set to "`no`", symlinks will not be created; otherwise, symlinks will be placed in [path]_/Library/LaunchDaemons_ or [path]_/Library/LaunchAgents_ as appropriate.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This setting only applies when building ports from source.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [option]``yes``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Other options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extra_env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Extra environment variables to keep.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Any variables listed here are added to the list of variables that are not removed from the environment used while processing ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+place_worksymlink::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set whether to place a symlink named "`work`" from your ports tree to  the build directory of a port, when the port is being built.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is convenient, but may not be ideal if you care about the structure of your ports tree.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, some developers keep their ports tree synchronized across multiple computers, and don't want to also synch build directories. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.configuration_files.sources_conf]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== sources.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This file enables rsync synchronization of the default ports tree with the MacPorts rsync server when either of the commands `port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    selfupdate` or `port sync` are run.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_rsync://rsync.macports.org/macports/release/tarballs/ports.tar [default]_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Optional local repositories are enabled using a file url: [replaceable]``file:///path/to/localportsrepository``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_internals.configuration_files.variants_conf]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== variants.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This optional file specifies any variants you'd like to be invoked globally.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a variant specified in this file is not supported by a given Portfile, the variant is simply ignored.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: none
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/macros.adoc b/guide/adoc/macros.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..054d73c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/macros.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Macros
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:doctype: book
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:toc: left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:icons: font
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:experimental:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sourcedir: .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[WARNING]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This section is outdated and needs to be reworked.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Please see <<_project.docs>> if you can contribute updated instructions. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfile-dependencies.adoc b/guide/adoc/portfile-dependencies.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d6dfc22
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfile-dependencies.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,76 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.dependencies]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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 "`dependencies`".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The keywords used when specifying dependencies in a Portfile are related to port install phases, and they refer to what are called library, build, fetch, extract and run dependencies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Though all of them install dependencies before a given port is installed, specifying dependencies with the correct keyword is important for proper port upgrade and uninstall behavior, or when running targets other than install.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, you may not uninstall a port that is a library dependency for another installed port, though you may remove one that is a build dependency.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Likewise, if you run the fetch target for a port, only the fetch dependencies will be installed first, so they should be all that is needed for that target.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_fetch::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of dependencies to check before phases [option]``fetch``, [option]``checksum``, [option]``extract``, [option]``patch``, [option]``configure``, [option]``build``, [option]``destroot``, [option]``install``, and [option]``package``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fetch dependencies are needed to download the distfiles for a port, and are not needed at all once the software is installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_extract::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of dependencies to check before phases [option]``extract``, [option]``patch``, [option]``configure``, [option]``build``, [option]``destroot``, [option]``install``, and [option]``package``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Extract dependencies are needed to unpack a port's distfiles into the work directory, and are not needed at all once the software is installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of dependencies to check before phases [option]``configure``, [option]``build``, [option]``destroot``, [option]``install``, and [option]``package``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Build dependencies are needed when software is being built, but not needed at all once it is installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of dependencies to check before phases [option]``configure``, [option]``build``, [option]``destroot``, [option]``install``, and [option]``package``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Library dependencies are needed both at build time (for headers and libraries to link against) and at run time.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_test::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of dependencies to check before phase [option]``test``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Test dependencies are only needed when the port enables testing (i.e. [option]``test.run            yes``). 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of dependencies to check before phases [option]``destroot``, [option]``install``, and [option]``package``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Run dependencies are needed when the software is run, but not to compile it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.dependencies.types]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Port and File Dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There are two types of dependencies: port dependencies and file dependencies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Port dependencies can be satisfied by reference to a port (the MacPorts registry is queried), or by reference to a file (whether provided by a port or not). The most commonly-used type of dependencies in Portfiles are port dependencies, because dependencies should be provided by MacPorts ported software whenever possible, and usually only one port can provide the needed libraries and files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+But when satisfying a dependency with vendor-supplied software is preferred for special reasons, or when it is possible for more than one port to satisfy a dependency, then file dependencies may be used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An example of the former is with ubiquitous utilities like awk, grep, make or sed, where the versions in macOS are often sufficient; an example of the latter is with "`-devel`" ports--these ports provide a different version of the same files (though only one can be activated at a time).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Port dependencies, the preferred type, are specified as shown in these examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib         port:rrdtool port:apache2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build       port:libtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run         port:apache2 port:php5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+File dependencies should only be used if one of the reasons listed above applies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There are three types: [option]``bin`` for programs, [option]``lib`` for libraries, and [option]``path`` for any installed file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+File dependencies are specified in the form: [replaceable]``<type>``:[replaceable]``<filespec>``:[replaceable]``<port>``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For [option]``bin`` dependencies, [replaceable]``<filespec>`` is the name of a program in a bin directory like [path]_${prefix}/bin_, /usr/bin, /bin, and the associated sbin directories.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For [option]``lib`` dependencies, [replaceable]``<filespec>`` is the name of a library (but without its extension) in a lib directory like [path]_${prefix}/lib_, /usr/lib, /lib, some Framework directories, and those found in environment variables like DYLD_LIBRARY_PATH.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For [option]``path`` dependencies, [replaceable]``<filespec>`` is the complete absolute path to the file, or more usually, when the file is inside [path]_${prefix}_, it is specified relative to [path]_${prefix}_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Since [option]``path`` dependencies are the only ones which would find files only in an absolute path or a path inside [path]_${prefix}_ they are - in cases when a port needs to be more restrictive - often used instead of [option]``bin`` and [option]``lib`` dependencies .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Note that the [replaceable]``<port>`` specified is only installed if the specified library, binary, or file is not found.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See the examples below:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib         lib:libX11.6:xorg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build       bin:glibtool:libtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run         path:lib/libltdl.a:libtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfile-keywords.adoc b/guide/adoc/portfile-keywords.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..81daf1a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfile-keywords.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,232 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.keywords]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Global Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Keywords are to be used within the "`global`" and "`variant`" sections of Portfiles, and not within optional port phase declarations.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The first non-comment line of every Portfile; it should be followed by PortGroup inclusions (if any) and then a blank line.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It defines which version of the Portfile interpreter will be used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(There is currently only one version.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The name of the port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To avoid special interpretation by shells and the like, names should contain only alphanumeric characters, underscores, dashes or dots.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For projects whose proper names contain "`+`" characters, change these to "`x`" (e.g., "`libstdc++`" becomes "`libstdcxx`").
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                foo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The version of the ported software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             1.23.45
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Optional keyword (default is 0) that is used to track port revisions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It should be used if a bug in the Portfile was found and all installations of this port have to be updated.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the change only affects new installations, there is no need to increase it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+epoch::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An optional keyword (default value is 0) that must be used when a port is updated to a version that is numerically less than the previous version, for example 1.10 -> 1.2 or 20070928 -> 1.0.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Some Portfile authors have used large epoch values that look like a date, but there is no reason to do so.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The epoch is simply an unsigned integer, and the only requirement is that it never be decreased.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+epoch               1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An epoch is not needed for most ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a port's version numbers advance in normal dotted-decimal sequence, there is no reason to add an epoch.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The category under which the ported software falls.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The first category should be the same as the directory within which the Portfile is stored; secondary and tertiary categories may be selected.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          net security
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A port's maintainers are the people who have agreed to take responsibility for keeping the port up-to-date.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Most ports have only a single maintainer, but some ports have two or more co-maintainers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The `maintainers` keyword lists the maintainers' GitHub usernames or email addresses.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+GitHub usernames start with an `@` symbol.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Email addresses are preferably listed in the obfuscated form below to hide them from spambots:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* For addresses in domain @macports.org, simply omit the domain name.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* For addresses in other domains, e.g., 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// <email>account@example.org</email>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+, use the convention `example.org:account` to specify the address.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In the example below, the port is maintained by a GitHub user named neverpanic, and the owners of the two email addresses 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// <email>jdoe@macports.org</email>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ and 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// <email>julesverne@example.org</email>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         @neverpanic \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    jdoe \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    example.org:julesverne
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Braces can be used to express that these refer to the same person, for example the GitHub username and an email.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In the following example, the port is maintained by a GitHub user named jverne, that can also be contacted directly at 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// <email>julesverne@example.org</email>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$$.$$
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@jverne example.org:julesverne}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The address `nomaintainer` designates a port that is not maintained by anybody and may be modified by any committer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Feel free to claim maintainership of a nomaintainer port if desired.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The address `openmaintainer` designates a port that has a maintainer who allows minor changes to be committed without his or her prior approval.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Port maintainers who are not committers are encouraged to add `openmaintainer` to their ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A one-sentence description of the ported software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         A classic shooter arcade game.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A long description of the ported software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Break long lines with escaped newlines.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    A classic shooter arcade game derived from \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    the game alien-munchers.  Not suitable for \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    children under two years old.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Port application's homepage.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://www.example.org/apps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A list of the platforms on which the port has been tested.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Required, but not interpreted in any way by the software at this time; it is purely informational for users.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Possible values: `darwin` (= `macosx` or ``puredarwin``), ``macosx``, ``puredarwin``, ``freebsd``, ``linux``, ``sunos``, ``netbsd``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In general, it can just be set to ``darwin``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(``puredarwin`` is an OS based on Apple's open-source Darwin releases without any of Apple's proprietary bits.) See also [var]``os.platform``. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The CPU architectures for which this port can be built.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Archs currently supported by macOS are: i386, ppc, ppc64, x86_64.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If this option is not set, it is assumed that the port can build for all archs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a port does not install any architecture-specific files, use the special value [option]``noarch``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the building architecture isn't among supported_archs, port fails with an error message, except when building on x86_64 and supported_archs contains i386 or when building on ppc64 and supported_archs contains ppc, in which case the port will be built in 32-bit mode.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs           i386 ppc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs           noarch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The proper format for license consists of the license name, followed by a hyphen and number if indicating a specific version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A space should be placed between licenses if there is more than one that applies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If an element in the license list is itself a list, it is interpreted as offering a choice of any one of the licenses in the sub-list. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the version number is a "`$$.$$0`" version, the "`$$.$$0`" should be omitted to make the version an integer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the author gives the choice of using a given license or "`any later version`" of it, append a plus sign (+) to the version number.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the version specified in this case is also the earliest version, just leave out the version number entirely since it implies all versions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license           GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license           {freetype GPL}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license_noconflict::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+By default, it is assumed that ports may use libraries or headers from their dependencies and thus form a derivative work.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A dependency with an incompatible license thus prevents the port from being distributed in binary form.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a dependency with an incompatible license is not used in such a way that a derivative work is formed, or should not prevent binary distribution for any other reason, add its name to this list. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license_noconflict openssl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license_noconflict readline gdbm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfile-livecheck.adoc b/guide/adoc/portfile-livecheck.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..af4e2c7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfile-livecheck.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,123 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.livecheck]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Livecheck / Distcheck
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Options livecheck and distcheck are especially useful for port maintainers, but others may also find this information valuable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Specify what kind of update check to perform.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Open source mirror site options are to use the project's latest file release from [option]``sourceforge`` or the project's `date_updated` XML tag for [option]``freecode``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These options are automatically used if a matching [var]``${master_sites}`` URL is used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Generic download site options are to specify a [option]``moddate`` (modification date of a URL resource), a [option]``regex`` (retrieve the version by applying a regex to a URL resource), [option]``regexm`` (retrieve the version by applying a multi-line regex to a URL resource), [option]``md5`` (compares the md5 sum of a URL resource) or [option]``none`` (no check).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``sourceforge`` or [option]``googlecode`` if the [var]``${master_sites}`` is one of these, else [option]``freecode``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Values: [option]``freecode``[option]``sourceforge``[option]``googlecode``[option]``moddate``[option]``regex``[option]``regexm``[option]``md5``[option]``none``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type     regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url       ${homepage}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex     "Generally Available (\\d+(?:\\.\\d+)*)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.name::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Name of the project for live checks.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Is only used with freecode, sourceforge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${name}`` or the sourceforge, freecode project name if it can be guessed from [var]``${master_sites}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.name      hibernate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.distname::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Name of the file release for sourceforge checks.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use the name of the package release.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You may use this keyword without `livecheck.version` if you replace the version part of the name with "``(.*)``".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: sourceforge: [var]``${livecheck.name}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.distname  faad2.src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.version::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Version of the project for a check; used for regex-based checks.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${version}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.version   ${name}-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+URL to query for a check.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** [var]``${homepage}`` or the first hit among the following sites:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `http://freecode.com/projects-xml/${livecheck.name}/${livecheck.name}.xml`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `https://sourceforge.net/api/file/index/project-name/${livecheck.name}/rss`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `https://code.google.com/p/${livecheck.name}/downloads/list`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url       https://ftp.gnu.org/gnu/bison/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Regular expression to parse the resource for regex checks.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Be sure to use a regular expression grouping around the version component.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Also remember that square brackets need to be quoted because Tcl otherwise interprets them as a procedure call.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex     4th-(\[a-z0-9.\]+)-unix${extract.suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.md5::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+md5 checksum to use for an md5 comparison.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.md5       37e6a5b6516a680c7178b72021d3b706
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Distcheck reports whether or not the distfile(s) specified in a Portfile are still available on the developer's download site.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Examples are given below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distcheck.check::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This option can be used to disable distcheck.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It specifies what kind of check should be performed on distfiles: [option]``moddate`` (check if the Portfile is older than the distfile) or [option]``none`` (no check).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``moddate``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distcheck.check     none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfile-phase.adoc b/guide/adoc/portfile-phase.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..a5a5e0c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfile-phase.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,1856 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Port Phases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.introduction]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Introduction
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts port installation process has a number of distinct phases that are described in detail in this section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The default scripts coded into MacPorts base performs the standard ``configure``, ``make``, and `make
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    install` steps.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For applications that do not conform to this standard, installation phases may be declared in a Portfile to <<_development.examples.augment,augment>> or <<_development.examples.override,override>> the default behavior as described in the <<_development,Portfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Development>> chapter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fetch the [var]``${distfiles}`` from [var]``${master_sites}`` and place it in [path]_${prefix}/var/macports/distfiles/${name}_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksum::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Compare [var]``${checksums}`` specified in a [path]_Portfile_ to the checksums of the fetched ${distfiles}.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Unzip and untar the [var]``${distfiles}`` into the path ${prefix}/var/macports/build/..../work
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Apply optional link:patch files specified in [var]``${patchfiles}`` to modify a port's source code file(s).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Execute [var]``${configure.cmd}`` in [var]``${worksrcpath}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Execute [var]``${build.cmd}`` in [var]``${worksrcpath}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Execute commands to run test suites bundled with a port, available only for a fraction of ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is an optional phase, run only if `port test` is executed, and always works with a build from source, not a binary.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A failure is only for the user's information, and does not block a subsequent installation from the build.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Execute the command `make install`[var]``DESTDIR=${destroot}``in [var]``${worksrcpath}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Using a link:DESTDIR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            variable is a part of standard GNU coding practices, and this variable must be supported in an application's install routines for MacPorts' destroot phase to work without manual Portfile scripting or source patching.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Urge developers to fully support [var]``DESTDIR`` in their applications.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Understanding the destroot phase is critical to understanding MacPorts, because, unlike some package management systems, MacPorts "`stages`" an installation into an intermediate location, not the final file destination.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts uses the destroot phase to provide:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Port uninstalls - a port's files may be cleanly uninstalled because all files and directories are recorded during install.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Multiple port versions may be installed on the same host, since a port's files are not directly inserted into [var]``${prefix}`` but rather hard-linked into [var]``${prefix}`` from an intermediate location during a later activation phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Any empty directories in [var]``${destroot}`` upon completion of the destroot phase are removed unless a directory name is placed in the value field of the optional `destroot.keepdirs` keyword.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Archive a port's destrooted files into [path]_${prefix}/var/macports/software_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See <<_internals.images,Port Images>> in the <<_internals,MacPorts Internals>> chapter for details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+activate::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Extract the port's files from the archive in [path]_${prefix}/var/macports/software_ to their final installed locations, usually inside [var]``${prefix}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.installation]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Installation Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Keywords are to be used within the "`global`" and "`variant`" sections of Portfiles, and not within optional port phase declarations.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In other words, port phase keywords are not located within port phase declarations, but rather they _refer_ to port phases and set options for those phases, and they take effect whether or not phase declarations have been explicitly defined in a Portfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.installation.list_modifiers]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Keyword List Modifiers (-append, -delete, -replace, -strsed)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Keyword list modifiers are keywords that end in -append, -delete or -replace.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Keywords that support list modifiers are identified under appropriate reference sections below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-append adds a value to the keyword, -delete removes a previously added item.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-replace takes two arguments and replaces the first value from the keyword with the second value.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-strsed treats the keyword value as a string and filters it through <<_reference.tcl_extensions.strsed,strsed>> using the given pattern.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There is also a deprecated syntax for -replace which takes only one argument and behaves the same as -strsed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Keyword list modifiers are most frequently used for these three purposes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Preserve configure defaults set by a previously executed Portfile keyword or by MacPorts base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts base sets the gcc compiler flags CFLAGS and LDFLAGS for all ports using `configure.cflags` and ``configure.ldflags``, therefore to keep from overwriting the default compiler flags use `configure.cflags-append` and ``configure.ldflags-append``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `configure.cflags-append`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `configure.ldflags-append`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Preserve PortGroup Dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Ports in a PortGroup have default library dependencies set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Therefore, never use `depends_lib` in ports belonging to a PortGroup or it will overwrite the default library dependencies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Instead, use ``depends_lib-append``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Add or Delete Items for Variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use the appropriate keywords, for example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `depends_lib-append` or `depends_lib-delete```depends_lib-replace``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `distfiles-append` or `distfiles-delete```distfiles-replace``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+** `patchfiles-append` or `patchfiles-delete```patchfiles-replace``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.installation.argument_modifiers]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Keyword Argument Modifiers (.pre_args / .post_args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+But it should be noted that all keyword argument modifiers implicitly support keyword list modifiers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, the keyword `configure.pre_args` also supports `configure.pre_args-append` and ``configure.pre_args-delete``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.fetch]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Fetch Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of keywords related to the fetch phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A list of URLs from which a port's [var]``${distfiles}`` may be retrieved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Keyword values for `master_sites` may include predefined site lists known as "`mirrors`", such as sourceforge, gnu, etc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The file(s) declared in [var]``${distfiles}`` will be fetched from one of the locations defined in ``master_sites``, while trying to find the best reachable mirror for the user's connection.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For a complete list of mirrors and their list of sites, see the file [path]_mirror_sites.tcl_ located in [path]__resources/port1.0/fetch/_ in the ports tree.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a `master_sites` keyword has multiple values, after any mirrors are expanded the list of sites is sorted by ping response times.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The sites are then tried in sorted order until matching [var]``${distfiles}`` are found.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `none` (but the `macports_distfiles` mirror is always implicitly appended)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        https://www.example.org/files/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    https://mirror.example.org/example_org/files/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You may also use mirror site lists predefined by MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Here the sourceforge, gnu, and freebsd mirrors are used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        sourceforge gnu freebsd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When using mirror master_sites, the subdirectory [var]``${name}`` is checked on every mirror.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the mirror subdirectory does not match ${name}, then you may specify it using after the mirror separated by a colon.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        sourceforge:widget \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    gnu:widget
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For ports that must fetch multiple download files from different locations, you must label the files with tags and match the tags to a `distfiles` keyword.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The format is ``mirror:subdirectory:tag``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In the example below, file_one.tar.gz is fetched from sourceforge mirrors in subdirectory [var]``${name}``; file tagtwo.tar.gz is fetched from the gnu mirrors in subdirectory sources.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        sourceforge::tagone \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    gnu:sources:tagtwo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles           file_one.tar.gz:tagone \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    file_two.tar.gz:tagtwo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites.mirror_subdir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subdirectory to append to all mirror sites for any list specified in [var]``${master_sites}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${name}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites.mirror_subdir  magic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch_sites::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A list of sites from which a port's patchfiles may be downloaded, where applicable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${master_sites}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch_sites         ftp://ftp.patchcityrepo.com/pub/magic/patches
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch_sites.mirror_subdir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subdirectory to append to all mirror sites for any list specified in [var]``${patch_sites}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${name}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch_sites.mirror_subdir   magic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The name of the distribution filename, not including the extract suffix (see below).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${name}-${version}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname            ${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The full distribution filename, including the extract suffix.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${distname}${extract.suffix}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles           ${name}-dev_src.tgz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles           file_one.tar.gz:tagone \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    file_two.tar.gz:tagtwo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dist_subdir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The last path component of [var]``${distpath}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Override it to store multiple ports' distfiles in the same directory (such as multiple ports providing different versions of the same software), or if a link:stealth
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+update has occurred. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${name}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dist_subdir         gcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+dist_subdir         ${name}/${version}_1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+worksrcdir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets the path to source directory relative to workpath.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It can be used if the extracted source directory has a different name then the distfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Also used if the source to be built is in a subdirectory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${distname}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+worksrcdir          ${name}-src-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+worksrcdir          ${distname}/src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.fetch.advanced]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Advanced Fetch Options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Some mirrors require special options for a resource to be properly fetched.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.type::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Change the fetch type.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is only necessary if a <<_reference.phases.fetch.bzr,bzr>>, <<_reference.phases.fetch.cvs,cvs>>, <<_reference.phases.fetch.git,git>>, <<_reference.phases.fetch.hg,hg>>, or <<_reference.phases.fetch.svn,svn>> checkout is being used. [option]``standard`` is used for a normal http or ftp fetch using [var]``${distfiles}`` and is used as default.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``standard``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Values: [option]``standard``[option]``bzr``[option]``cvs``[option]``git``[option]``hg``[option]``svn``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.type          svn
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.url             svn://example.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.revision        2100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.user::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+HTTP or FTP user to fetch the resource.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.password::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+HTTP or FTP password to fetch the resource.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.use_epsv::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Whether to use EPSV command for FTP transfers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``yes``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.use_epsv      no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.ignore_sslcert::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Whether to ignore the host SSL certificate (for HTTPS).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.ignore_sslcert    yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.fetch.bzr]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Fetch from BZR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:Bzr may be used as an alternative method of fetching distribution files using the keywords in this section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, fetching via bzr may cause non-reproducible builds, so it is strongly discouraged.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The [option]``bzr``<<_reference.phases.fetch.advanced.fetch_type,fetch.type>> is used to fetch source code from a bzr repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bzr.url::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This specifies the url from which to fetch files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bzr.url             lp:inkscape
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bzr.url             lp:~callelejdfors/pycg/trunk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bzr.revision::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Optional tag for fetching with bzr, this specifies the revision to checkout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: -1 (the last committed revision)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bzr.revision          2209
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.fetch.cvs]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Fetch from CVS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:CVS may be used as an alternative method of fetching distribution files using the keywords in this section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, fetching via CVS may cause non-reproducible builds, so it is strongly discouraged.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The [option]``cvs``<<_reference.phases.fetch.advanced.fetch_type,fetch.type>> is used to fetch source code from a CVS repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.root::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Specify the url from which to fetch files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.root            :pserver:anonymous@cvs.sv.gnu.org:/sources/emacs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.password::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Password to login to the CVS server.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.password        nice-password
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.tag::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Optional for fetching with CVS, this specifies the code revision to checkout.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.tag             HEAD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.date::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A date that identifies the CVS code set to checkout.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.date            "12-April-2007"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.module::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A CVS module from which to check out the code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cvs.module          Sources
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.fetch.git]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Fetch from Git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:Git may be used as an alternative method of fetching distribution files using the keywords in this section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, fetching via Git may cause non-reproducible builds, so it is strongly discouraged.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The [option]``git``<<_reference.phases.fetch.advanced.fetch_type,fetch.type>> is used to fetch source code from a git repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git.url::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This specifies the url from which to fetch files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git.url             git://git.kernel.org/pub/scm/git/git.git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git.url             https://www.kernel.org/pub/scm/git/git.git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git.branch::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Optional tag for fetching with git, this specifies the tag or other commit-ish that git should checkout.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Note that any tag on a branch besides HEAD should be prefixed by origin/.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git.branch             72bf1c8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git.branch             origin/next
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.fetch.hg]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Fetch from Mercurial
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:Mercurial may be used as an alternative method of fetching distribution files using the keywords in this section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, fetching via Mercurial may cause non-reproducible builds, so it is strongly discouraged.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The [option]``hg``<<_reference.phases.fetch.advanced.fetch_type,fetch.type>> is used to fetch source code from a Mercurial repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+hg.url::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This specifies the url from which to fetch files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+hg.url              https://www.kernel.org/hg/index.cgi/linux-2.6/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+hg.url              http://hg.intevation.org/mercurial
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+hg.tag::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Optional tag which should be fetched.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Can be a Mercurial tag or a revision.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To prevent non-reproducible builds use of tip as revision is discouraged.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: tip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+hg.tag              v1.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+hg.tag              ceb884843737
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.fetch.svn]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Fetch from Subversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+link:Subversion may be used as an alternative method of fetching distribution files using the keywords in this section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, fetching via Subversion may cause non-reproducible builds, so it is strongly discouraged.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The [option]``svn``<<_reference.phases.fetch.advanced.fetch_type,fetch.type>> is used to fetch source code from an svn repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.url::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This specifies the url from which to fetch files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.url             https://www.example.com/svn-repo/mydirectory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.url             svn://svn.example.com/svn-repo/mydirectory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.revision::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Optional tag for fetching with Subversion, this specifies the peg revision to checkout; it corresponds to the @REV syntax of the svn cli.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.revision        37192
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.method::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Optional tag for fetching with Subversion, this specifies whether to check out the code into a working copy, or just export it without the working copy metadata.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An export is preferable because it takes half the disk space, but some software expects to be built in a working copy (for example because it wants to record the revision number into itself somewhere).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: export
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.method          checkout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.checksum]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Checksum Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of keywords related to the checksum phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Checksum(s) of the distribution files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For ports with multiple distribution files, filenames must be included to associate files with their checksums.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+At least two checksum types (typically rmd160 and sha256) should be used to ensure the integrity of the distfiles.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  0c1147242adf476f5e93f4d59b553ee3ea378b23 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  baf8a29ff721178317aac7b864c2d392b1accc02de8677dd24c18fd5717bf26e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           ${distname}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  0c1147242adf476f5e93f4d59b553ee3ea378b23 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  883715307c31ae2c145db15d2404d89a837f4d03d7e6932aed21d1d1f21dad89 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    hobbit.tar.gz \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  82b9991f3bf0ceedbf74c188c5fa44b98b5e40c9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  2c3afd16915e9f8eac2351673f8b599f5fd2ff9064d4dfe61f750d72bab740b3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.extract]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Extract Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of keywords related to the extract phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.asroot::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is used to specify that the extract phase should be done as the root user.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.asroot      no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.suffix::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is used to specify the extract suffix type.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [path]_.tar.gz_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.suffix      .tgz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_7z::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is for downloads that are compressed using the 7z algorithm.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When invoked, it automatically sets:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.suffix = .7z
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.cmd    = 7za
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_7z           yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_bzip2::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is for downloads that are tarred and bzipped.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When invoked, it automatically sets:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.suffix = .tar.bz2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.cmd    = bzip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_bzip2           yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_lzma::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is for downloads that are compressed using the lzma algorithm.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When invoked, it automatically sets:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.suffix    = .lzma
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.cmd       = lzma
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_lzma             yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_zip::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is for downloads that are zipped.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When invoked, it automatically sets:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.suffix    = .zip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.cmd       = unzip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.pre_args  = -q
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.post_args = "-d ${extract.dir}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_zip             yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_xz::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is for downloads that are compressed using the xz tool.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When invoked, it automatically sets:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.suffix    = .tar.xz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extract.cmd       = xz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_xz             yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.mkdir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is used to specify if the directory [path]_worksrcdir_ is part of the distfile or if it should be created automatically and the distfiles should be extracted there instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is useful for distfiles with a flat structure which would pollute the [path]_worksrcdir_ with lots of files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.mkdir       yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.only::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+List of files to extract into [var]``${worksrcpath}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Only use if default extract behavior is not correct for your port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${distfiles}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.only        foo.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.only-append     bar.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.only-delete     foo.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.cmd::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Command to perform extraction.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `gzip`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.cmd         gunzip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Main arguments to [var]``extract.cmd``; additional arguments passed before and after the main arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${distpath}/${distfile}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.args        ${distpath}/${distfile}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following argument modifiers are available:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``extract.pre_args``, defaults to: `-dc`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``extract.post_args``, defaults to: `"| tar -xf -"`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.pre_args    xf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.post_args   "| gnutar -x"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.patch]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Patch Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of keywords related to the patch phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.dir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Specify the base path for patch files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${worksrcpath}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.dir           ${worksrcpath}/util
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.cmd::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Specify the command to be used for patching files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `patch`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.cmd           cat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Specify patch files to be applied for a port; list modifiers specify patchfiles to be added or removed from a previous patchfile declaration.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-destdir-variable-fix.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-source.c.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-configure.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-delete   patch-destdir-variable-fix.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Main arguments to [var]``patch.cmd``; optional argument modifiers pass arguments before and after the main arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.args          ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following argument modifiers are available:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``patch.pre_args``, defaults to: `-p0`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``patch.post_args``, defaults to: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args      -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.post_args     ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.configure]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Configure Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of keywords related to the configure phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts base sets some important default configure options, so should use the -append version of most configure keywords so you don't overwrite them.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, MacPorts base sets default `configure.cflags` so you should always use `configure.cflags-append` to set additional CFLAGS in Portfiles.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_configure::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets if the configure phase should be run.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Can be used if the port has no [path]_./configure_ script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``yes``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_configure    no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cmd::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Selects the command to be run in the default configure phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `$$.$$/configure`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cmd       ./config.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If available, it is encouraged to use the predefined options (like <<_reference.phases.configure.cflags,configure.cflags>>) instead of modifying configure.env directly.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `CFLAGS=-I${prefix}/include LDFLAGS=-L${prefix}/lib`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env       QTDIR=${prefix}/lib/qt3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-append    ABI=32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-delete    TCLROOT=${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.optflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set optimization compiler flags; list modifiers add or delete items from a previous Portfile configure.optflags keyword or the default set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `-Os`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.optflags    -O2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.optflags-append     -finline-functions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.optflags-delete     -Os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set CFLAGS compiler flags; list modifiers add or delete items from a previous Portfile configure.cflags keyword or the default set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `${configure.optflags}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cflags    -Os -flat_namespace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cflags-append     "-undefined suppress"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cflags-delete     -O2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ldflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set LDFLAGS compiler flags; list modifiers add or delete items from a previous Portfile configure.ldflags keyword or the default set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `-L${prefix}/lib -Wl,-headerpad_max_install_names`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ldflags   "-L${worksrcpath}/zlib -lz"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ldflags-append    "-L/usr/X11R6/lib -L${worksrcpath}/lib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ldflags-delete    -L${prefix}/lib/db44
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cppflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `-I${prefix}/include`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cppflags  -I${worksrcpath}/include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cppflags-append   "-I/usr/X11R6/lib -I${worksrcpath}/lib -DHAVE_RRD_12X"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cppflags-delete   -I${prefix}/lib/db44
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxxflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set CXXFLAGS to be passed to the C++ processor; list modifiers add or delete items from a previous Portfile configure.cxxflags keyword or the default set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `${configure.optflags}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.objcflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add description
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `${configure.optflags}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.classpath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add description
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.macosx_deployment_target::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add description
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.fflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `${configure.optflags}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.fflags    -Os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.fcflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `${configure.optflags}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.fcflags   -Os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.f90flags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `${configure.optflags}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.f90flags  -Os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cc::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+C compiler for the CC environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cc        ${prefix}/bin/gcc-mp-4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cpp::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+C preprocessor for the CPP environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cpp       /usr/bin/cpp-3.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+C++ compiler for the CXX environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx       /usr/bin/g++-4.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.objc::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Objective-C compiler for the OBJC environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.objc      /usr/bin/gcc-4.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.fc::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fortran compiler for the FC environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.fc        ${prefix}/bin/gfortran-mp-4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.f77::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fortran 77 compiler for the F77 environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.f77       ${prefix}/bin/gfortran-mp-4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.f90::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fortran 90 compiler for the F90 environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.f90       ${prefix}/bin/gfortran-mp-4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.javac::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Java compiler for the JAVAC environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.javac     ${prefix}/bin/jikes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.compiler::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Select a compiler suite to fill the compiler environment variables.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+All variables/tools a compiler suite can provide are set.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Manually set variables are not overwritten.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Keep in mind that not all compiler suites might be available on your platform: [option]``gcc-3.3`` is available on Mac OS X 10.3 and 10.4 PowerPC, [option]``gcc-4.0`` is available on 10.4 and 10.5, [option]``gcc-4.2`` and [option]``llvm-gcc-4.2`` are available on 10.5 and 10.6, and [option]``clang`` is available on 10.6 and later.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Only use it if a port really needs a different compiler.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``apple-gcc-4.2`` on Mac OS X 10.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``gcc-4.2`` with Xcode 3.x on Mac OS X 10.5 and 10.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``llvm-gcc-4.2`` with Xcode 4.0 through 4.2 on Mac OS X 10.6 and 10.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``clang`` with Xcode 4.3 and later on OS X 10.7 and later
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Values: [option]``gcc-3.3``[option]``gcc-4.0``[option]``gcc-4.2``[option]``llvm-gcc-4.2``[option]``clang``[option]``macports-clang-3.3``[option]``macports-clang-3.4``[option]``macports-clang-3.7``[option]``macports-clang-3.8``[option]``macports-clang-3.9``[option]``macports-clang-4.0``[option]``macports-clang-5.0``[option]``macports-clang-6.0``[option]``apple-gcc-4.0``[option]``apple-gcc-4.2``[option]``macports-gcc-4.3``[option]``macports-gcc-4.4``[option]``macports-gcc-4.5``[option]`` [...]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.compiler  macports-gcc-4.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.perl::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set PERL flag for selecting a Perl interpreter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.perl      ${prefix}/bin/perl5.26
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.python::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set PYTHON flag for selecting a Python interpreter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.python    ${prefix}/bin/python2.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ruby::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set RUBY flag for selecting a Ruby interpreter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ruby      ${prefix}/bin/ruby
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.install::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set `INSTALL` flag for selecting an install tool; used for copying files and creating directories.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [path]_/usr/bin/install_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.install   ${prefix}/bin/ginstall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.awk::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set AWK flag for selecting an awk executable.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.awk       ${prefix}/bin/gawk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.bison::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set BISON flag for selecting a bison executable, a parser generator.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.bison     /usr/bin/bison
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pkg_config::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set PKG_CONFIG flag for helping find pkg_config, a tool for retrieving information about installed libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `???`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pkg_config    ${prefix}/bin/pkg-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pkg_config_path::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set PKG_CONFIG_PATH flag for telling pkg_config where to search for information about installed libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `${prefix}/lib/pkgconfig:${prefix}/share/pkgconfig`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pkg_config_path   ${python.prefix}/lib/pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Main arguments to ``configure.cmd``; optional argument modifiers pass arguments before and after the main arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args      --bindir=${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following argument modifiers are available:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``configure.pre_args``, defaults to: `--prefix=${prefix}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``configure.post_args``, defaults to: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pre_args  --prefix=${prefix}/share/bro
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.post_args OPT="-D__DARWIN_UNIX03"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.configure.universal]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Configure Universal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Universal keywords are used to make a port compile on OS X for multiple architectures.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Arguments used in the configure script to build the port universal.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `--disable-dependency-tracking`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_cflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Additional flags to put in the CFLAGS environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default value is based on ``${configure.universal_archs}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(PowerPC Tiger) `-isysroot ${developer_dir}/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Intel Tiger / Leopard) `-arch i386 -arch ppc`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Snow Leopard and later) `-arch x86_64 -arch i386`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_cppflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Additional flags to put in the CPPFLAGS environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(PowerPC Tiger) `-isysroot ${developer_dir}/SDKs/MacOSX10.4u.sdk`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(others) none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_cxxflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Additional flags to put in the CXXFLAGS environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default value is based on ``${configure.universal_archs}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(PowerPC Tiger) `-isysroot ${developer_dir}/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Intel Tiger / Leopard) `-arch i386 -arch ppc`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Snow Leopard and later) `-arch x86_64 -arch i386`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_ldflags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Additional flags to put in the LDFLAGS environment variable when invoking the configure script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(PowerPC Tiger) `-Wl,-syslibroot,${developer_dir}/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Intel Tiger / Leopard) `-arch i386 -arch ppc`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Snow Leopard and later) `-arch x86_64 -arch i386`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: add example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.configure.automake_autoconf]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Automake, Autoconf, and Autoreconf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of configure keywords available for ports that need automake and/or autoconf.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoreconf::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Whether or not to use autoreconf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoreconf      yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_automake::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Whether or not to use automake.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_automake        yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+automake.env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Environment variables to pass to automake.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+automake.env        CFLAGS=-I${prefix}/include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+automake.args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Arguments to pass to automake.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+automake.args       --foreign
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+automake.dir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Directory in which to run [var]``${automake.cmd}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${worksrcpath}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+automake.dir        ./src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoconf::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Whether or not to use autoconf.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoconf        yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoconf.env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Environmental variables to pass to autoconf.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoconf.env        CFLAGS=-I${prefix}/include/gtk12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoconf.args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Arguments to pass to autoconf.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoconf.args       "-l src/aclocaldir"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoconf.dir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Directory in which to run [var]``${autoconf.cmd}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${worksrcpath}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoconf.dir        src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.build]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Build Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of keywords related to the build phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.cmd::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Make command to run in [var]``${worksrcdir}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Only use it if you can't use ``build.type``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `make`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.cmd           scons
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.type::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Defines which build software is required and sets [var]``${build.cmd}`` accordingly.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The available options are BSD Make, GNU Make, and Xcode. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``default`` (the default Make on the current platform) 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Values: [option]``default``[option]``bsd``[option]``gnu``[option]``xcode``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.type          bsd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Main arguments to [var]``${build.cmd}``; optional argument modifiers pass arguments before and after the main arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.args          -DNOWARN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following argument modifiers are available:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``build.pre_args``, defaults to: [var]``${build.target}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``build.post_args``, defaults to: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.pre_args      -project AudioSlicer.xcode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.post_args     CFLAGS_SYS="-DUSE_FREETYPE -DPREFER_FREETYPE"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.target::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Build target to pass to [var]``${build.cmd}``; list modifiers add or delete items from a previous Portfile build.target keyword or the default set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `all`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.target        all-src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.target-append     doc extra
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.target-delete     compat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set environment variables for build; list modifiers add and delete items from a previous Portfile build.env keyword, or a default set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_parallel_build::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword is for specifying whether or not it is safe for a port to use multiple CPUs or multiple cores in parallel during its build phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If `use_parallel_build` is not set to "`no`" in a given port, the option [option]``-j${build.jobs}`` is passed to [var]``${build.cmd}`` (if [var]``${build.cmd}`` is `make` or ``scons``).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``yes``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_parallel_build  no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.jobs::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The number of simultaneous jobs to run when parallel build is enabled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The default value is based on the variable [var]``buildmakejobs`` in [path]_macports.conf_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: If [var]``buildmakejobs`` is 0, the number of CPU cores in the machine, or the number of GB of physical memory plus one, whichever is less. Otherwise,  the actual value of ``${buildmakejobs}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.test]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Test Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of keywords related to the test phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Enable running test suites bundled with a port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run            yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.cmd::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Test command to run relative to [var]``${worksrcdir}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${build.cmd}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.cmd            checks.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.target::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Test target to pass to [var]``${test.cmd}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `test`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.target         checks
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Main arguments to [var]``test.cmd``; optional argument modifiers pass arguments before and after the main arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.args    -f Makefile.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following argument modifiers are available:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``test.pre_args``, defaults to: `${test.target}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``test.post_args``, defaults to: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Set environment variables for test; list modifiers add and delete items from a previous Portfile test.env keyword, or a default set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Often `DYLD_LIBRARY_PATH` is set here to support testing dynamically linked libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.env       DYLD_LIBRARY_PATH=${worksrcpath}/src/.libs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.phases.destroot]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Destroot Phase Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list of keywords related to the destroot phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.cmd::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Install command to run relative to [var]``${worksrcdir}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${build.cmd}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.cmd        scons
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.args::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Main arguments to [var]``${destroot.cmd}``; optional argument modifiers pass arguments before and after the main arguments.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.args       BINDIR=${prefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following argument modifiers are available:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``destroot.pre_args``, defaults to: [var]``${destroot.target}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* ``destroot.post_args``, defaults to: [var]``${destroot.destdir}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.pre_args   -project AudioSlicer.xcode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.post_args  INSTDIR=${destroot}${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.target::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Install target to pass to [var]``${destroot.cmd}``; list modifiers add or delete items from a previous Portfile destroot.target keyword or the default set by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `install`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.target     install install-config install-commandmode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.target-append  install-plugins
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.target-delete  install-commandmode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.destdir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Arguments passed to [var]``${destroot.cmd}`` via [var]``${destroot.post_args}`` to install correctly into the destroot.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `DESTDIR=${destroot}`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.destdir    prefix=${destroot}${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If an application's Makefile properly supports the DESTDIR variable, MacPorts will automatically destroot the port properly.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A port must destroot properly or the port will not install correctly, upgrade, or uninstall.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If not, you may need to set this variable, or even patch the application's Makefile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.umask::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Umask to use during destroot.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: `022`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.umask      002
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.keepdirs::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A list of directories that should not be removed if empty upon destroot completion.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: ???
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.keepdirs   ${destroot}${prefix}/var/run \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${destroot}${prefix}/var/log \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${destroot}${prefix}/var/cache/mrtg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.violate_mtree::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts tests for compliance to the common directory structure in [var]``${prefix}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a port is not compliant with the standard, set it to [option]``yes``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You can find the macports standard in <<_internals.hierarchy,MacPorts File Hierarchy>> or in the porthier(7) man page.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If `destroot.violate_mtree` is set to [option]``yes``, the following warning is issued during the installation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Warning: portname requests to install files outside the common directory structure!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This means that the port installed files outside of their normal locations in [var]``${prefix}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These could be files totally outside of [var]``${prefix}``, which could cause problems on your computer, or files inside of [var]``${prefix}`` that are not in a standard location.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use `port contents [replaceable]``portname``` to see the location for all files that were installed by a given port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.violate_mtree      yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfile-startupitem.adoc b/guide/adoc/portfile-startupitem.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..f167e38
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfile-startupitem.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,308 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.startupitems]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= StartupItems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A StartupItem is a MacPorts 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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Ports that use StartupItem keywords create scripts for link:launchd, which is the Apple facility introduced with Mac OS X 10.4 to replace xinetd for starting and managing daemons.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To support ``launchd``, a program named `daemondo` is provided by MacPorts base that serves as an adapter between `launchd` and daemons ("`executable`" StartupItems) or traditional Unix startup scripts that start daemons ("`script`" StartupItems).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There are three categories of StartupItem keywords.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Those that trigger StartupItem creation and logging, those that specify attributes of "`executable`" StartupItems, and those that specify attributes of "`script`" StartupItems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The variable [var]``startupitem_type`` in [path]_${prefix}/etc/macports/macports.conf_ may be set to [option]``none`` to globally override all StartupItem keywords found in Portfiles; this prevents StartupItems from being created.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.startupitems.attributes]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== StartupItem Attributes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The keywords in this section may be used with either "`executable`" or "`script`" StartupItems (see below).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.create::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Trigger the creation of a StartupItem.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.create      yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.name::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets the name for the StartupItem.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Defaults to the name of the port, so this keyword is usually unnecessary.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [var]``${name}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.name        dhcpd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.logfile::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Path to a logfile for logging events about the lifetime of the StartupItem.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [path]_/dev/null_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.logfile     ${prefix}/var/log/mydaemon.log
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.logevents::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Control whether or not to log events to the log file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If logevents is set, events with timestamps are logged to the logfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.logevents   yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.netchange::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Cause the daemon to be restarted when a change in network state is detected.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``no``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.netchange   yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.startupitems.executable]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Executable StartupItems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Daemons run continuously, so monitoring the health of daemon processes and restarting them if they die is an important StartupItems' feature. "`Executable`" StartupItems are preferred over "`script`" StartupItems because `daemondo` launches the daemon __directly__, rather than _indirectly_ via a script, and therefore it automatically knows how to monitor a daemon process and restart it if it dies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Daemons used with "`executable`" StartupItems may be programs or scripts (shell, perl, python, etc.) as long as the script _itself_ is the daemon, rather than merely what launches the daemon.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In the latter case "`script`" StartupItems are to be used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Since "`script`" and "`executable`" are mutually exclusive StartupItem types, the `startupitem.executable` keyword may not be used in a Portfile that uses any keywords listed in the <<_reference.startupitems.script,Script StartupItems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      section>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.executable::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Specifies the name of the daemon to be run.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It may have multiple arguments, but they must be appropriate for a call to exec; arbitrary shell code may not be used.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Some daemons "`daemonize`" by detaching themselves from the controlling tty before sending themselves to the background, thus making themselves a child of the original process.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A daemon to be started with `startupitem.executable` must not be allowed to do this or daemondo will think the process has died and start multiple instances.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Often daemons have a command switch to run in the foreground, and this method should be used for daemons that detach.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.executable  ${prefix}/sbin/vm-pop3d -d 10 -t 600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Do not wrap values in quotes if passing arguments to the daemon; "`executable`" StartupItem elements must be tagged individually so the spaces between arguments serve as delimiters for "`string`" tags.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, this startupitem key/value pair:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.executable    ${prefix}/sbin/vm-pop3d -d 10 -t 600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+generates a .plist file with these tags:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<key>ProgramArguments</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<array>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>/opt/local/bin/daemondo</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>--label=vm-pop3d</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>--start-cmd</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>/opt/local/sbin/vm-pop3d</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>-d</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>10</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>-t</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>600</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <string>;</string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+</array>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.startupitems.script]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Script StartupItems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+StartupItems of type "`script`" create a wrapper during port installation for `daemondo` that will be used to launch a daemon startup script present in an application's source distribution (MacPorts does not create daemon startup scripts) for daemons that require a script.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"`Executable`" StartupItems are the preferred type since "`script`" StartupItems launch daemons __indirectly__, and this requires that port authors use the `startupitem.pidfile` keyword so that `daemondo` can check this pid file to see is a daemon process has died and restart it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Any time a script (or an executable) itself serves as a daemon, use the "`executable`" StartupItem type so daemondo will launch it directly and track its health automatically.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Additionally, since "`script`" and "`executable`" are mutually exclusive StartupItem types, the `startupitem.executable` keyword may not be used in a Portfile that uses "`script`" StartupItem keywords.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A typical snippet of a startup script that may be used with a "`script`" StartupItem is shown below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Notice that the script is not a daemon; rather the script indirectly launches the vm-pop3d daemon.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#!/bin/sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+case "$1" in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    start)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        echo -n "Starting vm-pop3d: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /opt/local/sbin/vm-pop3d -d 10 -t 600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[... trimmed ...]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.start::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Specify a shell script to start, stop, and restart the daemon.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In the absence of ``startupitem.restart``, the daemon will be restarted by taking the stop action, followed by the start action.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.start       "${prefix}/share/mysql/mysql.server start"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.stop        "${prefix}/share/mysql/mysql.server stop"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.restart     "${prefix}/share/mysql/mysql.server restart"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Wrap the stop, start, and restart values in quotes so they will be placed in the wrapper tagged as a single element.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.init::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Shell code that will be executed prior to any of the options ``startupitem.start``, `startupitem.stop` and ``startupitem.restart``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.init        BIN=${prefix}/sbin/bacula-fd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.pidfile::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword must be defined properly for `daemondo` to be able to monitor daemons launched via "`script`" StartupItems and restart them if they die.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It specifies two things: a process id (PID) file handling method, and a pidfile name and path.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* {empty}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: `none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+${prefix}/var/run/${name}.pid`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [none] | [[path]_${prefix}/var/run/${name}.pid_]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* {empty}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Values [none auto manual clean] [[replaceable]``/path/to/pidfile``]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.pidfile     auto ${prefix}/var/run/${name}.pidfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PID file handling options:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* [option]``none`` - daemondo will not create or track a PID file, so it won't know when a daemon dies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* [option]``auto`` - 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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* [option]``clean`` - 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.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* [option]``manual`` - This option should only be used if an "`executable`" StartupItem could be used (daemondo launches a daemon directly) _and_ 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 executable StartupItems, daemondo remembers the PID of the launched process and tracks it automatically.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.startupitems.launchd]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Loading / Unloading StartupItems into launchd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A port with a StartupItem places a link to a .plist file for the port's daemon within [path]_/Library/LaunchDaemons/_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A .plist file is an XML file; MacPorts installs .plist files tagged as "`disabled`" for the sake of security.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You may enable a startup script (tag the.plist file as "`enabled`") and load it into `launchd` with a single command as shown.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You may stop a running startup script, disable it (tag the.plist file as "`disabled`"), and unload it from `launchd` with a single command as shown.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.startupitems.internals]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== StartupItem Internals
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+During port installation a MacPorts StartupItem creates a .plist file in [path]_${prefix}/etc/LaunchDaemons/_, and places a symbolic link to the .plist file within [path]_/Library/LaunchDaemons/_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, the StartupItem for the mysql5 port is [path]_org.macports.mysql5.plist_, and it is linked as shown.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% ls -l /Library/LaunchDaemons
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+org.macports.mysql5.plist ->
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /opt/local/etc/LaunchDaemons/org.macports.mysql5/org.macports.mysql5.plist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For "`script`" StartupItems, in addition to a .plist file, a wrapper is also created.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% ls -l /opt/local/etc/LaunchDaemons/org.macports.mysql5/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-rwxr-xr-x   2 root  wheel  475 Aug  2 14:16 mysql5.wrapper
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-rw-r--r--   2 root  wheel  975 Aug  2 14:16 org.macports.mysql5.plist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----The wrapper manipulates the script as specified in the startupitem.start and startupitem.stop keywords.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An example wrapper script snippet is shown below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#!/bin/sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# MacPorts generated daemondo support script
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Start
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Start()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    /opt/local/share/mysql5/mysql/mysql.server start
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Stop
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Stop()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    /opt/local/share/mysql5/mysql/mysql.server stop
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[... trimmed ...]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfile-tcl.adoc b/guide/adoc/portfile-tcl.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..f99ac13
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfile-tcl.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,169 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.tcl_extensions]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Tcl Extensions & Useful Tcl Commands
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A MacPorts Portfile is a Tcl script, so it may contain any arbitrary Tcl code you may learn about in a link:Tcl reference manual.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, few authors will use arbitrary Tcl code; the vast majority will use a subset of Tcl commands and a number of Tcl extensions that are coded within MacPorts for performing the most common tasks needed for Portfiles.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The list below is a list of useful Tcl commands for Portfile development and Tcl extensions provided by MacPorts base.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+file::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The standard Tcl `file` command can be used for a number of operations on files, such as moving, renaming, deleting, or creating directories, among others.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For a complete list, consult the link:Tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reference manual for the file command, or the Tcl file manpage in the [option]``n`` section of manpages on your machine using `man n file`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+file copy::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Copy a file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+file rename::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Rename a file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+file delete [-force]::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Remove a file or (with [option]``-force``) a directory and its contents.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+file mkdir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Create a directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+macros::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For the above operations provided by Tcl's `file` command, MacPorts provides the following shorthands.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+These should be used in preference to the Tcl commands above, as they may work around certain bugs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+copy::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Shorthand for ``file copy``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+move::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Similar to `file rename` but correctly handles renames that only change the case of a file on a case-insensitive filesystem.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+delete::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Shorthand for ``file delete -force``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+touch::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Mimics the BSD touch command.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ln::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Mimics the BSD ln command.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall copies files and creates directories; it is intended to be compatible with install(1).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall [-o [replaceable]``owner``] [-g [replaceable]``group``] [-m [replaceable]``mode``] [[replaceable]``file1 file2 ...``] [replaceable]``directory``::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Install the specified file(s) to a destination directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall [-o [replaceable]``owner``] [-g [replaceable]``group``] [-m [replaceable]``mode``] [-W [replaceable]``dir``] [[replaceable]``file1 file2 ...``] [replaceable]``directory``::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Change to [option]``dir`` and install file(s) to a destination directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall [-o [replaceable]``owner``] [-g [replaceable]``group``] [-m [replaceable]``mode``] {*}[glob [replaceable]``pattern``] [replaceable]``directory``::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Install the file(s) matching the glob pattern to a destination directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Note the use of the [option]``{*}`` operator to convert the list returned by `glob` into separate arguments to ``xinstall``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall -d [-o [replaceable]``owner``] [-g [replaceable]``group``] [-m [replaceable]``mode``] [replaceable]``directory``::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Create a directory including parent directories if necessary.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Defaults:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* owner -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* group -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* mode - [option]``0755``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall -m 640 ${worksrcpath}/README \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ${destroot}${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall -m 640 -W ${worksrcpath}/doc README INSTALL COPY \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ${destroot}${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall -m 640 {*}[glob ${worksrcpath}/doc/*] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ${destroot}${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+xinstall -d ${destroot}${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strsed::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strsed can be used for string manipulations using regular expressions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It supports a small subset of the commands known from sed(1).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strsed [replaceable]``string`` s/[replaceable]``regex``/[replaceable]``replacement``/ ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Replaces the first instance of [replaceable]``regex`` with [replaceable]``replacement``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Refer to re_format(7) for a definition of regular expression syntax.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+strsed [replaceable]``string`` g/[replaceable]``regex``/[replaceable]``replacement``/ ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The same as the previous format, except all instances of the pattern will be replaced, not only the first (mnemonic: 'g' is for global).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reinplace::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Allows text specified by a regular expression to be replaced by new text, in-place (the file will be updated itself, no need to place output into a new file and rename).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace [-locale [replaceable]``locale``] [-n] [-W [replaceable]``dir``] [--] [replaceable]``command``[replaceable]``file ...``::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Replace text given by the regular expression portion of the command with the replacement text, in all files specified.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use -locale to set the locale.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The default locale is ``en_US.UTF-8``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, `-locale C` will allow a non-UTF-8 file to be modified (which may otherwise give the error "sed: RE error: illegal byte sequence"), but only operating on ASCII characters.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you need it to work on non-ASCII characters you need to set a locale with the correct charset for the file, e.g.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"en_US.ISO8859-1".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-n is passed to sed to suppress echoing result
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-W to set a common working directory for multiple files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use -E to use the extended regular expression style (see re_format(7) for a description of the basic and extended styles)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use -- to end option processing and allow any further dashes not to be treated as options.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reinplace -W ${worksrcpath} "s|/usr/local|${prefix}|g" configure setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reinplace "s|@@PREFIX@@|${prefix}|g" ${worksrcpath}/Makefile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+user/group::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+adduser username [uxml:id=[replaceable]``uid``] [gxml:id=[replaceable]``gid``] [passwd=[replaceable]``passwd``] [realname=[replaceable]``realname``] [home=[replaceable]``home``] [shell=[replaceable]``shell``]::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Add a new local user to the system with the specified uid, gid, password, real name, home directory and login shell.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+existsuser [replaceable]``username``::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Check if a local user exists.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns the uid for the given user, or 0 if the user wasn't found.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Checking for the root user is not supported because its uid is 0, and it will always exist anyway.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+nextuid::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns the highest used uid plus one.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+addgroup [replaceable]``group`` [gxml:id=[replaceable]``gid``] [passwd=[replaceable]``passwd``] [realname=[replaceable]``realname``] [users=[replaceable]``users``]::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Add a new local group to the system, with the specified gid, password, real name, and with a list of users as members.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+existsgroup [replaceable]``group``::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Check if a local group exists and return the corresponding gid.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This can be used with adduser:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+addgroup foo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+adduser foo gxml:id=[existsgroup foo]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+nextgid::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns the highest used gid plus one.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+External program execution::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use only when ....
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfile-variables.adoc b/guide/adoc/portfile-variables.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..33bc552
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfile-variables.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,73 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.variables]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Global Variables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Global variables are variables available to any Portfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For a list of additional variables available to ports that are assigned to a MacPorts Portgroup, see portgroup(7).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+All of these variables except [var]``prefix`` are read-only!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+prefix::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Installation prefix, set at compile time and displayed in [path]_${prefix}/etc/macports/macports.conf_ --- may be overridden on a per-port basis, for example to install into a wholly-contained subdirectory of ${prefix}, but most ports should have no reason to do so.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_/opt/local_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+libpath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Path to the MacPorts Tcl libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+portpath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Full path to the Portfile of the port being executed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfile repositories are defined in the file <<_internals.configuration_files.sources_conf,sources.conf>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: [path]_${prefix}/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/<category>/<portname>/_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+filesdir::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Path to files directory relative to [var]``${portpath}``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Value: `files`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+filespath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Full path to files directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Value: [var]``${portpath}/${filesdir}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+workpath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Full path to work directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Value: [var]``${portbuildpath}/work``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+worksrcpath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Full path to extracted source code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Value: [var]``${workpath}/${worksrcdir}``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Full path into which software will be destrooted.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Value: [var]``${workpath}/destroot``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distpath::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Location to store downloaded distfiles.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Value: [var]``${portdbpath}/distfiles/${dist_subdir}/``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install.user::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The Unix user at the time of port installation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install.group::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The Unix group at the time of port installation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+os.platform::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The underlying operating system platform (e.g., "`darwin`" on macOS, "`freebsd`", etc.).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+os.arch::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The hardware architecture -- either "`powerpc`" or "`i386`".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+os.version::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The version number of the host operating system (e.g., "`12.3.0`" for Darwin 12.3.0 a.k.a.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+OS X 10.8.3).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+os.endian::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Endianness of the processor -- either "`big`" (on PowerPC systems) or "`little`" (on Intel systems).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+os.major::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The major version number of the host operating system (e.g., "`12`" for Darwin 12.x).
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfile-variants.adoc b/guide/adoc/portfile-variants.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..444544f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfile-variants.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,145 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.variants]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts variants are conditional modifications of port installation behavior during port installation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There are two types of variants: user-selected variants and platform variants.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+User-selected variants are options selected by a user when a port is installed; platform variants are selected automatically by MacPorts base according to the OS or hardware platform (darwin, freebsd, linux, i386, powerpc, etc.).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.variants.user_selected]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== User-Selected Variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+User-selected variants are those that are defined so a user can invoke them to enable port options at install time.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+They also allow a port author a level of modularity and control using the keyword `default_variants` (see below).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Variant names may contain only letters, numbers and underscore characters.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In particular, the hyphen is not a valid character in variant names because it would conflict with the notation for deselecting a variant.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant [replaceable]``name`` [requires [replaceable]``variant1 variant2 ...``] [conflicts [replaceable]``variant1 variant2 ...``] [description [replaceable]``description``]::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The variant declaration may contain any keywords that can be placed in a Portfile's global section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+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 `variant_isset` conditional within a phase declaration and not within the variant declaration itself.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Dependencies and conflicts with other variants in the same port can be expressed with `requires` and `conflicts` options as shown below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant gnome requires glib {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   --with-gnome
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append      port:gnome-session
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant apache2 conflicts apache {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --with-apxs2=${prefix}/apache2/bin/apxs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default_variants::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The optional `default_variants` keyword is used to specify variants that a port author wishes to have enabled by default.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This allows for Portfile modularity and also allows users to suppress default variants if they wish.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default_variants    +ssl +tcpd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default variants may be suppressed by preceding a variant name with a "`-`" as shown in this example.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% port install foo -ssl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+universal_variant::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When using MacPorts on macOS, a universal variant is defined by default to configure ports with universal flags.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The variant can be overridden if the default code does not work (see the <<_reference.phases.configure.universal,Configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Universal>> section above), or suppressed if a universal variant does not function properly for a given port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: [option]``yes``
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+universal_variant   no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.variants.descriptions]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== User-Selected Variant Descriptions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+User-selected variants ought to provide a description, which will be displayed when using command ``port variants foo``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The syntax used for the description keyword is shown below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant bar description {Add IMAP support} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Descriptions should be short but clear, and not merely repeat the name of the variant.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To allow for compatibility for possible MacPorts GUI support, a good rule of thumb is to use sentence fragments for brevity, with a capitalized first letter and no trailing punctuation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Think of them as short labels such as ones you'd find next to a GUI checkbox or radio button.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Thus, it would be better to write "`Build with support for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foo`" instead of "`Builds with support for foo`"; "`Add support for foo`" would be better than "`Adds support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    for foo`".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Variant descriptions are strings, so one should take care not to put whitespace between the brackets and the beginning and end of the variant description, and also not to use unnecessary whitespace, unlike with port descriptions and long_descriptions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.variants.platform]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Platform Variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Platform variants are either defined by default in MacPorts base, or defined by a port author to customize a port's installation according to OS (operating system) or hardware platform.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform [replaceable]``os`` [[replaceable]``version``] [[replaceable]``arch``]::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts allows platform-specific port options to be specified in a Portfile for handling differences between platforms and versions of the same platform.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`platform darwin [replaceable]``version``` can be used to handle different tasks depending on the version of Darwin, the core operating system underlying macOS. [replaceable]``version`` is the major version of Darwin, and can be `17` for macOS High Sierra v10.13, `16` for macOS Sierra v10.12, `15` for OS X El Capitan v10.11, and so on.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin 10 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.env-append LIBS=-lresolv
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin i386 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append --disable-mmx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin 8 powerpc {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.compiler gcc-3.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====Though a combination of OS version and hardware platform may be specified in a single platform statement (e.g., darwin 8 i386), it is not possible to specify a range of platforms with a single statement.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, to select Darwin versions 9 and 10 while excluding all others, you would need two statements: `platform darwin 9` and ``platform darwin 10``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Alternately, you could make that behavior the port's default, and add a `platform darwin 8` block to remove it again.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfiledev.adoc b/guide/adoc/portfiledev.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..47a1a6f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfiledev.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,974 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Portfile Development
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:doctype: book
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:toc: left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:icons: font
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:experimental:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sourcedir: .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A port is a distribution of software that can be compiled and installed using MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A [path]_Portfile_ describes all the required steps such as where to get the source code from upstream, which patches have to be applied and which other tools and commands are required to build the source code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Each port consists of multiple files in a directory, usually within a category subdirectory of the root of a ports tree.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts Project distributes the main ports tree that is by default <<_internals.configuration_files.sources_conf,configured>> in all installations of MacPorts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This section serves as a reference for the directory structure of a single port and the layout of the files within.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The only required file in a port is the [path]_Portfile_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.introduction]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Portfile Introduction
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A MacPorts Portfile is a link:Tcl script that usually contains only the simple keyword/value combinations and Tcl extensions as described in the <<_reference,Portfile Reference>> chapter, though it may also contain arbitrary Tcl code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Every port has a corresponding Portfile, but Portfiles do not completely define a port's installation behavior since MacPorts base has default port installation characteristics coded within it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Therefore Portfiles need only specify required options, though some ports may require non-default options.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A common way for Portfiles to augment or override MacPorts base default installation phase characteristics is by using [path]_Portfile_ phase declaration(s). If you use Portfile phase declaration(s), you should know how to identify the "`global`" section of a Portfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Any statements not contained within a phase declaration, no matter where they are located in a Portfile, are said to be in the global section of the Portfile; therefore the global section need not be contiguous.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Likewise, to remove statements from the global section they must be placed within a phase declaration.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The main phases you need to be aware of when making a Portfile are these:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Fetch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Extract
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Destroot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The default installation phase behavior performed by the MacPorts base works fine for applications that use the standard ``configure``, ``make``, and `make
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    install` steps, which conform to phases configure, build, and destroot respectively.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For applications that do not conform to this standard behavior, any installation phase may be augmented using <<_development.examples.augment,pre- and/or post- phases>>, or even <<_development.examples.override,overridden>> or <<_development.examples.eliminate,eliminated>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See <<_development.examples,Example Portfiles>> below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For a detailed description of all port phases, see the <<_reference.phases,Portfile Reference>> chapter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.creating_portfile]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Creating a Portfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Here we list the individual Portfile components for an application that conforms to the standard ``configure``, ``make``, and `make install` steps of most open source application installs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Modeline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This should be the first line of a Portfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It sets the correct editing options for vim and emacs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See <<_development.practices.portstyle,Port Style>> for more information.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Its use is optional and up to the port maintainer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. PortSystem line
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This statement is required for all ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                rrdtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             1.2.23
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port categories
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A port may belong to more than one category, but the first (primary) category should match the directory name in the ports tree where the Portfile is to reside.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          net
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Platform statement
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port maintainers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A port's maintainers are the people who have agreed to take responsibility for keeping the port up-to-date.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The `maintainers` keyword lists the maintainers' GitHub usernames or email addresses, preferably in the obfuscated form which hides them from spambots.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For more, see the full explanation of the <<_reference.keywords.maintainers,maintainers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+keyword>> in the <<_reference.keywords,Global
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Keywords>> section of the <<_reference,Portfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reference>> chapter.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         @neverpanic \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    jdoe \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    example.org:julesverne
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port description
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Round Robin Database
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port long_description
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    RRDtool is a system to store and display time-series \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. A port's application homepage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. A port's download URLs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        https://oss.oetiker.ch/rrdtool/pub/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ftp://ftp.pucpr.br/rrdtool/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port checksums
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The checksums specified in a Portfile are checked with the fetched tarball for security.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For the best security, use rmd160  and sha256 checksum types.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums               rmd160  7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To find the correct checksums for a port's distribution file, follow one of these examples:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% openssl dgst -rmd160 rrdtool-1.2.23.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% openssl dgst -sha256 rrdtool-1.2.23.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+RIPEMD160( ... rrdtool-1.2.23.tar.gz)= 7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SHA256( ... rrdtool-1.2.23.tar.gz)= 2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+or update the version in the Portfile:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% sudo port edit rrdtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+and run:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% port -v checksum rrdtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Fetching distfiles for rrdtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Verifying checksums for rrdtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Checksumming rrdtool-1.2.23.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: Checksum (rmd160) mismatch for rrdtool-1.2.23.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfile checksum: rrdtool-1.2.23.tar.gz rmd160 ...WRONGCHECKSUM...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Distfile checksum: rrdtool-1.2.23.tar.gz rmd160 7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: Checksum (sha256) mismatch for rrdtool-1.2.23.tar.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfile checksum: rrdtool-1.2.23.tar.gz sha256 ...WRONGCHECKSUM...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Distfile checksum: rrdtool-1.2.23.tar.gz sha256 2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The correct checksum line may be:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: Failed to checksum rrdtool: Unable to verify file checksums
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: See ...SOMEPATH.../rrdtool/main.log for details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: Follow https://guide.macports.org/#project.tickets to report a bug.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: Processing of port rrdtool failed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A port's dependencies are ports that must be installed before another port is installed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib         port:perl5.8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:tcl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Port configure arguments (optional)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args      --enable-perl-site-install \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --mandir=${prefix}/share/man
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.examples]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Example Portfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In this section we begin by taking a look at a complete simple Portfile; then we see how to <<_development.examples.augment,augment default phases>> by defining pre- and post- phases, how to <<_development.examples.override,override default phases>>, and finally how to <<_development.examples.eliminate,eliminate port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    phases>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.examples.basic]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== A Basic Portfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                rrdtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             1.2.23
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          net
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-2+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         julesverne
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Round Robin Database
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    RRDtool is a system to store and display time-series data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        https://oss.oetiker.ch/rrdtool/pub/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ftp://ftp.pucpr.br/rrdtool/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib         path:bin/perl:perl5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:tcl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args      --enable-perl-site-install \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --mandir=${prefix}/share/man
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.examples.augment]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Augment Phases Using pre- / post-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To augment a port's installation phase, and not override it, you may use pre- and post- installation phases as shown in this example.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Install example files not installed by the Makefile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    file mkdir ${destroot}${prefix}/share/doc/${name}/examples
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    file copy ${worksrcpath}/examples/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${destroot}${prefix}/share/doc/${name}/examples
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.examples.override]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Overriding Phases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To override the automatic MacPorts installation phase processing, define your own installation phases as shown in this example.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -m 755 -d ${destroot}${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -m 755 ${worksrcpath}/README ${destroot}${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.examples.eliminate]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Eliminating Phases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To eliminate a default phase, simply define a phase with no contents as shown.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Because many software packages do not use [option]``configure``, a keyword is provided to eliminate the [option]``configure`` phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Another exception is the [option]``destroot`` phase may not be eliminated.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See the chapter <<_reference,Portfile Reference>> for full information.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.examples.startupitem]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Creating a StartupItem
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Startupitems may be placed in the global section of a Portfile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.create      yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.name        nmicmpd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+startupitem.executable  "${prefix}/bin/nmicmpd"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.variants]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Port Variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Variants are a way for port authors to provide options that may be invoked at install time.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+They are declared in the global section of a Portfile using the "`variant`" keyword, and should include <<_reference.variants.descriptions,carefully chosen variant
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    descriptions>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.variants.options]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Example Variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The most common actions for user-selected variants is to add or remove dependencies, configure arguments, and build arguments according to various options a port author wishes to provide.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Here is an example of several variants that modify depends_lib and configure arguments for a port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant fastcgi description {Add fastcgi binary} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            --enable-fastcgi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            --enable-force-cgi-redirect \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            --enable-memory-limit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant gmp description {Add GNU MP functions} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append port:gmp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append --with-gmp=${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant sqlite description {Build sqlite support} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        port:sqlite3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --without-sqlite \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --without-pdo-sqlite
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --with-sqlite \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --with-pdo-sqlite=${prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --enable-sqlite-utf8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Variant names may contain only the characters A-Z, a-z, and the underscore character "`_`".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Therefore, take care to never use hyphens in variant names.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In the example variant declaration below, the configure argument `--without-x` is removed and a number of others are appended.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant x11 description {Builds port as an X11 program with Lucid widgets} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-delete   --without-x
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   --with-x-toolkit=lucid \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --without-carbon \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --with-xpm \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --with-jpeg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --with-tiff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --with-gif \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --with-png
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append      lib:libX11:XFree86 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            lib:libXpm:XFree86 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:jpeg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:tiff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:libungif \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:libpng
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.variants.phase]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Variant Actions in a Phase
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a variant requires options in addition to those provided by keywords using -append and/or -delete, in other words, any actions that would normally take place within a port installation phase, do not try to do this within the variant declaration.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Rather, modify the behavior of any affected phases when the variant is invoked using the variant_isset keyword.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -m 755 -d ${destroot}${prefix}/etc/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall ${worksrcpath}/examples/foo.conf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${destroot}${prefix}/etc/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[variant_isset carbon]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        delete ${destroot}${prefix}/bin/emacs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        delete ${destroot}${prefix}/bin/emacs-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.variants.default]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Default Variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Variants are used to specify actions that lie outside the core functions of an application or port, but there may be some cases where you wish to specify these non-core functions by default.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For this purpose you may use the keyword default_variants.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default_variants    +foo +bar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The default_variant keyword may only be used in the global Portfile section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.patches]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Patch Files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Patch files are files created with the Unix command `diff` that are applied using the command `patch` to modify text files to fix bugs or extend functionality.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.patches.portfile]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Creating Portfile Patches
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you wish to contribute modifications or fixes to a Portfile, you should do so in the form of a patch.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Follow the steps below to create Portfile patch files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Make a copy of the Portfile you wish to modify; both files must be in the same directory, though it may be any directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% cp -p Portfile Portfile.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Edit the file to make it as you want it to be after it is fetched.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Now use the Unix command ``diff -u ``to create a "`unified`" diff patch file. Put the name of the port in the patchfile, for example, Portfile-rrdtool.diff.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% diff -u Portfile.orig Portfile > Portfile-rrdtool.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. A patch file that is a "`unified`" diff file is the easiest to interpret by humans and this type should always be used for ports. The Portfile patch below will change the version and checksums when applied.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- Portfile.orig        2011-07-25 18:52:12.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ Portfile    2011-07-25 18:53:35.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,7 +2,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name                foo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-version             1.3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++version             1.4.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ categories          net
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ maintainers         nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ description         A network monitoring daemon.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,9 +13,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ homepage            http://rsug.itd.umich.edu/software/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ master_sites        ${homepage}/files/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-checksums           rmd160 f0953b21cdb5eb327e40d4b215110b71
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++checksums           rmd160 01532e67a596bfff6a54aa36face26ae
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extract.suffix      .tgz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Now you may attach the patch file to a MacPorts Trac ticket for the port author to evaluate.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.patches.source]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Creating Source Code Patches
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Necessary or useful patches to application source code should generally be sent to the application developer rather than the port author so the modifications may be included in the next version of the application.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Generally speaking, you should create one patch file for each logical change that needs to be applied.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Patchfile filenames should uniquely distinguish the file and generally be of the form [path]_patch-_[replaceable]``<identifier>``[path]_.diff_, where the [replaceable]``identifier`` is a reference to the problem or bug it is supposed to solve.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An example filename would be [path]_patch-_[replaceable]``destdir-variable-fix``[path]_.diff_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To create a patch to modify a single file, follow the steps below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Locate the file you wish to patch in its original location within the unpacked source directory and make a duplicate of it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% cd ~/Downloads/foo-1.34/src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% cp -p Makefile.in Makefile.in.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Edit the file and modify the text to reflect your corrections.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Now `cd` to the top-level directory of the unpacked source, and use the Unix command `diff -u` to create a "`unified`" diff patch file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% cd ~/Downloads/foo-1.34
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% diff -u src/Makefile.in.orig src/Makefile.in > patch-destdir-variable-fix.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You should execute `diff` from the top-level directory of the unpacked source code, because during the patch phase MacPorts by default uses the patch argument [option]``-p0``, which does not strip prefixes with any leading slashes from file names found in the patch file (as opposed to [option]``-p1`` that strips one, etc), and any path not relative to the top-level directory of the unpacked source will fail during the patch phase.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you find an existing source file patch you wish to use that contains leading path information (diff was executed from a directory higher than the top-level source directory), you will need to use the <<_reference.phases.patch,patch phase
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            keyword>>``patch.pre_args`` to specify a [option]``-px`` value for how many prefixes with leading slashes are to be stripped off.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. A patch file that is a "`unified`" diff file is the easiest to interpret by humans and this type should always be used for ports. See the example below where a patch adds [var]``DESTDIR`` support to [path]_Makefile.in_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/Makefile.in.orig   2007-06-01 16:30:47.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/Makefile.in       2007-06-20 10:10:59.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -131,23 +131,23 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        $(INSTALL_DATA)/gdata $(INSTALL_DATA)/perl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ install-lib:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-       -mkdir -p $(INSTALL_LIB)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       -mkdir -p $(DESTDIR)$(INSTALL_LIB)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        $(PERL) tools/install_lib -s src -l $(INSTALL_LIB) $(LIBS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-       cp $(TEXT) $(INSTALL_LIB)/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       cp $(TEXT) $(DESTDIR)$(INSTALL_LIB)/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Place the patch [path]_patch-destdir-variable-fix.diff_ in the directory [path]_${portpath}/files_ and use it in a port using the `patchfiles` keyword. [var]``${portpath}`` may be in a local Portfile repository during development, or [path]_files/_ may be in a port's [var]``${portpath}`` in the global MacPorts repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-destdir-variable-fix.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.patches.applying]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Manually Applying Patches
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacPorts applies patch files automatically, but you may want to know how to apply patch files manually if you want to test patch files you have created or you wish to apply uncommitted Portfile patches.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Change to the directory containing the file to be patched. In this example, we'll apply a Portfile patch to the postfix port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% cd $(port dir postfix)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Now apply the patch from your Downloads folder, or wherever you put it. The patchfile knows the name of the file to be patched.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% patch -p0 < ~/Downloads/Portfile-postfix.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patching file Portfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.local_repositories]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Local Portfile Repositories
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To create and test Portfiles that are not yet published in the MacPorts ports tree, you may create a local Portfile repository as shown.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Replace the hypothetical user [path]_julesverne_ with your username in the example below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Open [path]_sources.conf_ in a text editor. For example, to open it into TextEdit:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% open -e ${prefix}/etc/macports/sources.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Insert a URL pointing to your local repository location before the rsync URL as shown.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+file:///Users/julesverne/ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rsync://rsync.macports.org/macports/release/tarballs/ports.tar [default]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The file URL should always appear before the rsync URL so that local Portfiles can be tested that are duplicated in the MacPorts tree, because `port` will always operate on the first Portfile it encounters.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. Place the Portfiles you create inside a directory whose name matches the port, which should in turn be placed inside a directory that reflects the port's primary category (the first category entry in the Portfile). For example, to create the directory for a hypothetical port "`bestevergame`" and to begin editing its Portfile in TextEdit, you can use these commands:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% mkdir -p ~/ports/games/bestevergame
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% cd ~/ports/games/bestevergame
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% touch Portfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% open -e Portfile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See other sections in the Guide for help writing Portfiles.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If you've already written the Portfile elsewhere, you can instead copy the Portfile into this directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. If your Portfile needs to apply any patches to the port's source files, create a [path]_files_ directory and place the patchfiles in it, and reference the patchfiles in your Portfile, as explained in <<_development.patches.source,Creating Source Code Patches>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. After you create or update your Portfile, use `portindex` in the local repository's directory to create or update the index of the ports in your local repository.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% cd ~/ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% portindex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Creating software index in /Users/julesverne/ports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Adding port games/bestevergame
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Total number of ports parsed:   1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Ports successfully parsed:      1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Ports failed:                   0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Once the local port is added to the [path]_PortIndex_, it becomes available for searching or installation as with any other Portfile in the MacPorts tree:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% port search bestever
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bestevergame @1.1 (games)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    The Best Ever Game
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.practices]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Portfile Best Practices
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This section contains practical guidelines for creating Portfiles that install smoothly and provide consistency between ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following sections are on the TODO list.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.practices.portstyle]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Port Style
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles may be thought of as a set of declarations rather than a piece of code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It is best to format the port file is if it were a table consisting of keys and values.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In fact, the simplest of ports will only contain a small block of values.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Nicely formatted compact tables will result in more values being visible at the same time.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The two columns should be separated by spaces (not tabs), so you should set your editor to use soft tabs, which are tabs emulated by spaces.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+By default, the top line of all Portfiles should use a modeline that defines soft tabs for the vim and emacs editors as shown.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The left column should consist of single words, and will be separated from the more complex right side by spaces in multiples of four.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Variable assignments and variant declarations are exceptions, and may be considered a single word on the left side, with a single space between words.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set libver "8.5"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When items require multiple lines with line continuation, they can be separated from the previous and next items with a blank line.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Indent the additional lines to the same column that the right side begins on in the first line.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums               rmd160  7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Should a key item such as a phase or variant require braces, the opening brace should appear on the same line and the closing brace should be on its own line.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The block formed by the braces is indented for visual clearance.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Braces merely quoting strings, for example the description of variants, are placed on the same line without line breaks.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant mysql5 description {Enable support for MySQL 5} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append        port:mysql5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-replace    --without-mysql5 --with-mysql5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Frequently multiple items are necessary in the second column.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For example, to set multiple source download locations, multiple `master_sites` must be defined.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Unless the second column items are few and short you should place each additional item on a new line and separate lines with a backslash.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Indent the lines after the first line to make it clear the items are second column values and also to emphasize the unity of the block.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.keepdirs    ${destroot}${prefix}/var/run \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     ${destroot}${prefix}/var/log \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     ${destroot}${prefix}/var/cache/mrtg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.practices.dont_overwrite]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Don't Overwrite Config Files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.practices.install_docs]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Install Docs and Examples
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.practices.provide_messages]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Provide User Messages
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.practices.use_variables]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Use Variables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TODO: Set variables so changing paths may be done in one place; use them anytime it makes updates simpler: distname ${name}-src-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.practices.rename_replace_port]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Renaming or replacing a port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If there is the need to replace a port with another port or a renaming is necessary for some reason, the port should be marked as ``replaced_by``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+As an illustration of a typical workflow the port "`skrooge-devel`" shall be taken.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This port had been used for testing new versions of skrooge, but it turned out to have become unnecessary due to the fact that skrooge's developers currently prefer a distribution via port "`skrooge`" instead. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+At the end of this section the use of the obsolete PortGroup is suggested as an even shorter approach to the below described workflow.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.replaced_by]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+==== The long way
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Skrooge's original devel port file looked like this:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           kde4    1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.type          svn
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.url             svn://anonsvn.kde.org/home/kde/trunk/extragear/office/skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.revision        1215845
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             0.8.0-${svn.revision}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          kde finance
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         mk pixilla openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    Personal finance management tool for KDE4, with the aim of being highly intuitive, while \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    providing powerful functions such as reporting (including graphics), persistent \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Undo/Redo, encryption, and much more...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts           skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://skrooge.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        https://skrooge.org/files/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type      none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname            skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:kdelibs4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libofx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:qca-ossl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:kdebase4-runtime \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:oxygen-icons
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The following steps have to be taken to ensure a smooth transition for a MacPorts user updating his local installation using ``sudo port upgrade``:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. add the line `replaced_by foo` where foo is the port this one is replaced by; when a user upgrades this port, MacPorts will instead install the replacement port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+replaced_by         skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. increase the version, revision, or epoch, so that users who have this port installed will get notice in `port outdated` that they should upgrade it and trigger the above process
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. clear distfiles (have a line reading only ``distfiles``) so that no distfile is downloaded for this stub port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. delete master_sites since there aren't any distfiles to download
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. disable livecheck
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type      none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+. add a pre-configure block with a `ui_error` and `return -code error` explaining to users who try to install this port that the port has been replaced
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ui_error "Please do not install this port since it has been replaced by 'skrooge'."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return -code error
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+With above modifications the port file eventually looks like this:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.revision        1215845
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             0.8.0-${svn.revision}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+replaced_by         skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          kde finance
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         mk pixilla openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    Personal finance management tool for KDE4, with the aim of being highly intuitive, while \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    providing powerful functions such as reporting (including graphics), persistent \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Undo/Redo, encryption, and much more...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://skrooge.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type      none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ui_error "Please do not install this port since it has been replaced by 'skrooge'."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return -code error
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A user upgrading ports will experience the following for port "`skrooge-devel`":
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% sudo port upgrade skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  skrooge-devel is replaced by skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Computing dependencies for skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Fetching skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Verifying checksum(s) for skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Extracting skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Configuring skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Building skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Staging skrooge into destroot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Deactivating skrooge-devel @0.8.0-1215845_0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Cleaning skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Computing dependencies for skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Installing skrooge @0.8.0.6_0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Activating skrooge @0.8.0.6_0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+##########################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Don't forget that dbus needs to be started as the local 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# user (not with sudo) before any KDE programs will launch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# To start it run the following command:                  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# launchctl load /Library/LaunchAgents/org.freedesktop.dbus-session.plist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+##########################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+######################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#  Programs will not start until you run the command 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#  'sudo chown -R $USER ~/Library/Preferences/KDE'  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#  replacing $USER with your username.              
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+######################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Cleaning skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In case a user actually tries to install the obsolete port "`skrooge-devel`" it would be pointed out by an error message that this is impossible now:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% sudo port install skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Fetching skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Verifying checksum(s) for skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Extracting skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--->  Configuring skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: Please do not install this port since it has been replaced by 'skrooge'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: Target org.macports.configure returned: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Log for skrooge-devel is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_kde_skrooge-devel/main.log
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Error: Status 1 encountered during processing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To report a bug, see <https://guide.macports.org/#project.tickets>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.obsolete_portgroup]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+==== The shortcut: PortGroup obsolete
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Using the PortGroup obsolete makes the task described in the previous subsection much easier:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           obsolete 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                skrooge-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+replaced_by         skrooge
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+svn.revision        1215845
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             0.8.0-${svn.revision}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          kde finance
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The PortGroup defines a number of reasonable defaults for a port that is only there to inform users that they should uninstall it and install something else instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You might want to override some of the defaults though.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For details have a look at the PortGroup's source code in [path]_${prefix}/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/_resources/port1.0/group/obsolete-1.0.tcl_.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[NOTE]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[var]``replaced_by`` can be specified before or after the [var]``PortGroup`` line.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+====
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.practices.removing_port]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+=== Removing a port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a port has to be removed from MacPorts one should consider the hints concerning replacing it by some alternative port given <<_development.practices.rename_replace_port,above>>.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+It is recommended to wait one year before the port directory is actually removed from the MacPorts ports tree. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If there is no replacement for a port, it can simply be deleted immediately.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_development.buildbot]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== MacPorts' buildbot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The link:buildbot is a port build service which builds ports using the MacPorts Buildbot (link:MPBB) scripts.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Every time a maintainer commits changes to MacPorts' ports Git repository the buildbot will check whether a rebuild of the corresponding port(s) would be necessary.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the port(s) in question are distributable their binary archives will be kept for subsequent distribution for all versions of the Mac operating system for which build machines are available.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See the link:list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        of builders to find out which platforms these currently are.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If a build error occurred for a port its maintainer will be informed via an email so that problems which did not surface on the maintainer's machine will not go unnoticed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Port maintainers will find the link:waterfall and the link:builders views most useful since they give information about the build status and offer the possibility to build one's port(s) on specific builders.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Thus the buildbot helps to keep MacPorts consistent on various macOS versions, i.e., a maintainer does not need access to these versions anymore in order to assure that the port(s) maintained build without problems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Currently only the default port variants will be built and kept.
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portfileref.adoc b/guide/adoc/portfileref.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..10703d3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portfileref.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,77 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= Portfile Reference
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:doctype: book
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sectnums:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:toc: left
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:icons: font
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:experimental:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:sourcedir: .
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This chapter serves as a reference for the major elements of a Portfile: port phases, dependencies, StartupItems, variables, keywords, and Tcl extensions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfile-keywords.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfile-variables.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfile-phase.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfile-dependencies.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfile-variants.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfile-tcl.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfile-startupitem.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portfile-livecheck.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== PortGroups
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portgroups.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portgroup-github.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portgroup-gnustep.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portgroup-haskell.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portgroup-perl.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portgroup-python.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portgroup-ruby.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+include::portgroup-xcode.adoc[]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+:leveloffset: 0
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portgroup-github.adoc b/guide/adoc/portgroup-github.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..2780e76
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portgroup-github.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,118 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.github]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= PortGroup github
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The `github` portgroup allows for efficient porting of software hosted on GitHub.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.github.description]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Description
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This portgroup greatly simplifies the porting of software hosted on GitHub.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Provided a GitHub repository author follows common GitHub practices, a port can be almost fully configured simply by declaring the repository coordinates.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The `github` portgroup is indeed capable of configuring, amongst other things: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* The port ``name``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* The port ``version``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* The `distfiles` (if the project uses GitHub releases).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* The `livecheck` parameters.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.github.setup]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Setting up the GitHub repository coordinates
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The main port configuration is triggered by the usage of the `github.setup` keyword: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        author project version [tag_prefix]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+By default, the port `name` will be set to the GitHub project name (``project``) and `version` will be set to the GitHub project ``version``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The port name can be overridden by using the `name` keyword. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The `tag_prefix` is optional, and it's used to specify a prefix to use when constructing the tag name.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If, for example, the project uses tags such as ``v1.0.0``, then the `tag_prefix` should be set to ``v``, as in the following example: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        author project version v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.github.distfilestrategy]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Choosing a distfile strategy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+GitHub, and as a consequence the `github` portgroup, offers multiple mechanisms to get a distfile: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Distfile from a `git` commit or tag.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Distfile from a GitHub link:release. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Distfile from a GitHub link:download. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The default behaviour of the portgroup is using GitHub automatically generated distfile from a `git` commit or tag.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, the best practice should be using a GitHub release. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.github.distfile]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Distfile from tag or commit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The default behaviour of the `github` portgroup is leveraging GitHub's ability to create a distfile from a `git` tag or commit.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+In this case, the `distname` is irrelevant and should not be set. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the project's developers do not tag their releases, they should be encouraged to do so.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Until they do, or in the case in which an untagged development version has to be used, port maintainers have the possibility of specifying a `git` commit hash and manually set the `version` field.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the project does not assign version numbers the port maintainer has to define one.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Such versions typically format the date of the chosen commit using the `YYYYMMDD` pattern.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If, for example, the port maintainer decides to use a changeset with the hash ``0ff25277c3842598d919cd3c73d60768``, committed on April 1, 2014, then the following would be used: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        someone someproject 0ff25277c3842598d919cd3c73d60768
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             20140401
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.github.releases]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Distfile from a GitHub release
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The `github` portgroup allows maintainers to easily configure the distfiles when the project uses GitHub releases.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A release is the best distfile candidate, and project maintainers should be encouraged to use them.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To enable this feature, the following keyword must be used: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from releases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+By default, the `github` portgroup sets `distname` to: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname            ${github.project}-${github.version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, GitHub does not enforce any rule for release distfiles, so port maintainers may need to override the `distname` as they would do for other ports. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.github.downloads]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Distfile from a GitHub download
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Older projects use the discontinued link:downloads service.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+New GitHub downloads can no longer be created, but old ones are still available. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the project doesn't have GitHub releases but does have GitHub downloads, they can be used using the following keyword: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from downloads
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Since GitHub doesn't enforce any naming rules for downloads, the portgroup can only provide a sensible default value for ``distname``, which can be overridden if necessary. 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.github.submodule]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== Using repositories with git submodules
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the project uses `git` submodules, some projects' tag- or commit-based distfiles will not contain all the necessary files.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Once again, the best distfile candidate (if available) is a distfile from GitHub releases, as described in the previous sections.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, in the case a project doesn't provide any other alternative, a project using submodules can be successfully retrieved by fetching the sources using `git` and then using a `post-fetch` to initialize the submodules: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fetch.type          git
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-fetch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    system -W ${worksrcpath} "git submodule update --init"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portgroup-gnustep.adoc b/guide/adoc/portgroup-gnustep.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..45127f8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portgroup-gnustep.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,117 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.gnustep]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= PortGroup gnustep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup gnustep allows for efficient porting of GNUstep-based open source software using the GNU objective-C runtime that defines options for the configuration, build, and destroot phases, and also defines some values for GNUstep-based software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+A minimum Portfile using the gnustep PortGroup class need only define the fetch and the checksum phases.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.gnustep.portgroup_keywords]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== gnustep PortGroup Specific Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles using the gnustep PortGroup allow for port authors to set the following keywords in addition to the general Portfile keywords.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+gnustep.post_flags::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+An associative array which specifies the sub-directories relative to ${worksrcpath} and the SHARED_LD_POSTFLAGS variables to be added to GNUmakefile.preamble in those sub-directories.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This helps making the patching process easier on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Type: optional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    array set gnustep.post_flags {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        BundleSubDir "-lfoo -lbar"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+gnustep.cc::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Define the gcc compiler to use when compiling a port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Type: optional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Default: gcc-mp-4.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+gnustep.cc gcc-mp-4.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant with_docs::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Many GNUstep packages include a Documentation sub-directory that is not built by default.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Enabling this variant builds and installs the included documentation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Type: optional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+%% port install gnustep-gui +with_docs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.gnustep.filesystem_keywords]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== gnustep FilesystemLayout Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup gnustep supports both the traditional gnustep file layout and the new fhs file layout.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+However, a given ported application does not necessarily support both.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The Portfiles have access to many procedures to handle these two layouts:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set_gnustep_make::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets GNUSTEP_MAKEFILES according to the FilesystemLayout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set_gnustep_env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets DYLD_LIBRARY_PATH and PATH for the gnustep FilesystemLayout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+gnustep_layout::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Returns true (1) if current file layout is gnustep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set_system_library::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets GNUSTEP_SYSTEM_LIBRARY according to the FilesystemLayout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set_local_library::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Sets GNUSTEP_LOCAL_LIBRARY according to the FilesystemLayout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.gnustep.sugar]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== gnustep PortGroup Sugar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles using PortGroup gnustep do not need to define the following variables:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: gnustep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: http://www.gnustep.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: gnustep:core
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: gnustep-core
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_configure::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: DYLD_LIBRARY_PATH PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pre_args-append::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: CC=gcc-mp-4.2 GNUSTEP_MAKEFILES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.type::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: gnu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: DYLD_LIBRARY_PATH PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.pre_args-append::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: messages=yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.env::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: DYLD_LIBRARY_PATH PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.pre_args-append::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: messages=yes
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portgroup-haskell.adoc b/guide/adoc/portgroup-haskell.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..4bb3735
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portgroup-haskell.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,60 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.haskell]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= PortGroup haskell
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup haskell simplifies the addition of Haskell packages.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.haskell.keywords]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== haskell PortGroup Specific Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles using the haskell PortGroup allow for port authors to set the following keywords in addition to the general Portfile keywords.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+haskell.setup::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword sets a number of port variables.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Type: required
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Synopsis: the first argument is the package name, as called by hackageDB; the second is the version number
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+haskell.setup   digest 0.0.0.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.haskell.sugar]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== haskell PortGroup Sugar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles using PortGroup haskell do not need to define the following variables:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: hs-[string tolower ${package}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: ${version} (from haskell.setup)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: devel haskell
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: https://hackage.haskell.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: ${homepage}/packages/archive/${package}/${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: ${package}-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: ghc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure, build, and destroot phases::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: proper setup to run these phases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: creates and installs (into destroot) the register.sh and unregister.sh scripts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-activate::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: runs the register.sh scripts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: runs livecheck against the package's information page
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portgroup-perl.adoc b/guide/adoc/portgroup-perl.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..49ec4d9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portgroup-perl.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,68 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.perl]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= PortGroup perl5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup perl5 allows for efficient porting of perl modules and other perl open source software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.perl.keywords]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== perl5 PortGroup Specific Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles using the perl5 PortGroup allow for port authors to set the following keywords in addition to the general Portfile keywords.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+perl5.setup::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This keyword sets the ${distfile} and ${version}.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Type: required
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+perl5.setup          Net-Telnet 3.03
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+perl5.use_module_build::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Perl modules are ordinarily assumed to be built with ExtUtils::MakeMaker.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Use this keyword if a module must be built using Module::Build instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Type: optional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* Example:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[source]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+perl5.use_module_build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.perl.sugar]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== perl5 PortGroup Sugar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles using PortGroup perl5 do not need to define the following variables:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: perl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: perl_cpan:${perl5.cpandir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: perl5.26
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_configure::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Default: no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.perl.variables]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== perl5 PortGroup Specific Variables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When the perl5 PortGroup is declared within a Portfile, the following variables are provided during port install.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+perl5.version::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The MacPorts Perl version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+perl5.bin::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The Perl binary path (i.e., [path]_${prefix}/bin/perl_).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+perl5.lib::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Path to the Perl vendor directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+perl5.archlib::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Path to the Perl architecture-dependent modules directory.
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/adoc/portgroup-python.adoc b/guide/adoc/portgroup-python.adoc
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..9b364d8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/adoc/portgroup-python.adoc
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,136 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.python]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+= PortGroup python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup python allows for efficient porting of python-based open source software.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[[_reference.portgroup.python.keywords]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+== python PortGroup Specific Keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfiles using the python PortGroup allow for port authors to set the following keywords in addition to the general Portfile keywords.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Defines the python versions supported by this port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If the port name starts with "`py-`", then a subport will be defined for each version in the list.