Enhance USES=shebangfix a bit more.
Reviewed by: wblock Sponsored by: Absolight Differential Revision: https://reviews.freebsd.org/D3979
This commit is contained in:
parent
1a183cb0b1
commit
c75ed861b7
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=47681
1 changed files with 40 additions and 9 deletions
|
@ -1143,8 +1143,19 @@ GSSAPI_NONE_CONFIGURE_ON= --without-gssapi</programlisting>
|
|||
|
||||
<para>A lot of software uses incorrect locations for script
|
||||
interpreters, most notably <filename>/usr/bin/perl</filename>
|
||||
and <filename>/bin/bash</filename>. This fixes shebang lines in
|
||||
scripts listed in <varname>SHEBANG_FILES</varname>. Currently
|
||||
and <filename>/bin/bash</filename>. The shebagngfix macro fixes
|
||||
shebang lines in scripts listed in
|
||||
<varname>SHEBANG_FILES</varname>. The shebangfix macro is run
|
||||
from <literal>${WRKSRC}</literal>, so it 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:</para>
|
||||
|
||||
<programlisting>USES= shebangfix
|
||||
SHEBANG_FILES= scripts/foobar.pl scripts/*.sh</programlisting>
|
||||
|
||||
<para>Currently
|
||||
<application>Bash</application>,
|
||||
<application>Java</application>, <application>Ksh</application>,
|
||||
<application>Lua</application>,
|
||||
|
@ -1154,23 +1165,43 @@ GSSAPI_NONE_CONFIGURE_ON= --without-gssapi</programlisting>
|
|||
and <application>Tk</application> are supported by default. To
|
||||
support another interpreter, set
|
||||
<varname>SHEBANG_LANG</varname>,
|
||||
<varname><replaceable>foo</replaceable>_OLD_CMD</varname> and
|
||||
<varname><replaceable>foo</replaceable>_CMD</varname>. For
|
||||
<varname><replaceable>interp</replaceable>_OLD_CMD</varname> and
|
||||
<varname><replaceable>interp</replaceable>_CMD</varname>. For
|
||||
example:</para>
|
||||
|
||||
<programlisting>SHEBANG_LANG= lua
|
||||
lua_OLD_CMD= /usr/bin/lua
|
||||
lua_CMD= ${LOCALBASE}/bin/lua</programlisting>
|
||||
|
||||
<para>As <literal><replaceable>foo</replaceable>_OLD_CMD</literal>
|
||||
can contain multiple values, if an entry contains a space, it
|
||||
needs to be quoted. For example, if it was not already defined,
|
||||
the <application>Ksh</application> entry could be defined
|
||||
as:</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= ksh
|
||||
ksh_OLD_CMD= "/usr/bin/env ksh" /bin/ksh /usr/bin/ksh
|
||||
ksh_CMD= ${LOCALBASE}/bin/ksh</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>
|
||||
|
||||
<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>
|
||||
</sect1>
|
||||
|
||||
<sect1 xml:id="uses-tar">
|
||||
|
|
Loading…
Reference in a new issue