o Improve documentation for MASTER_SITES:n mechanism for both simple
and advanced usage cases o Reviewer's offered lots of improvements Reviewed by: keramida, nik
This commit is contained in:
parent
3625438fed
commit
e7f2c1ecb6
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=15451
1 changed files with 633 additions and 34 deletions
|
@ -1939,46 +1939,645 @@ EXTRACT_ONLY= source.tar.gz</programlisting>
|
||||||
</note>
|
</note>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2>
|
<sect2 id="porting-master-sites-n">
|
||||||
<title>Multiple distribution files from different sites</title>
|
<title>Multiple distribution files or patches from different
|
||||||
|
sites and subdirectories
|
||||||
|
(<literal>MASTER_SITES:n</literal>)</title>
|
||||||
|
|
||||||
<para>Some applications consist of multiple distribution files that
|
<para>This section has information on the fetching mechanism
|
||||||
must be downloaded from a number of different sites. For example,
|
known as both <literal>MASTER_SITES:n</literal> and
|
||||||
<application>Ghostscript</application> consists of the core of the
|
<literal>MASTER_SITES_NN</literal>. We will refer to this
|
||||||
program, and then a large number of driver files that are used
|
mechanism as <literal>MASTER_SITES:n</literal>
|
||||||
depending on the user's printer. Some of these driver files are
|
hereon.</para>
|
||||||
supplied with the core, but many others must be downloaded from a
|
|
||||||
variety of different sites.</para>
|
|
||||||
|
|
||||||
<para>To support this, each entry in <makevar>DISTFILES</makevar> may
|
<para>A little background first. OpenBSD has a neat feature
|
||||||
be followed by a colon and a <quote>tag name</quote>. Each site
|
inside both <makevar>DISTFILES</makevar> and
|
||||||
listed in <makevar>MASTER_SITES</makevar> is then followed by a
|
<makevar>PATCHFILES</makevar> variables, both files and
|
||||||
colon, and the tag that indicates which distribution files should be
|
patches can be postfixed with <literal>:n</literal>
|
||||||
downloaded from this site.</para>
|
identifiers where <literal>n</literal> both can be
|
||||||
|
<literal>[0-9]</literal> and denote a group designation.
|
||||||
|
For example:</para>
|
||||||
|
|
||||||
<para>For example, consider an application with the source split in to
|
<programlisting>DISTFILES= alpha:0 beta:1</programlisting>
|
||||||
<filename>source1.tar.gz</filename> and
|
|
||||||
<filename>source2.tar.gz</filename>, which must be downloaded from
|
|
||||||
two different sites. The port's <filename>Makefile</filename> would
|
|
||||||
include lines like this:</para>
|
|
||||||
|
|
||||||
<programlisting>MASTER_SITES= ftp://ftp.example1.com/:source1 \
|
<para>In OpenBSD, distribution file <filename>alpha</filename>
|
||||||
ftp://ftp.example2.com/:source2
|
will be associated with variable
|
||||||
DISTFILES= source1.tar.gz:source1 \
|
<makevar>MASTER_SITES0</makevar> instead of our common
|
||||||
source2.tar.gz:source2</programlisting>
|
<makevar>MASTER_SITES</makevar> and
|
||||||
|
<filename>beta</filename> with
|
||||||
|
<makevar>MASTER_SITES1</makevar>.</para>
|
||||||
|
|
||||||
<para>Multiple distribution files can have the same tag. Continuing
|
<para>This is a very interesting feature which can decrease
|
||||||
the previous example, suppose that there was a third distfile,
|
that endless search for the correct download site.</para>
|
||||||
<filename>source3.tar.gz</filename>, that should be downloaded from
|
|
||||||
<hostid>ftp.example2.com</hostid>. The
|
|
||||||
<filename>Makefile</filename> would then be written like
|
|
||||||
this.</para>
|
|
||||||
|
|
||||||
<programlisting>MASTER_SITES= ftp://ftp.example1.com/:source1 \
|
<para>Just picture 2 files in <makevar>DISTFILES</makevar> and
|
||||||
ftp://ftp.example2.com/:source2
|
20 sites in <makevar>MASTER_SITES</makevar>, the sites slow
|
||||||
DISTFILES= source1.tar.gz:source1 \
|
as hell where <filename>beta</filename> is carried by all
|
||||||
source2.tar.gz:source2 \
|
sites in <makevar>MASTER_SITES</makevar>, and
|
||||||
source3.tar.gz:source2</programlisting>
|
<filename>alpha</filename> can only be found in the 20th
|
||||||
|
site. It would be such a waste to check all of them if
|
||||||
|
maintainer knew this beforehand, would not it? Not a good
|
||||||
|
start for that lovely weekend!</para>
|
||||||
|
|
||||||
|
<para>Now that you got the picture, just imagine more
|
||||||
|
<makevar>DISTFILES</makevar> and more
|
||||||
|
<makevar>MASTER_SITES</makevar>. Surely our
|
||||||
|
<quote>distfiles survey meister</quote> would appreciate the
|
||||||
|
network strain relieve this would bring.</para>
|
||||||
|
|
||||||
|
<para>In the next sections, information will follow on the
|
||||||
|
FreeBSD implementation of this idea. We improved a bit on
|
||||||
|
OpenBSD's concept.</para>
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<title>Simplified information</title>
|
||||||
|
|
||||||
|
<para>This section tells you how to quickly prepare fine
|
||||||
|
grained fetching of multiple distribution files and
|
||||||
|
patches from different sites and subdirectories. We
|
||||||
|
describe here a case of simplified
|
||||||
|
<literal>MASTER_SITES:n</literal> usage. This will be
|
||||||
|
sufficient for most scenarios. However, if you need
|
||||||
|
further information, you will have to refer to the next
|
||||||
|
section.</para>
|
||||||
|
|
||||||
|
<para>Some applications consist of multiple distribution
|
||||||
|
files that must be downloaded from a number of different
|
||||||
|
sites. For example,
|
||||||
|
<application>Ghostscript</application> consists of the
|
||||||
|
core of the program, and then a large number of driver
|
||||||
|
files that are used depending on the user's printer. Some
|
||||||
|
of these driver files are supplied with the core, but many
|
||||||
|
others must be downloaded from a variety of different
|
||||||
|
sites.</para>
|
||||||
|
|
||||||
|
<para>To support this, each entry in
|
||||||
|
<makevar>DISTFILES</makevar> may be followed by a colon
|
||||||
|
and a <quote>tag name</quote>. Each site listed in
|
||||||
|
<makevar>MASTER_SITES</makevar> is then followed by a
|
||||||
|
colon, and the tag that indicates which distribution files
|
||||||
|
should be downloaded from this site.</para>
|
||||||
|
|
||||||
|
<para>For example, consider an application with the source
|
||||||
|
split in two parts, <filename>source1.tar.gz</filename>
|
||||||
|
and <filename>source2.tar.gz</filename>, which must be
|
||||||
|
downloaded from two different sites. The port's
|
||||||
|
<filename>Makefile</filename> would include lines like
|
||||||
|
<xref
|
||||||
|
linkend="ports-master-sites-n-example-simple-use-one-file-per-site">.</para>
|
||||||
|
|
||||||
|
<example
|
||||||
|
id="ports-master-sites-n-example-simple-use-one-file-per-site">
|
||||||
|
<title>Simplified use of <literal>MASTER_SITES:n</literal>
|
||||||
|
with 1 file per site</title>
|
||||||
|
|
||||||
|
<programlisting>MASTER_SITES= ftp://ftp.example1.com/:source1 \
|
||||||
|
ftp://ftp.example2.com/:source2
|
||||||
|
DISTFILES= source1.tar.gz:source1 \
|
||||||
|
source2.tar.gz:source2</programlisting>
|
||||||
|
</example>
|
||||||
|
|
||||||
|
<para>Multiple distribution files can have the same tag.
|
||||||
|
Continuing the previous example, suppose that there was a
|
||||||
|
third distfile, <filename>source3.tar.gz</filename>, that
|
||||||
|
should be downloaded from
|
||||||
|
<hostid>ftp.example2.com</hostid>. The
|
||||||
|
<filename>Makefile</filename> would then be written like
|
||||||
|
<xref
|
||||||
|
linkend="ports-master-sites-n-example-simple-use-more-than-one-file-per-site">.</para>
|
||||||
|
|
||||||
|
<example
|
||||||
|
id="ports-master-sites-n-example-simple-use-more-than-one-file-per-site">
|
||||||
|
<title>Simplified use of <literal>MASTER_SITES:n</literal>
|
||||||
|
with more than 1 file per site</title>
|
||||||
|
|
||||||
|
<programlisting>MASTER_SITES= ftp://ftp.example1.com/:source1 \
|
||||||
|
ftp://ftp.example2.com/:source2
|
||||||
|
DISTFILES= source1.tar.gz:source1 \
|
||||||
|
source2.tar.gz:source2 \
|
||||||
|
source3.tar.gz:source2</programlisting>
|
||||||
|
</example>
|
||||||
|
</sect3>
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<title>Detailed information</title>
|
||||||
|
|
||||||
|
<para>Okay, so the previous section example did not reflect
|
||||||
|
your needs? In this section we will explain in detail how
|
||||||
|
the fine grained fetching mechanism
|
||||||
|
<literal>MASTER_SITES:n</literal> works and how you can
|
||||||
|
modify your ports to use it.</para>
|
||||||
|
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Elements can be postfixed with
|
||||||
|
<literal>:<replaceable>n</replaceable></literal> where
|
||||||
|
<replaceable>n</replaceable> is
|
||||||
|
<literal>[^:,]+</literal>, i.e.,
|
||||||
|
<replaceable>n</replaceable> could conceptually be any
|
||||||
|
alphanumerical string but we will limit it to
|
||||||
|
<literal>[a-zA-Z_][0-9a-zA-Z_]+</literal> for
|
||||||
|
now.</para>
|
||||||
|
|
||||||
|
<para>Moreover, string matching is case sensitive;
|
||||||
|
i.e., <literal>n</literal> is different from
|
||||||
|
<literal>N</literal>.</para>
|
||||||
|
|
||||||
|
<para>However, the following words cannot be used for
|
||||||
|
postfixing purposes since they yield special meaning:
|
||||||
|
<literal>default</literal>, <literal>all</literal> and
|
||||||
|
<literal>ALL</literal> (they are used internally in
|
||||||
|
item <xref
|
||||||
|
linkend="porting-master-sites-n-what-changes-in-port-targets">).
|
||||||
|
Furthermore, <literal>DEFAULT</literal> is a special
|
||||||
|
purpose word (check item <xref
|
||||||
|
linkend="porting-master-sites-n-DEFAULT-group">).</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Elements postfixed with <literal>:n</literal>
|
||||||
|
belong to the group <literal>n</literal>,
|
||||||
|
<literal>:m</literal> belong to group
|
||||||
|
<literal>m</literal> and so forth.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem id="porting-master-sites-n-DEFAULT-group">
|
||||||
|
<para>Elements without a postfix are groupless, i.e.,
|
||||||
|
they all belong to the special group
|
||||||
|
<literal>DEFAULT</literal>. If you postfix any
|
||||||
|
elements with <literal>DEFAULT</literal>, you are just
|
||||||
|
being reduntant unless you want to have an element
|
||||||
|
belonging to both <literal>DEFAULT</literal> and other
|
||||||
|
groups at the same time (check item <xref
|
||||||
|
linkend="porting-master-sites-n-comma-operator">).</para>
|
||||||
|
|
||||||
|
<para>The following examples are equivalent but the
|
||||||
|
first one is preferred:</para>
|
||||||
|
|
||||||
|
<programlisting>MASTER_SITES= alpha
|
||||||
|
|
||||||
|
MASTER_SITES= alpha:DEFAULT</programlisting>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Groups are not exclusive, an element may belong to
|
||||||
|
several different groups at the same time and a group
|
||||||
|
can either have either several different elements or
|
||||||
|
none at all. Repeated elements within the same group
|
||||||
|
will be simply that, repeated elements.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem id="porting-master-sites-n-comma-operator">
|
||||||
|
<para>When you want an element to belong to several
|
||||||
|
groups at the same time, you can use the comma
|
||||||
|
operator (<literal>,</literal>).</para>
|
||||||
|
|
||||||
|
<para>Instead of repeating it several times, each time
|
||||||
|
with a different postfix, we can list several groups
|
||||||
|
at once in a single postfix. For instance,
|
||||||
|
<literal>:m,n,o</literal> marks an element that
|
||||||
|
belongs to group <literal>m</literal>,
|
||||||
|
<literal>n</literal> and <literal>o</literal>.</para>
|
||||||
|
|
||||||
|
<para>All the following examples are equivalent but the
|
||||||
|
last one is preferred:</para>
|
||||||
|
|
||||||
|
<programlisting>MASTER_SITES= alpha alpha:SOME_SITE
|
||||||
|
|
||||||
|
MASTER_SITES= alpha:DEFAULT alpha:SOME_SITE
|
||||||
|
|
||||||
|
MASTER_SITES= alpha:SOME_SITE,DEFAULT
|
||||||
|
|
||||||
|
MASTER_SITES= alpha:DEFAULT,SOME_SITE</programlisting>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>All sites within a given group are sorted
|
||||||
|
according to <makevar>MASTER_SORT_AWK</makevar>. All
|
||||||
|
groups within <makevar>MASTER_SITES</makevar> and
|
||||||
|
<makevar>PATCH_SITES</makevar> are sorted as
|
||||||
|
well.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem id="porting-master-sites-n-group-semantics">
|
||||||
|
<para>Group semantics can be used in any of the
|
||||||
|
following variables <makevar>MASTER_SITES</makevar>,
|
||||||
|
<makevar>PATCH_SITES</makevar>,
|
||||||
|
<makevar>MASTER_SITE_SUBDIR</makevar>,
|
||||||
|
<makevar>PATCH_SITE_SUBDIR</makevar>,
|
||||||
|
<makevar>DISTFILES</makevar>, and
|
||||||
|
<makevar>PATCHFILES</makevar> according to the
|
||||||
|
following syntax:</para>
|
||||||
|
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>All <makevar>MASTER_SITES</makevar>,
|
||||||
|
<makevar>PATCH_SITES</makevar>,
|
||||||
|
<makevar>MASTER_SITE_SUBDIR</makevar> and
|
||||||
|
<makevar>PATCH_SITE_SUBDIR</makevar> elements must
|
||||||
|
be terminated with the forward slash
|
||||||
|
<literal>/</literal> character. If any elements
|
||||||
|
belong to any groups, the group postfix
|
||||||
|
<literal>:<replaceable>n</replaceable></literal>
|
||||||
|
must come right after the terminator
|
||||||
|
<literal>/</literal>. The
|
||||||
|
<literal>MASTER_SITES:n</literal> mechanism relies
|
||||||
|
on the existence of the terminator
|
||||||
|
<literal>/</literal> to avoid confusing elements
|
||||||
|
where a <literal>:n</literal> is a valid part of
|
||||||
|
the element with occurences where
|
||||||
|
<literal>:n</literal> denotes group
|
||||||
|
<literal>n</literal>. For compatibility purposes,
|
||||||
|
since the <literal>/</literal> terminator was not
|
||||||
|
required before in both
|
||||||
|
<makevar>MASTER_SITE_SUBDIR</makevar> and
|
||||||
|
<makevar>PATCH_SITE_SUBDIR</makevar> elements, if
|
||||||
|
the postfix immediate preceeding character is not
|
||||||
|
a <literal>/</literal> then <literal>:n</literal>
|
||||||
|
will be considered a valid part of the element
|
||||||
|
instead of a group postfix even if an element is
|
||||||
|
postfixed with <literal>:n</literal>. See both
|
||||||
|
<xref
|
||||||
|
linkend="ports-master-sites-n-example-detailed-use-master-site-subdir">
|
||||||
|
and <xref
|
||||||
|
linkend="ports-master-sites-n-example-detailed-use-complete-example-master-sites">.</para>
|
||||||
|
|
||||||
|
<example id="ports-master-sites-n-example-detailed-use-master-site-subdir">
|
||||||
|
<title>Detailed use of
|
||||||
|
<literal>MASTER_SITES:n</literal> in
|
||||||
|
<makevar>MASTER_SITE_SUBDIR</makevar></title>
|
||||||
|
|
||||||
|
<programlisting>MASTER_SITE_SUBDIR= old:n new/:NEW</programlisting>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Directories within group
|
||||||
|
<literal>DEFAULT</literal> -> old:n</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Directories within group
|
||||||
|
<literal>NEW</literal> -> new</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</example>
|
||||||
|
|
||||||
|
<example
|
||||||
|
id="ports-master-sites-n-example-detailed-use-complete-example-master-sites">
|
||||||
|
<title>Detailed use of
|
||||||
|
<literal>MASTER_SITES:n</literal> with comma
|
||||||
|
operator, multiple files, multiple sites and
|
||||||
|
multiple subdirectories</title>
|
||||||
|
|
||||||
|
<programlisting>MASTER_SITES= http://site1/%SUBDIR%/ http://site2/:DEFAULT \
|
||||||
|
http://site3/:group3 http://site4/:group4 \
|
||||||
|
http://site5/:group5 http://site6/:group6 \
|
||||||
|
http://site7/:DEFAULT,group6 \
|
||||||
|
http://site8/%SUBDIR%/:group6,group7 \
|
||||||
|
http://site9/:group8
|
||||||
|
DISTFILES= file1 file2:DEFAULT file3:group3 \
|
||||||
|
file4:group4,group5,group6 file5:grouping \
|
||||||
|
file6:group7
|
||||||
|
MASTER_SITE_SUBDIR= directory-trial:1 directory-n/:groupn \
|
||||||
|
directory-one/:group6,DEFAULT \
|
||||||
|
directory</programlisting>
|
||||||
|
|
||||||
|
<para>The previous example results in the
|
||||||
|
following fine grained fetching. Sites are
|
||||||
|
listed in the exact order they will be
|
||||||
|
used.</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para><filename>file1</filename> will be
|
||||||
|
fetched from</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_OVERRIDE</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site1/directory/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site1/directory-one/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site1/directory-trial:1/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site2/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site7/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_BACKUP</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><filename>file2</filename> will be
|
||||||
|
fetched exactly as
|
||||||
|
<filename>file1</filename> since they
|
||||||
|
both belong to the same group</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_OVERRIDE</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site1/directory/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site1/directory-one/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site1/directory-trial:1/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site2/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site7/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_BACKUP</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><filename>file3</filename> will be
|
||||||
|
fetched from</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_OVERRIDE</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site3/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_BACKUP</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><filename>file4</filename> will be
|
||||||
|
fetched from</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_OVERRIDE</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site4/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site5/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site6/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site7/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site8/directory-one/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_BACKUP</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><filename>file5</filename> will be
|
||||||
|
fetched from</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_OVERRIDE</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_BACKUP</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><filename>file6</filename> will be
|
||||||
|
fetched from</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_OVERRIDE</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>http://site8/directory-one/</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><makevar>MASTER_SITE_BACKUP</makevar></para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</example>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>How do I group one of the special variables from
|
||||||
|
<filename>bsd.sites.mk</filename>, e.g.,
|
||||||
|
<makevar>MASTER_SITE_SOURCEFORGE</makevar>?</para>
|
||||||
|
|
||||||
|
<para>See <xref
|
||||||
|
linkend="ports-master-sites-n-example-detailed-use-master-site-sourceforge">.</para>
|
||||||
|
|
||||||
|
<example
|
||||||
|
id="ports-master-sites-n-example-detailed-use-master-site-sourceforge">
|
||||||
|
<title>Detailed use of
|
||||||
|
<literal>MASTER_SITES:n</literal> with
|
||||||
|
<makevar>MASTER_SITE_SOURCEFORGE</makevar></title>
|
||||||
|
|
||||||
|
<programlisting>MASTER_SITES= http://site1/ ${MASTER_SITE_SOURCEFORGE:S/$/:sourceforge,TEST/}
|
||||||
|
DISTFILES= something.tar.gz:sourceforge</programlisting>
|
||||||
|
</example>
|
||||||
|
|
||||||
|
<para><filename>something.tar.gz</filename> will be
|
||||||
|
fetched from all sites within
|
||||||
|
<makevar>MASTER_SITE_SOURCEFORGE</makevar>.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>How do I use this with <makevar>PATCH*</makevar>
|
||||||
|
variables?</para>
|
||||||
|
|
||||||
|
<para>All examples were done with
|
||||||
|
<makevar>MASTER*</makevar> variables but they work
|
||||||
|
exactly the same for <makevar>PATCH*</makevar> ones as
|
||||||
|
can be seen in <xref
|
||||||
|
linkend="ports-master-sites-n-example-detailed-use-patch-sites">.</para>
|
||||||
|
|
||||||
|
<example
|
||||||
|
id="ports-master-sites-n-example-detailed-use-patch-sites">
|
||||||
|
<title>Simplified use of
|
||||||
|
<literal>MASTER_SITES:n</literal> with
|
||||||
|
<makevar>PATCH_SITES</makevar>.</title>
|
||||||
|
|
||||||
|
<programlisting>PATCH_SITES= http://site1/ http://site2/:test
|
||||||
|
PATCHFILES= patch1:test</programlisting>
|
||||||
|
</example>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
</sect3>
|
||||||
|
|
||||||
|
<sect3>
|
||||||
|
<title>What does change for ports? What does not?</title>
|
||||||
|
|
||||||
|
<orderedlist numeration="lowerroman">
|
||||||
|
<listitem>
|
||||||
|
<para>All current ports remain the same. The
|
||||||
|
<literal>MASTER_SITES:n</literal> feature code is only
|
||||||
|
activated if there are elements postfixed with
|
||||||
|
<literal>:<replaceable>n</replaceable></literal> like
|
||||||
|
elements according to the aforementioned syntax rules,
|
||||||
|
especially as shown in item <xref
|
||||||
|
linkend="porting-master-sites-n-group-semantics">.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem id="porting-master-sites-n-what-changes-in-port-targets">
|
||||||
|
<para>The port targets remain the same:
|
||||||
|
<maketarget>checksum</maketarget>,
|
||||||
|
<maketarget>makesum</maketarget>,
|
||||||
|
<maketarget>patch</maketarget>,
|
||||||
|
<maketarget>configure</maketarget>,
|
||||||
|
<maketarget>build</maketarget>, etc. With the obvious
|
||||||
|
exceptions of <maketarget>do-fetch</maketarget>,
|
||||||
|
<maketarget>fetch-list</maketarget>,
|
||||||
|
<maketarget>master-sites</maketarget> and
|
||||||
|
<maketarget>patch-sites</maketarget>.</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para><maketarget>do-fetch</maketarget>: deploys the
|
||||||
|
new grouping postfixed
|
||||||
|
<makevar>DISTFILES</makevar> and
|
||||||
|
<makevar>PATCHFILES</makevar> with their matching
|
||||||
|
group elements within both
|
||||||
|
<makevar>MASTER_SITES</makevar> and
|
||||||
|
<makevar>PATCH_SITES</makevar> which use matching
|
||||||
|
group elements within both
|
||||||
|
<makevar>MASTER_SITE_SUBDIR</makevar> and
|
||||||
|
<makevar>PATCH_SITE_SUBDIR</makevar>. Check <xref
|
||||||
|
linkend="ports-master-sites-n-example-detailed-use-complete-example-master-sites">.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><maketarget>fetch-list</maketarget>: works
|
||||||
|
like old <maketarget>fetch-list</maketarget> with
|
||||||
|
the exception that it groups just like
|
||||||
|
<maketarget>do-fetch</maketarget>.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><maketarget>master-sites</maketarget> and
|
||||||
|
<maketarget>patch-sites</maketarget>:
|
||||||
|
(incompatible with older versions) only return the
|
||||||
|
elements of group <literal>DEFAULT</literal>; in
|
||||||
|
fact, they execute targets
|
||||||
|
<maketarget>master-sites-default</maketarget> and
|
||||||
|
<maketarget>patch-sites-default</maketarget>
|
||||||
|
respectively.</para>
|
||||||
|
|
||||||
|
<para>Furthermore, using target either
|
||||||
|
<maketarget>master-sites-all</maketarget> or
|
||||||
|
<maketarget>patch-sites-all</maketarget> is
|
||||||
|
preferred to directly checking either
|
||||||
|
<maketarget>MASTER_SITES</maketarget> or
|
||||||
|
<maketarget>PATCH_SITES</maketarget>. Also,
|
||||||
|
directly checking is not guaranteed to work in any
|
||||||
|
future versions. Check item <xref
|
||||||
|
linkend="porting-master-sites-n-new-port-targets-master-sites-all">
|
||||||
|
for more information on these new port
|
||||||
|
targets.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>New port targets</para>
|
||||||
|
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>There are
|
||||||
|
<maketarget>master-sites-<replaceable>n</replaceable></maketarget>
|
||||||
|
and
|
||||||
|
<maketarget>patch-sites-<replaceable>n</replaceable></maketarget>
|
||||||
|
targets which will list the elements of the
|
||||||
|
respective group <replaceable>n</replaceable>
|
||||||
|
within <makevar>MASTER_SITES</makevar> and
|
||||||
|
<makevar>PATCH_SITES</makevar> respectively. For
|
||||||
|
instance, both
|
||||||
|
<maketarget>master-sites-DEFAULT</maketarget> and
|
||||||
|
<maketarget>patch-sites-DEFAULT</maketarget> will
|
||||||
|
return the elements of group
|
||||||
|
<literal>DEFAULT</literal>,
|
||||||
|
<maketarget>master-sites-test</maketarget> and
|
||||||
|
<maketarget>patch-sites-test</maketarget> of group
|
||||||
|
<literal>test</literal>, and thereon.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem id="porting-master-sites-n-new-port-targets-master-sites-all">
|
||||||
|
<para>There are new targets
|
||||||
|
<maketarget>master-sites-all</maketarget> and
|
||||||
|
<maketarget>patch-sites-all</maketarget> which do
|
||||||
|
the work of the old
|
||||||
|
<maketarget>master-sites</maketarget> and
|
||||||
|
<maketarget>patch-sites</maketarget> ones. They
|
||||||
|
return the elements of all groups as if they all
|
||||||
|
belonged to the same group with the caveat that it
|
||||||
|
lists as many
|
||||||
|
<makevar>MASTER_SITE_BACKUP</makevar> and
|
||||||
|
<makevar>MASTER_SITE_OVERRIDE</makevar> as there
|
||||||
|
are groups defined within either
|
||||||
|
<makevar>DISTFILES</makevar> or
|
||||||
|
<makevar>PATCHFILES</makevar>; respectively for
|
||||||
|
<maketarget>master-sites-all</maketarget> and
|
||||||
|
<maketarget>patch-sites-all</maketarget>.</para>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
</sect3>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2>
|
<sect2>
|
||||||
|
|
Loading…
Reference in a new issue