Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F167720212
D10584.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
9 KB
Referenced Files
None
Subscribers
None
D10584.diff
View Options
Index: head/en_US.ISO8859-1/books/porters-handbook/uses/chapter.xml
===================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/uses/chapter.xml
+++ head/en_US.ISO8859-1/books/porters-handbook/uses/chapter.xml
@@ -2595,25 +2595,48 @@
<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 @@
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>
+
+ <para>Correct paths for supported interpreters
+ are available in
+ <literal><replaceable>interp</replaceable>_CMD</literal>.</para>
+ </important>
+
+ <example xml:id="uses-shebangfix-ex-lua">
+ <title>Adding Another Interpreter to
+ <literal>USES=shebangfix</literal></title>
- <programlisting>SHEBANG_LANG= lua</programlisting>
+ <para>To add another interpreter, set
+ <varname>SHEBANG_LANG</varname>. For example:</para>
- <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>
+ <programlisting>SHEBANG_LANG= lua</programlisting>
+ </example>
- <programlisting>SHEBANG_LANG= ksh
+ <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
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>
- <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>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>
+
+ <programlisting>USES= shebangfix
+SHEBANG_FILES= scripts/foobar.pl scripts/*.sh</programlisting>
+ </example>
</sect1>
<sect1 xml:id="uses-sqlite">
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Aug 25, 12:11 AM (5 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37215063
Default Alt Text
D10584.diff (9 KB)
Attached To
Mode
D10584: Rewrite the USES=shebangfix section.
Attached
Detach File
Event Timeline
Log In to Comment