svn commit: r49328 - head/en_US.ISO8859-1/books/porters-handbook/plist
Mathieu Arnold
mat at FreeBSD.org
Wed Aug 24 09:14:08 UTC 2016
Author: mat
Date: Wed Aug 24 09:14:07 2016
New Revision: 49328
URL: https://svnweb.freebsd.org/changeset/doc/49328
Log:
Document the PLIST_SUB regex new feature.
Reviewed by: wblock
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D7545
Modified:
head/en_US.ISO8859-1/books/porters-handbook/plist/chapter.xml
Modified: head/en_US.ISO8859-1/books/porters-handbook/plist/chapter.xml
==============================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/plist/chapter.xml Wed Aug 24 04:41:50 2016 (r49327)
+++ head/en_US.ISO8859-1/books/porters-handbook/plist/chapter.xml Wed Aug 24 09:14:07 2016 (r49328)
@@ -288,6 +288,82 @@ PLIST_SUB+= X11I386="@comment "
must be listed as specified in the <link
linkend="porting-shlibs">shared libraries</link>
section.</para>
+
+ <sect2 xml:id="plist-autoplist-regex">
+ <title>Expanding <varname>PLIST_SUB</varname> With Regular
+ Expressions</title>
+
+ <para>Strings to be replaced sometimes need to be very specific
+ to avoid undesired replacements. This is a common problem
+ with shorter values.</para>
+
+ <para>To address this problem, for each
+ <literal><replaceable>PLACEHOLDER</replaceable>=<replaceable>value</replaceable></literal>,
+ a
+ <literal><replaceable>PLACEHOLDER</replaceable>_regex=<replaceable>regex</replaceable></literal>
+ can be set, with the
+ <literal><replaceable>regex</replaceable></literal> part
+ matching <replaceable>value</replaceable> more
+ precisely.</para>
+
+ <example xml:id="plist-autoplist-regex-ex1">
+ <title>Using PLIST_SUB With Regular Expressions</title>
+
+ <para><application>Perl</application> ports can install
+ architecture dependant files in a specific tree. On &os; to
+ ease porting, this tree is called <literal>mach</literal>.
+ For example, a port that installs a file whose path contains
+ <literal>mach</literal> could have that part of the path
+ string replaced with the wrong values. Consider this
+ <filename>Makefile</filename>:</para>
+
+ <programlisting>PORTNAME= Machine-Build
+PORTVERSION= 1
+CATEGORIES= devel perl5
+MASTER_SITES= CPAN
+PKGNAMEPREFIX= p5-
+
+MAINTAINER= perl at FreeBSD.org
+COMMENT= Building machine
+
+USES= perl5
+USE_PERL5= configure
+
+PLIST_SUB= PERL_ARCH=mach</programlisting>
+
+ <para>The files installed by the port are:</para>
+
+ <programlisting>/usr/local/bin/machine-build
+/usr/local/lib/perl5/site_perl/man/man1/machine-build.1.gz
+/usr/local/lib/perl5/site_perl/man/man3/Machine::Build.3.gz
+/usr/local/lib/perl5/site_perl/Machine/Build.pm
+/usr/local/lib/perl5/site_perl/mach/5.20/Machine/Build/Build.so</programlisting>
+
+ <para>Runnig <command>make makeplist</command> wrongly
+ generates:</para>
+
+ <programlisting>bin/<emphasis>%%PERL_ARCH%%</emphasis>ine-build
+%%PERL5_MAN1%%/<emphasis>%%PERL_ARCH%%</emphasis>ine-build.1.gz
+%%PERL5_MAN3%%/Machine::Build.3.gz
+%%SITE_PERL%%/Machine/Build.pm
+%%SITE_PERL%%/%%PERL_ARCH%%/%%PERL_VER%%/Machine/Build/Build.so</programlisting>
+
+ <para>Change the <varname>PLIST_SUB</varname> line from the
+ <filename>Makefile</filename> to:</para>
+
+ <programlisting>PLIST_SUB= PERL_ARCH=mach \
+ PERL_ARCH_regex=\bmach\b</programlisting>
+
+ <para>Now <command>make makeplist</command> correctly
+ generates:</para>
+
+ <programlisting>bin/machine-build
+%%PERL5_MAN1%%/machine-build.1.gz
+%%PERL5_MAN3%%/Machine::Build.3.gz
+%%SITE_PERL%%/Machine/Build.pm
+%%SITE_PERL%%/%%PERL_ARCH%%/%%PERL_VER%%/Machine/Build/Build.so</programlisting>
+ </example>
+ </sect2>
</sect1>
<sect1 xml:id="plist-keywords">
More information about the svn-doc-head
mailing list