diff options
author | Dmitry Marakasov <amdmi3@FreeBSD.org> | 2015-10-19 22:50:52 +0800 |
---|---|---|
committer | Dmitry Marakasov <amdmi3@FreeBSD.org> | 2015-10-19 22:50:52 +0800 |
commit | 67971bd0fb8a440f973d12606b0f496ba216d7df (patch) | |
tree | 72fd93ae39b43490b34dc8479465e07b453d126e /Mk | |
parent | f13c234d6c664c916b5c0d0e6f089d8ef0c93d55 (diff) | |
download | freebsd-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.mk | 45 |
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 |