Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 May 2013 22:23:10 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r317555 - in head: . Mk/Uses
Message-ID:  <201305062223.r46MNA3K093410@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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@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@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305062223.r46MNA3K093410>