<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-guide.

</pre>
<p><a href="https://github.com/macports/macports-guide/commit/b3be0d0468303dbea8eba25c76f7e071ef08267b">https://github.com/macports/macports-guide/commit/b3be0d0468303dbea8eba25c76f7e071ef08267b</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 b3be0d0  guide: additions for subport
</span>b3be0d0 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit b3be0d0468303dbea8eba25c76f7e071ef08267b
</span>Author: Jim DeLaHunt <from+project_by_git@jdlh.com>
AuthorDate: Fri Dec 20 18:52:36 2024 -0500

<span style='display:block; white-space:pre;color:#404040;'>    guide: additions for subport
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Co-Authored-By: Christopher Nielsen <mascguy@github.com>
</span><span style='display:block; white-space:pre;color:#404040;'>    Fixes: https://trac.macports.org/ticket/36957
</span>---
 guide/xml/portfile-subports.xml | 49 +++++++++++++++++++++++
 guide/xml/portfiledev.xml       | 86 +++++++++++++++++++++++++++++++++++++++++
 guide/xml/portfileref.xml       |  3 ++
 3 files changed, 138 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/xml/portfile-subports.xml b/guide/xml/portfile-subports.xml
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..74b3d64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/xml/portfile-subports.xml
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<?xml version="1.0" encoding="UTF-8"?>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V5.0//EN"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"http://docbook.org/xml/5.0/dtd/docbook.dtd">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+<section xml:id="reference.subports" xmlns:xlink="http://www.w3.org/1999/xlink">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  <title>Subports</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  <para>The subport declaration causes MacPorts to define an additional port,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  with the <literal>name</literal> given by the declaration. The keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  for the subport are those in the global section of the Portfile, and those
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  in the brace-enclosed <literal>body</literal>.</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>subport <replaceable>name</replaceable> <replaceable>body</replaceable></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>Example:</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        <programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfile                   1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                       example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib                aaa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args             --bbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport example-sub1 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append     ccc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args         --ddd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport example-sub2 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append     eee
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append  --fff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}</programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      </listitem>
</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>Because MacPorts treats each subport as a separate port declaration,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        each subport will have its own, independent phases: fetch, configure,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        build, destroot, install, activate, etc. However, because the subports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        share the global declaration part, all the subports will by default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        share the same dist_subdir. This means that MacPorts only needs to fetch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        the distfiles once, and the remaining subports can reuse the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        distfiles.</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;'>+</section>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/xml/portfiledev.xml b/guide/xml/portfiledev.xml
</span><span style='display:block; white-space:pre;color:#808080;'>index f2a4bb4..7034489 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/guide/xml/portfiledev.xml
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/xml/portfiledev.xml
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -516,6 +516,92 @@ variant sqlite description {Build sqlite support} {
</span>     </section>
   </section>
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+  <section xml:id="development.subport">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <title>Subports</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <para>MacPorts subports are a way of declaring multiple related ports in a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    single Portfile. It is especially helpful to use subports when the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    related ports share variables or keywords, because they can be declared
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    in the shared part of the Portfile and used by each subport.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <section xml:id="development.subport.declarations">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <title>Subport Declarations</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <para>subport <emphasis>name</emphasis> <emphasis>body</emphasis></para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <para>The subport declaration causes MacPorts to define an additional port,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      with the <emphasis>name</emphasis> given by the declaration. The keywords
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      for the subport are those in the global section of the Portfile, and those
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      in the brace-enclosed <emphasis>body</emphasis>.</para>
</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;'>+    <section xml:id="development.subport.examples">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <title>Subport Examples</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <para>For example, if a Portfile contains:</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfile                   1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                       example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib                aaa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args             --bbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport example-sub1 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append     ccc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args         --ddd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport example-sub2 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append     eee
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append  --fff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}</programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <para>MacPorts will produce the same results as if there were three
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      Portfiles:</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfile                   1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                       example
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib                aaa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args             --bbb</programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfile                   1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                       example-sub1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib                aaa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append         ccc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args             --ddd</programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <programlisting>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Portfile                   1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                       example-sub2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib                aaa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append         eee
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args             --bbb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append      --fff</programlisting>
</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;'>+    <section xml:id="development.subport.tips">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <title>Subport Tips</title>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      <para>Because MacPorts treats each subport as a separate port declaration,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      each subport will have its own, independent phases: fetch, configure,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      build, destroot, install, activate, etc. However, because the subports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      share the global declaration part, all the subports will by default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      share the same dist_subdir. This means that MacPorts only needs to fetch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      the distfiles once, and the remaining subports can reuse the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      distfiles.</para>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    </section>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  </section>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>   <section xml:id="development.patches">
     <title>Patch Files</title>
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/guide/xml/portfileref.xml b/guide/xml/portfileref.xml
</span><span style='display:block; white-space:pre;color:#808080;'>index f22b219..e4eee29 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/guide/xml/portfileref.xml
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/guide/xml/portfileref.xml
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -23,6 +23,9 @@
</span>   <xi:include href="portfile-variants.xml"
               xmlns:xi="http://www.w3.org/2001/XInclude" />
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+  <xi:include href="portfile-subports.xml"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              xmlns:xi="http://www.w3.org/2001/XInclude" />
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>   <xi:include href="portfile-tcl.xml"
               xmlns:xi="http://www.w3.org/2001/XInclude" />
 
</pre><pre style='margin:0'>

</pre>