From fuyuki@hadaly.org  Sat Apr 19 01:44:55 2003
Return-Path: <fuyuki@hadaly.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id CAB7C37B401
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 19 Apr 2003 01:44:55 -0700 (PDT)
Received: from t-mta3.odn.ne.jp (mfep3.odn.ne.jp [143.90.131.181])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 8C65D43FB1
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 19 Apr 2003 01:44:54 -0700 (PDT)
	(envelope-from fuyuki@hadaly.org)
Received: from hadaly.dyndns.org ([218.46.156.91]) by t-mta3.odn.ne.jp
          with ESMTP
          id <20030419084453137.BNEL.26423.t-mta3.odn.ne.jp@mta3.odn.ne.jp>
          for <FreeBSD-gnats-submit@freebsd.org>;
          Sat, 19 Apr 2003 17:44:53 +0900
Received: from hadaly.dyndns.org (localhost [127.0.0.1])
	by hadaly.dyndns.org (Postfix) with ESMTP id 310A320D6
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 19 Apr 2003 17:44:52 +0900 (JST)
Message-Id: <86adem7u63.wl%fuyuki@hadaly.org>
Date: Sat, 19 Apr 2003 17:44:52 +0900
From: Kimura Fuyuki <fuyuki@hadaly.org>
To: FreeBSD-gnats-submit@freebsd.org
Subject: bsd.port.mk: generic SHEBANG_FILES

>Number:         51152
>Category:       ports
>Synopsis:       [patch] bsd.port.mk: generic SHEBANG_FILES
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    portmgr
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Apr 19 01:50:12 PDT 2003
>Closed-Date:    Fri May 10 10:32:05 UTC 2013
>Last-Modified:  Fri May 10 10:32:05 UTC 2013
>Originator:     Kimura Fuyuki <fuyuki@hadaly.org>
>Release:        FreeBSD 5.0-RELEASE-p5 i386
>Organization:
>Environment:

  FreeBSD hadaly.dyndns.org 5.0-RELEASE-p5 FreeBSD 5.0-RELEASE-p5 #1: Fri Mar 21 10:29:48 JST 2003     root@hadaly.dyndns.org:/.2/obj/usr/src/sys/NS  i386

>Description:
bsd.ruby.mk's RUBY_SHEBANG_FILES is very nifty and I want to use it
for non-ruby scripts.

>How-To-Repeat:

>Fix:
The following patch would be incomplete but better than nothing.

USE_REINPLACE=	yes
post-patch:
	${REINPLACE_CMD} -e 's|/usr/bin/perl|${PERL}|' ${WRKSRC}/somescript

can be replaced by

SHEBANG_FILES=	somescript
SHEBANG_CMD=	${PERL}

Index: bsd.port.mk
===================================================================
RCS file: /home/ncvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.446
diff -u -r1.446 bsd.port.mk
--- bsd.port.mk	2003/04/17 10:27:06	1.446
+++ bsd.port.mk	2003/04/19 08:41:05
@@ -1003,6 +1003,19 @@
 # Location of mounted CDROM(s) to search for files
 CD_MOUNTPTS?=	/cdrom ${CD_MOUNTPT}
 
+# fix shebang lines
+.if defined(SHEBANG_FILES) && !empty(SHEBANG_FILES)
+USE_REINPLACE=		yes
+
+post-patch:	shebang-patch
+
+shebang-patch:
+.for f in ${SHEBANG_FILES}
+	@${ECHO_MSG} "===>  Fixing the #! line of $f"
+	@${REINPLACE_CMD} -E  -e "1{s|^#! *([^ ]*env )?[^ ]+|#!${SHEBANG_CMD}|;/^#!/!{x;s|^|#!${SHEBANG_CMD}|;G;};}" ${WRKSRC}/$f
+.endfor
+.endif
+
 .endif
 # End of pre-makefile section.
 
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->portmgr 
Responsible-Changed-By: arved 
Responsible-Changed-When: Wed Apr 23 09:29:22 PDT 2003 
Responsible-Changed-Why:  
Over to bsd.port.mk maintainers 

http://www.freebsd.org/cgi/query-pr.cgi?pr=51152 
State-Changed-From-To: open->feedback 
State-Changed-By: will 
State-Changed-When: Wed Oct 29 15:49:17 PST 2003 
State-Changed-Why:  
This is a good idea, although I'd prefer if the substitution changed 
it to #!/usr/bin/env perl for example. 

Additionally... how many ports do you see using this simplification? 

http://www.freebsd.org/cgi/query-pr.cgi?pr=51152 

From: Florent Thoumie <flz@xbsd.org>
To: FreeBSD-gnats-submit@freebsd.org, will@FreeBSD.org,
	fuyuki@hadaly.org
Cc:  
Subject: Re: ports/51152: [patch] bsd.port.mk: generic SHEBANG_FILES
Date: Thu, 02 Dec 2004 03:10:24 +0100

 (root)@eiffel /usr/ports >find * -maxdepth 2 -name Makefile | \
 	xargs grep REINPLACE | grep '#!' | cut -d: -f1 | uniq | wc -l
        41
 
 [...] but that's very inaccurate, i guess there are some ports using
 patches in ${FILESDIR} to do such substitutions.
State-Changed-From-To: feedback->open 
State-Changed-By: linimon 
State-Changed-When: Fri May 25 02:47:11 UTC 2007 
State-Changed-Why:  
After a meeting of the portmgrs at BSDCan 2007, let's put this back on 
the things-to-do list. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=51152 

From: Baptiste Daroussin <baptiste.daroussin@gmail.com>
To: bug-followup@freebsd.org
Cc:  
Subject: Re: ports/51152: [patch] bsd.port.mk: generic SHEBANG_FILES
Date: Wed, 11 Mar 2009 13:57:57 +0100

 --YZ5djTAD1cGYuMQK
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 
 Here is another patch to implements a simple way to modify the shebang.
 
 With this patch, the syntax in the ports makefile would be the following:
 
 SHEBANG_CHANGE= perl src/script.pl \
 		prog scriptpath \
 		bash src/script.bash
 
 it replaces the shebang by #!/usr/bin/env prog
 it is based on the previous patch.
 
 ---
 Bapt
 
 --YZ5djTAD1cGYuMQK
 Content-Type: text/x-diff; charset=us-ascii
 Content-Disposition: attachment; filename="bsd.port.mk-shebang.diff"
 
 --- bsd.port.mk.orig	2009-03-08 02:10:34.000000000 +0000
 +++ bsd.port.mk	2009-03-11 11:44:29.000000000 +0000
 @@ -1553,6 +1553,23 @@
  # Location of mounted CDROM(s) to search for files
  CD_MOUNTPTS?=	/cdrom ${CD_MOUNTPT}
  
 +.if defined(SHEBANG_CHANGE) && !empty(SHEBANG_CHANGE)
 +
 +USE_REINPLACE=	yes
 +
 +post-patch:	shebang-patch
 +
 +shebang-patch:
 +	@for word in ${SHEBANG_CHANGE};do \
 +	if [ -z $${SHEBANG_CMD} ];then \
 +		SHEBANG_CMD=$${word}; \
 +	else \
 +		${REINPLACE_CMD} -E  -e "1{s|^#! *([^ ]*env )?[^ ]+|#!/usr/bin/env $${SHEBANG_CMD}|;/^#!/!{x;s|^|#!/usr/bin/env $${SHEBANG_CMD}|;G;};}" ${WRKSRC}/$${word}; \
 +		unset SHEBANG_CMD; \
 +	fi \
 +	done
 +.endif
 +
  # Owner and group of the WWW user
  WWWOWN?=	www
  WWWGRP?=	www
 
 --YZ5djTAD1cGYuMQK--
State-Changed-From-To: open->closed 
State-Changed-By: bapt 
State-Changed-When: Fri May 10 10:32:03 UTC 2013 
State-Changed-Why:  
A generic solution has landed in the tree: USES= shebangfix 

http://www.freebsd.org/cgi/query-pr.cgi?pr=51152 
>Unformatted:
