svn commit: r317555 - in head: . Mk/Uses
Baptiste Daroussin
bapt at FreeBSD.org
Mon May 6 22:23:11 UTC 2013
Author: bapt
Date: Mon May 6 22:23:09 2013
New Revision: 317555
URL: http://svnweb.freebsd.org/changeset/ports/317555
Log:
Add new USES: shebangfix
use it to fix shebang on files specified by SHEBANG_FILES macro, by default it
proposes default values for bash, perl, php, python, ruby, it can be customized
and extended
Added:
head/Mk/Uses/shebangfix.mk (contents, props changed)
Modified:
head/CHANGES
Modified: head/CHANGES
==============================================================================
--- head/CHANGES Mon May 6 22:07:11 2013 (r317554)
+++ head/CHANGES Mon May 6 22:23:09 2013 (r317555)
@@ -10,6 +10,16 @@ in the release notes and/or placed into
All ports committers are allowed to commit to this file.
+20130507:
+AUTHOR: bapt at FreeBSD.org
+
+ * New USES macro to handle setting correct shebang to scripts
+
+ By default it will fix bash, perl, php, ruby and python on all files specified
+ in the SHEBANG_FILES macro (glob pattern relative to ${WRKSRC})
+
+ Paths can be customized, and number of languages supported can be extended.
+
20130506:
AUTHOR: bapt at FreeBSD.org
Added: head/Mk/Uses/shebangfix.mk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/Mk/Uses/shebangfix.mk Mon May 6 22:23:09 2013 (r317555)
@@ -0,0 +1,53 @@
+# $FreeBSD$
+#
+# common templates for replacing #! interpreters in scripts file
+#
+# MAINTAINER: portmgr at FreeBSD.org
+#
+# Feature: shebangfix
+# Usage: USES=shebangfix
+#
+# To define new shebang scheme, in the port Makefile add:
+#
+# SHEBANG_LANG= lua
+# lua_OLD_CMD= /usr/bin/lua
+# lua_CMD= ${LOCALBASE}/bin/lua
+#
+# To override a definition for example replacing /usr/bin/perl by /usr/bin/env perl
+# add to the port Makefile:
+# perl_CMD= ${SENTENV} perl
+#
+
+.if !defined(_INCLUDE_USES_SHEBANGFIX_Mk)
+_INCLUDE_USES_SHEBANGFIX_MK= yes
+
+bash_OLD_CMD?= /bin/bash
+bash_CMD?= ${LOCALBASE}/bin/bash
+perl_OLD_CMD?= /usr/bin/perl
+perl_CMD?= ${LOCALBASE}/bin/perl
+python_OLD_CMD?= /usr/bin/python
+python_CMD?= ${LOCALBASE}/bin/python
+ruby_OLD_CMD?= /usr/bin/ruby
+ruby_CMD?= ${LOCALBASE}/bin/ruby
+php_OLD_CMD?= /usr/bin/php
+php_CMD?= ${LOCALBASE}/bin/php
+
+SHEBANG_LANG+= bash perl python ruby php
+
+.for lang in ${SHEBANG_LANG}
+.if !defined(${lang}_CMD)
+IGNORE+= missing definition for ${lang}_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}|"
+.endfor
+
+pre-patch: fix-shebang
+
+fix-shebang:
+ @cd ${WRKSRC}; \
+ ${ECHO_CMD} ${SHEBANG_FILES} | ${XARGS} ${REINPLACE_CMD} ${_SHEBANG_REINPLACE_ARGS}
+
+.endif
More information about the svn-ports-all
mailing list