aboutsummaryrefslogtreecommitdiffstats
path: root/Mk
diff options
context:
space:
mode:
authorDmitry Marakasov <amdmi3@FreeBSD.org>2015-10-19 22:50:52 +0800
committerDmitry Marakasov <amdmi3@FreeBSD.org>2015-10-19 22:50:52 +0800
commit67971bd0fb8a440f973d12606b0f496ba216d7df (patch)
tree72fd93ae39b43490b34dc8479465e07b453d126e /Mk
parentf13c234d6c664c916b5c0d0e6f089d8ef0c93d55 (diff)
downloadfreebsd-ports-gnome-67971bd0fb8a440f973d12606b0f496ba216d7df.tar.gz
freebsd-ports-gnome-67971bd0fb8a440f973d12606b0f496ba216d7df.tar.zst
freebsd-ports-gnome-67971bd0fb8a440f973d12606b0f496ba216d7df.zip
Improve shebangfix framework
- Support multiple values in *_OLD_CMD, i.e. we can now fix both "/usr/bin/python" and "/usr/bin/env python" at the same time - Default *_OLD_CMD values are now always appended, so you don't need to specify them in individual ports - Add lua support (depends on USES=lua) - Add more default values, such as "/usr/bin/env foo" for python, perl, bash, ruby and lua - Shebangfix now matches whole words, e.g. we will no longer (erroneously) replace "/usr/bin/perl5.005" with "${perl_CMD}5.005" (but "/usr/bin/perl -tt" is still (correctly) replaced with "${perl_CMD} -tt") Note that *_OLD_CMD items containing spaces must now be quoted (e.g. perl_OLD_CMD=/bin/perl /usr/bin/perl "/usr/bin/env perl") Update shebangfix usage according to new rules in many ports: - Remove *_OLD_CMD for patterns now replaced by default - Quote custom *_OLD_CMD which contain spaces Fix shebangfix usage in many ports (irrelevant to infrastructure change): - Remove redundant SHEBANG_LANG (no need to duplicate default langs) - Remove redundant *_CMD (such as python_CMD=${LOCALBASE}/bin/python${PYTHON_VER} when USES=python is present) - Never use *_OLD_CMD in REINPLACE_CMD matchers, these should always look for exact string Approved by: portmgr (bapt) Differential Revision: D3756
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Uses/shebangfix.mk45
1 files changed, 31 insertions, 14 deletions
diff --git a/Mk/Uses/shebangfix.mk b/Mk/Uses/shebangfix.mk
index df3634be12df..cc68c7e3dcf8 100644
--- a/Mk/Uses/shebangfix.mk
+++ b/Mk/Uses/shebangfix.mk
@@ -29,39 +29,56 @@
.if !defined(_INCLUDE_USES_SHEBANGFIX_MK)
_INCLUDE_USES_SHEBANGFIX_MK= yes
-bash_OLD_CMD?= /bin/bash
+bash_OLD_CMD+= /bin/bash
+bash_OLD_CMD+= "/usr/bin/env bash"
bash_CMD?= ${LOCALBASE}/bin/bash
-java_OLD_CMD?= /usr/bin/java
+java_OLD_CMD+= /usr/bin/java
java_CMD?= ${LOCALBASE}/bin/java
-ksh_OLD_CMD?= /bin/ksh
+ksh_OLD_CMD+= /bin/ksh
ksh_CMD?= ${LOCALBASE}/bin/ksh
-perl_OLD_CMD?= /usr/bin/perl
+.if ${USES:Mlua*}
+lua_OLD_CMD+= /usr/bin/lua
+lua_OLD_CMD+= "/usr/bin/env lua"
+lua_CMD?= ${LOCALBASE}/bin/${LUA_CMD}
+.endif
+perl_OLD_CMD+= /usr/bin/perl
+perl_OLD_CMD+= "/usr/bin/env perl"
+perl_OLD_CMD+= perl
perl_CMD?= ${LOCALBASE}/bin/perl
-php_OLD_CMD?= /usr/bin/php
+php_OLD_CMD+= /usr/bin/php
php_CMD?= ${LOCALBASE}/bin/php
-python_OLD_CMD?= /usr/bin/python
+python_OLD_CMD+= /usr/bin/python
+python_OLD_CMD+= "/usr/bin/env python"
.if ${USES:Mpython*}
python_CMD?= ${PYTHON_CMD}
.else
python_CMD?= ${LOCALBASE}/bin/python
.endif
-ruby_OLD_CMD?= /usr/bin/ruby
+ruby_OLD_CMD+= /usr/bin/ruby
+ruby_OLD_CMD+= "/usr/bin/env ruby"
ruby_CMD?= ${LOCALBASE}/bin/ruby
-tcl_OLD_CMD?= /usr/bin/tclsh
+tcl_OLD_CMD+= /usr/bin/tclsh
tcl_CMD?= ${TCLSH}
-tk_OLD_CMD?= /usr/bin/wish
+tk_OLD_CMD+= /usr/bin/wish
tk_CMD?= ${WISH}
SHEBANG_LANG+= bash java ksh perl php python ruby tcl tk
+.if ${USES:Mlua*}
+SHEBANG_LANG+= lua
+.endif
+
.for lang in ${SHEBANG_LANG}
-.if !defined(${lang}_CMD)
+. if !defined(${lang}_CMD)
IGNORE+= missing definition for ${lang}_CMD
-.endif
-.if !defined(${lang}_OLD_CMD)
+. endif
+. if !defined(${lang}_OLD_CMD)
IGNORE+= missing definition for ${lang}_OLD_CMD
-.endif
-_SHEBANG_REINPLACE_ARGS+= -e "1s|^\#![[:space:]]*${${lang}_OLD_CMD}|\#!${${lang}_CMD}|"
+. endif
+. for old_cmd in ${${lang}_OLD_CMD}
+_SHEBANG_REINPLACE_ARGS+= -e "1s|^\#![[:space:]]*${old_cmd:C/\"//g}\([[:space:]]\)|\#!${${lang}_CMD}\1|"
+_SHEBANG_REINPLACE_ARGS+= -e "1s|^\#![[:space:]]*${old_cmd:C/\"//g}$$|\#!${${lang}_CMD}|"
+. endfor
.endfor
_USES_patch+= 210:fix-shebang