svn commit: r46900 - head/en_US.ISO8859-1/books/porters-handbook/makefiles
Mathieu Arnold
mat at FreeBSD.org
Tue Jun 30 11:10:39 UTC 2015
Author: mat
Date: Tue Jun 30 11:10:38 2015
New Revision: 46900
URL: https://svnweb.freebsd.org/changeset/doc/46900
Log:
Document the new multiple-USE_GITHUB.
Approved by: wblock (mentor)
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D2781
Modified:
head/en_US.ISO8859-1/books/porters-handbook/makefiles/chapter.xml
Modified: head/en_US.ISO8859-1/books/porters-handbook/makefiles/chapter.xml
==============================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/makefiles/chapter.xml Tue Jun 30 09:03:55 2015 (r46899)
+++ head/en_US.ISO8859-1/books/porters-handbook/makefiles/chapter.xml Tue Jun 30 11:10:38 2015 (r46900)
@@ -1930,8 +1930,9 @@ MASTER_SITE_SUBDIR= stardict/WyabdcRealP
</tgroup>
</table>
</sect3>
+ </sect2>
- <sect3 xml:id="makefile-master_sites-github">
+ <sect2 xml:id="makefile-master_sites-github">
<title><varname>USE_GITHUB</varname></title>
<para>If the distribution file comes from a specific commit or
@@ -2009,8 +2010,8 @@ GH_ACCOUNT= freebsd</programlisting>
<para>While trying to make a port for the bleeding edge
version of <application>pkg</application> from the &os;
user on github, at <link
- xlink:href="https://github.com/freebsd/pkg"/>, The
- <filename>Makefile</filename> would end up looking like
+ xlink:href="https://github.com/freebsd/pkg"/>, the
+ <filename>Makefile</filename> ends up looking like
this (slightly stripped for the example):</para>
<programlisting>PORTNAME= pkg-devel
@@ -2051,6 +2052,87 @@ USE_GITHUB= yes</programlisting>
<varname>${WRKDIR}/foo-1.0.2</varname>.</para>
</example>
+ <sect3>
+ <title>Fetching Multiple Files From GitHub</title>
+
+ <para>The <varname>USE_GITHUB</varname> framework also
+ supports fetching multiple distribution files from
+ different places in GitHub. It works in a way very
+ similar to <xref
+ linkend="porting-master-sites-n"/>.</para>
+
+ <para>Multiple values are added to
+ <varname>GH_ACCOUNT</varname>,
+ <varname>GH_PROJECT</varname>, and
+ <varname>GH_TAGNAME</varname>. Each different value is
+ assigned a tag. The main value can either have no tag, or
+ the <literal>:DEFAULT</literal> tag. A value can be
+ omitted if it is the same as the default as listed in
+ <xref
+ linkend="makefile-master_sites-github-description"/>.</para>
+
+ <para>For each tag, a
+ <varname>${WRKSRC_<replaceable>tag</replaceable>}</varname>
+ helper variable is created, containing the directory into
+ which the file has been extracted. The
+ <varname>${WRKSRC_<replaceable>tag</replaceable>}</varname>
+ variables can be used to move directories around during
+ <buildtarget>post-extract</buildtarget>, or add to
+ <varname>CONFIGURE_ARGS</varname>, or whatever is needed
+ so that the software builds correctly.</para>
+
+ <example xml:id="makefile-master_sites-github-multi">
+ <title>Use of <varname>USE_GITHUB</varname> with Multiple
+ Distribution Files</title>
+
+ <para>From time to time, there is a need to fetch more
+ than one distribution file. For example, when the
+ upstream git repository uses submodules. This can be
+ done easily using tags in the
+ <varname>GH_<replaceable>*</replaceable></varname>
+ variables:</para>
+
+ <programlisting>PORTNAME= foo
+PORTVERSION= 1.0.2
+
+USE_GITHUB= yes
+GH_ACCOUNT= bar:icons,contrib
+GH_PROJECT= foo-icons:icons foo-contrib:contrib
+GH_TAGNAME= 1.0:icons fa579bc:contrib
+
+CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib}
+
+post-extract:
+ @${MV} ${WRKSRC_icons} ${WRKSRC}/icons</programlisting>
+
+ <para>This will fetch three distribution files from
+ github. The default one comes from
+ <filename>foo/foo</filename> and is version
+ <literal>1.0.2</literal>. The second one, tagged
+ <literal>icons</literal>, comes from
+ <filename>bar/foo-icons</filename> and is in version
+ <literal>1.0</literal>. The third one comes from
+ <filename>bar/foo-contrib</filename> and uses the
+ <application>Git</application> commit
+ <literal>fa579bc</literal>. The distribution files are
+ named <filename>foo-foo-1.0.2_GH0.tar.gz</filename>,
+ <filename>bar-foo-icons-1.0_GH0.tar.gz</filename>, and
+ <filename>bar-foo-contrib-fa579bc_GH0.tar.gz</filename>.</para>
+
+ <para>All the distribution files are extracted in
+ <varname>${WRKDIR}</varname> in their respective
+ subdirectories. The default file is still extracted in
+ <varname>${WRKSRC}</varname>, in this case,
+ <filename>${WRKDIR}/foo-1.0.2</filename>. Each
+ additional distribution file is extracted in
+ <varname>${WRKSRC_<replaceable>tag</replaceable>}</varname>.
+ Here, for the <literal>icons</literal> tag, it is called
+ <varname>${WRKSRC_icons}</varname> and it contains
+ <filename>${WRKDIR}/foo-icons-1.0</filename>. The file
+ with the <literal>contrib</literal> tag is called
+ <varname>${WRKSRC_contrib}</varname> and contains
+ <literal>${WRKDIR}/foo-contrib-fa579bc</literal>.</para>
+ </example>
</sect3>
</sect2>
@@ -2185,9 +2267,8 @@ EXTRACT_ONLY= source.tar.gz</programlist
</sect2>
<sect2 xml:id="porting-master-sites-n">
- <title>Multiple Distribution Files or Patches from Different
- Sites and Subdirectories
- (<literal>MASTER_SITES:n</literal>)</title>
+ <title>Multiple Distribution or Patches Files from Multiple
+ Locations</title>
<para>(Consider this to be a somewhat
<quote>advanced topic</quote>; those new to this document
More information about the svn-doc-head
mailing list