svn commit: r50232 - head/en_US.ISO8859-1/books/porters-handbook/uses

Mathieu Arnold mat at FreeBSD.org
Fri May 5 10:33:49 UTC 2017


Author: mat
Date: Fri May  5 10:33:47 2017
New Revision: 50232
URL: https://svnweb.freebsd.org/changeset/doc/50232

Log:
  Rewrite the USES=shebangfix section.
  
  Reviewed by:	bcr
  Sponsored by:	Absolight
  Differential Revision:	https://reviews.freebsd.org/D10584

Modified:
  head/en_US.ISO8859-1/books/porters-handbook/uses/chapter.xml

Modified: head/en_US.ISO8859-1/books/porters-handbook/uses/chapter.xml
==============================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/uses/chapter.xml	Fri May  5 07:06:24 2017	(r50231)
+++ head/en_US.ISO8859-1/books/porters-handbook/uses/chapter.xml	Fri May  5 10:33:47 2017	(r50232)
@@ -2595,25 +2595,48 @@ USE_PYQT=	core doc_build designer_run</p
 
     <para>A lot of software uses incorrect locations for script
       interpreters, most notably <filename>/usr/bin/perl</filename>
-      and <filename>/bin/bash</filename>.  The shebagngfix macro fixes
+      and <filename>/bin/bash</filename>.  The shebangfix macro fixes
       shebang lines in scripts listed in
       <varname>SHEBANG_REGEX</varname>,
       <varname>SHEBANG_GLOB</varname>, or
-      <varname>SHEBANG_FILES</varname>.
-      <varname>SHEBANG_REGEX</varname> contains an extended regular
-      expressions, and is used with the <literal>-iregex</literal>
-      argument of &man.find.1;.  <varname>SHEBANG_GLOB</varname>
-      contains a pattern used with the <literal>-name</literal>
-      argument of &man.find.1;.  The shebangfix macro is run
-      from <literal>${WRKSRC}</literal>, so
-      <varname>SHEBANG_FILES</varname> can contain paths that
-      are relative to <literal>${WRKSRC}</literal>.  It can also deal
-      with absolute paths if files outside of
-      <literal>${WRKSRC}</literal> require patching.  For
-      example when using <varname>SHEBANG_FILES</varname>:</para>
+      <varname>SHEBANG_FILES</varname>.</para>
 
-    <programlisting>USES=	shebangfix
-SHEBANG_FILES=	scripts/foobar.pl scripts/*.sh</programlisting>
+    <variablelist>
+      <varlistentry>
+	<term><varname>SHEBANG_REGEX</varname></term>
+
+	<listitem>
+	  <para>Contains <emphasis>one</emphasis> extended regular
+	    expressions, and is used with the
+	    <literal>-iregex</literal> argument of &man.find.1;.  See
+	    <xref linkend="uses-shebangfix-ex-regex"/>.</para>
+	</listitem>
+      </varlistentry>
+
+      <varlistentry>
+	<term><varname>SHEBANG_GLOB</varname></term>
+
+	<listitem>
+	  <para>Contains a list of patterns used with the
+	    <literal>-name</literal> argument of &man.find.1;.  See
+	    <xref linkend="uses-shebangfix-ex-glob"/>.</para>
+	</listitem>
+      </varlistentry>
+
+      <varlistentry>
+	<term><varname>SHEBANG_FILES</varname></term>
+
+	<listitem>
+	  <para>Contains a list of files or &man.sh.1; globs.  The
+	    shebangfix macro is run from <literal>${WRKSRC}</literal>,
+	    so <varname>SHEBANG_FILES</varname> can contain paths that
+	    are relative to <literal>${WRKSRC}</literal>.  It can also
+	    deal with absolute paths if files outside of
+	    <literal>${WRKSRC}</literal> require patching.  See <xref
+	      linkend="uses-shebangfix-ex-files" />.</para>
+	</listitem>
+      </varlistentry>
+    </variablelist>
 
     <para>Currently
       <application>Bash</application>,
@@ -2653,51 +2676,128 @@ SHEBANG_FILES=	scripts/foobar.pl scripts
 	    are typically obsolete paths, or paths used on other
 	    operating systems that are incorrect on &os;.  They
 	    will be replaced by the correct path in
-	    <varname><replaceable>interp</replaceable>_CMD</varname>.
-	    This list will always be part of
-	    <varname><replaceable>interp</replaceable>_OLD_CMD</varname>:
-	    <literal>"/usr/bin/env <replaceable>interp</replaceable>"
-	      /bin/<replaceable>interp</replaceable>
-	      /usr/bin/<replaceable>interp</replaceable>
-	      /usr/local/bin/<replaceable>interp</replaceable></literal>.</para>
+	    <varname><replaceable>interp</replaceable>_CMD</varname>.</para>
+
+	  <note>
+	    <para>These will <emphasis>always</emphasis> be part of
+	      <varname><replaceable>interp</replaceable>_OLD_CMD</varname>:
+	      <literal>"/usr/bin/env
+		<replaceable>interp</replaceable>"
+		/bin/<replaceable>interp</replaceable>
+		/usr/bin/<replaceable>interp</replaceable>
+		/usr/local/bin/<replaceable>interp</replaceable></literal>.</para>
+	  </note>
+
+	  <tip>
+	    <para><varname><replaceable>interp</replaceable>_OLD_CMD</varname>
+	      contain multiple values.  Any entry with spaces must be
+	      quoted.  See <xref
+		linkend="uses-shebangfix-ex-ksh"/>.</para>
+	  </tip>
 	</listitem>
       </varlistentry>
     </variablelist>
 
-    <para>To add another interpreter, set
-      <varname>SHEBANG_LANG</varname>.  For example:</para>
+    <important>
+      <para>The fixing of shebangs is done during the
+	<buildtarget>patch</buildtarget> phase.  If scripts are
+	created with incorrect shebangs during the
+	<buildtarget>build</buildtarget> phase, the build process (for
+	example, the <filename>configure</filename> script, or the
+	<filename>Makefiles</filename>) must be patched or given the
+	right path (for example, with
+	<varname>CONFIGURE_ENV</varname>,
+	<varname>CONFIGURE_ARGS</varname>,
+	<varname>MAKE_ENV</varname>, or <varname>MAKE_ARGS</varname>)
+	to generate the right shebangs.</para>
 
-    <programlisting>SHEBANG_LANG=	lua</programlisting>
+      <para>Correct paths for supported interpreters
+	are available in
+	<literal><replaceable>interp</replaceable>_CMD</literal>.</para>
+    </important>
 
-    <para><literal><replaceable>interp</replaceable>_OLD_CMD</literal>
-      will contain multiple values.  Any entry with spaces must be
-      quoted.  For example, if it was not already defined, the
-      <application>Ksh</application> entry could be defined as:</para>
+    <example xml:id="uses-shebangfix-ex-lua">
+      <title>Adding Another Interpreter to
+	<literal>USES=shebangfix</literal></title>
+
+      <para>To add another interpreter, set
+	<varname>SHEBANG_LANG</varname>.  For example:</para>
+
+      <programlisting>SHEBANG_LANG=	lua</programlisting>
+    </example>
+
+    <example xml:id="uses-shebangfix-ex-ksh">
+      <title>Specifying all the Paths When Adding an Interpreter to
+	<literal>USES=shebangfix</literal></title>
+
+      <para>If it was not already defined, and there were no default
+	values for
+	<varname><replaceable>interp</replaceable>_OLD_CMD</varname>
+	and <varname><replaceable>interp</replaceable>_CMD</varname>
+	the <application>Ksh</application> entry could be defined
+	as:</para>
 
-    <programlisting>SHEBANG_LANG=	ksh
+      <programlisting>SHEBANG_LANG=	ksh
 ksh_OLD_CMD=	"/usr/bin/env ksh" /bin/ksh /usr/bin/ksh
 ksh_CMD=	${LOCALBASE}/bin/ksh</programlisting>
+    </example>
 
-    <para>Some software uses strange locations for an interpreter.
-      For example, an application might expect
-      <application>Python</application> to be located in
-      <filename>/opt/bin/python2.7</filename>.  The strange path to be
-      replaced can be declared in the port
-      <filename>Makefile</filename>:</para>
+    <example xml:id="uses-shebangfix-ex-strange">
+      <title>Adding a Strange Location for an Interpreter</title>
 
-    <programlisting>python_OLD_CMD=	/opt/bin/python2.7</programlisting>
+      <para>Some software uses strange locations for an interpreter.
+	For example, an application might expect
+	<application>Python</application> to be located in
+	<filename>/opt/bin/python2.7</filename>.  The strange path to
+	be replaced can be declared in the port
+	<filename>Makefile</filename>:</para>
+
+      <programlisting>python_OLD_CMD=	/opt/bin/python2.7</programlisting>
+    </example>
+
+    <example xml:id="uses-shebangfix-ex-regex">
+      <title><literal>USES=shebangfix</literal> with
+	<varname>SHEBANG_REGEX</varname></title>
+
+      <para>To fix all the files in
+	<literal>${WRKSRC}/scripts</literal> ending in
+	<filename>.pl</filename>, <filename>.sh</filename>, or
+	<filename>.cgi</filename> do:</para>
+
+      <programlisting>USES=	shebangfix
+SHEBANG_REGEX=	./scripts/.*\.(sh|pl|cgi)</programlisting>
+
+      <note>
+	<para><varname>SHEBANG_REGEX</varname> is used by running
+	  <command>find -E</command>, which uses modern regular
+	  expressions also known as extended regular expressions.  See
+	  &man.re.format.7; for more information.</para>
+      </note>
+    </example>
+
+    <example xml:id="uses-shebangfix-ex-glob">
+      <title><literal>USES=shebangfix</literal> with
+	<varname>SHEBANG_GLOB</varname></title>
+
+      <para>To fix all the files in <literal>${WRKSRC}</literal>
+	ending in <filename>.pl</filename> or
+	<filename>.sh</filename>, do:</para>
+
+      <programlisting>USES=	shebangfix
+SHEBANG_GLOB=	*.sh *.pl</programlisting>
+    </example>
+
+    <example xml:id="uses-shebangfix-ex-files">
+      <title><literal>USES=shebangfix</literal> with
+	<varname>SHEBANG_FILES</varname></title>
+
+      <para>To fix the files <filename>script/foobar.pl</filename> and
+	<filename>script/*.sh</filename> in
+	<literal>${WRKSRC}</literal>, do:</para>
 
-    <note>
-      <para>The fixing of shebangs is done during the
-	<buildtarget>patch</buildtarget> phase.  If scripts are
-	created with incorrect shebangs during the
-	<buildtarget>build</buildtarget> phase, the build process (for
-	examples, the <filename>configure</filename> script, or the
-	<filename>Makefiles</filename>) must be patched to generate
-	the right shebangs.  Correct paths for supported interpreters
-	are available in
-	<literal><replaceable>interp</replaceable>_CMD</literal>.</para>
-    </note>
+      <programlisting>USES=	shebangfix
+SHEBANG_FILES=	scripts/foobar.pl scripts/*.sh</programlisting>
+    </example>
   </sect1>
 
   <sect1 xml:id="uses-sqlite">


More information about the svn-doc-all mailing list