diff mbox

[nft] files: replace interpreter during installation

Message ID 20140113091623.10582.14579.stgit@nfdev.cica.es
State Accepted
Headers show

Commit Message

Arturo Borrero Jan. 13, 2014, 9:16 a.m. UTC
Many systems (for example Debian) don't recognice `#!nft -f' as a
valid interpreter.

A short way to handle this is to provide the full path to the interpreter
in the shebang.
That is what this patch does: update the shebang's path during installation.

For example, if you are installing under /usr/local, the shebang becomes:
 #!/usr/local/sbin/nft -f

If using --prefix=/, then:
 #!/sbin/nft -f

NOTE: If the shebang in source files are changed in a future, this sed script
should be updated as well.

Signed-off-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
---
 Makefile.defs.in  |    1 +
 configure.ac      |    1 +
 files/Makefile.in |    1 +
 3 files changed, 3 insertions(+)


--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Patrick McHardy Jan. 13, 2014, 9:39 a.m. UTC | #1
On Mon, Jan 13, 2014 at 10:16:23AM +0100, Arturo Borrero Gonzalez wrote:
> Many systems (for example Debian) don't recognice `#!nft -f' as a
> valid interpreter.
> 
> A short way to handle this is to provide the full path to the interpreter
> in the shebang.
> That is what this patch does: update the shebang's path during installation.
> 
> For example, if you are installing under /usr/local, the shebang becomes:
>  #!/usr/local/sbin/nft -f
> 
> If using --prefix=/, then:
>  #!/sbin/nft -f
> 
> NOTE: If the shebang in source files are changed in a future, this sed script
> should be updated as well.

I think we should use .in files instead and perform variable substition.

> 
> Signed-off-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
> ---
>  Makefile.defs.in  |    1 +
>  configure.ac      |    1 +
>  files/Makefile.in |    1 +
>  3 files changed, 3 insertions(+)
> 
> diff --git a/Makefile.defs.in b/Makefile.defs.in
> index 502f374..3fee9c2 100644
> --- a/Makefile.defs.in
> +++ b/Makefile.defs.in
> @@ -5,6 +5,7 @@ LEX		= @LEX@
>  YACC		= @YACC@
>  MKDIR_P		= @MKDIR_P@
>  INSTALL		= @INSTALL@
> +SED		= @SED@
>  
>  PACKAGE_TARNAME	= @PACKAGE_TARNAME@
>  
> diff --git a/configure.ac b/configure.ac
> index 811d7e2..ca14d83 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -23,6 +23,7 @@ AC_SUBST([CONFIG_DEBUG])
>  AC_PROG_CC
>  AC_PROG_MKDIR_P
>  AC_PROG_INSTALL
> +AC_PROG_SED
>  
>  AC_CHECK_PROG(CONFIG_MAN, docbook2x-man, y, n)
>  if test "$CONFIG_MAN" != "y"
> diff --git a/files/Makefile.in b/files/Makefile.in
> index c3643df..dc237e2 100644
> --- a/files/Makefile.in
> +++ b/files/Makefile.in
> @@ -2,3 +2,4 @@ install:
>  	@echo -e "  INSTALL\tfiles"
>  	$(MKDIR_P) $(DESTDIR)/$(confdir)
>  	$(INSTALL) -m 755 -p $(SUBDIR)nftables/* $(DESTDIR)/$(confdir)/
> +	$(SED) -i "s~#\! nft~#\!@sbindir@/nft~" $(DESTDIR)/$(confdir)/*
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arturo Borrero Jan. 13, 2014, 9:49 a.m. UTC | #2
On 13 January 2014 10:39, Patrick McHardy <kaber@trash.net> wrote:
>
> I think we should use .in files instead and perform variable substition.
>

Could you please elaborate this?

I have understood:

Use a variable in files/nftables/*, like:
<<
$shebang

table filter {
[...]

>>

And replace during install. Is this true?

regards
Patrick McHardy Jan. 13, 2014, 9:52 a.m. UTC | #3
On Mon, Jan 13, 2014 at 10:49:51AM +0100, Arturo Borrero Gonzalez wrote:
> On 13 January 2014 10:39, Patrick McHardy <kaber@trash.net> wrote:
> >
> > I think we should use .in files instead and perform variable substition.
> >
> 
> Could you please elaborate this?
> 
> I have understood:
> 
> Use a variable in files/nftables/*, like:
> <<
> $shebang
> 
> table filter {
> [...]
> 
> >>
> 
> And replace during install. Is this true?

Use f.i. files/nftables/ipv4-filter.in and use

#! ${sbindir}/nft
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alex Elsayed Jan. 13, 2014, 4:30 p.m. UTC | #4
Patrick McHardy wrote:

> On Mon, Jan 13, 2014 at 10:49:51AM +0100, Arturo Borrero Gonzalez wrote:
>> On 13 January 2014 10:39, Patrick McHardy <kaber@trash.net> wrote:
>> >
>> > I think we should use .in files instead and perform variable
>> > substition.
>> >
>> 
>> Could you please elaborate this?
>> 
>> I have understood:
>> 
>> Use a variable in files/nftables/*, like:
>> <<
>> $shebang
>> 
>> table filter {
>> [...]
>> 
>> >>
>> 
>> And replace during install. Is this true?
> 
> Use f.i. files/nftables/ipv4-filter.in and use
> 
> #! ${sbindir}/nft

Another option would be the venerable

#!/usr/bin/env nft


--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arturo Borrero Jan. 14, 2014, 12:48 p.m. UTC | #5
On 13 January 2014 10:52, Patrick McHardy <kaber@trash.net> wrote:
> On Mon, Jan 13, 2014 at 10:49:51AM +0100, Arturo Borrero Gonzalez wrote:
>> On 13 January 2014 10:39, Patrick McHardy <kaber@trash.net> wrote:
>> >
>> > I think we should use .in files instead and perform variable substition.
>> >
>>
>> Could you please elaborate this?
>>
>> I have understood:
>>
>> Use a variable in files/nftables/*, like:
>> <<
>> $shebang
>>
>> table filter {
>> [...]
>>
>> >>
>>
>> And replace during install. Is this true?
>
> Use f.i. files/nftables/ipv4-filter.in and use
>
> #! ${sbindir}/nft

I'm OK with this.

But I see you pushed my patch to master [0]. Should I still work on
your .in approach?

Regards.

[0] https://git.netfilter.org/nftables/commit/?id=c54ce2e0fd25d79f5343792c1c620fecdc3b03bc
Patrick McHardy Jan. 14, 2014, 1:11 p.m. UTC | #6
On Tue, Jan 14, 2014 at 01:48:46PM +0100, Arturo Borrero Gonzalez wrote:
> On 13 January 2014 10:52, Patrick McHardy <kaber@trash.net> wrote:
> > On Mon, Jan 13, 2014 at 10:49:51AM +0100, Arturo Borrero Gonzalez wrote:
> >> On 13 January 2014 10:39, Patrick McHardy <kaber@trash.net> wrote:
> >> >
> >> > I think we should use .in files instead and perform variable substition.
> >> >
> >>
> >> Could you please elaborate this?
> >>
> >> I have understood:
> >>
> >> Use a variable in files/nftables/*, like:
> >> <<
> >> $shebang
> >>
> >> table filter {
> >> [...]
> >>
> >> >>
> >>
> >> And replace during install. Is this true?
> >
> > Use f.i. files/nftables/ipv4-filter.in and use
> >
> > #! ${sbindir}/nft
> 
> I'm OK with this.
> 
> But I see you pushed my patch to master [0]. Should I still work on
> your .in approach?

Crap, that was actually a mistake, I committed it to my tree before
I replied to your email. Sorry. Please go ahead with the alternative
patch.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Liddicott Jan. 14, 2014, 3 p.m. UTC | #7
I realise a solution is reached, but an alternative in common use is
mentioned here for completeness;

#! /usr/bin/env nft -f

it is commonly used to invoke interpreters whose path is unknown but
which can be expected to be on the PATH

Sam

On Mon, Jan 13, 2014 at 9:16 AM, Arturo Borrero Gonzalez
<arturo.borrero.glez@gmail.com> wrote:
> Many systems (for example Debian) don't recognice `#!nft -f' as a
> valid interpreter.
>
> A short way to handle this is to provide the full path to the interpreter
> in the shebang.
> That is what this patch does: update the shebang's path during installation.
>
> For example, if you are installing under /usr/local, the shebang becomes:
>  #!/usr/local/sbin/nft -f
>
> If using --prefix=/, then:
>  #!/sbin/nft -f
>
> NOTE: If the shebang in source files are changed in a future, this sed script
> should be updated as well.
>
> Signed-off-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
> ---
>  Makefile.defs.in  |    1 +
>  configure.ac      |    1 +
>  files/Makefile.in |    1 +
>  3 files changed, 3 insertions(+)
>
> diff --git a/Makefile.defs.in b/Makefile.defs.in
> index 502f374..3fee9c2 100644
> --- a/Makefile.defs.in
> +++ b/Makefile.defs.in
> @@ -5,6 +5,7 @@ LEX             = @LEX@
>  YACC           = @YACC@
>  MKDIR_P                = @MKDIR_P@
>  INSTALL                = @INSTALL@
> +SED            = @SED@
>
>  PACKAGE_TARNAME        = @PACKAGE_TARNAME@
>
> diff --git a/configure.ac b/configure.ac
> index 811d7e2..ca14d83 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -23,6 +23,7 @@ AC_SUBST([CONFIG_DEBUG])
>  AC_PROG_CC
>  AC_PROG_MKDIR_P
>  AC_PROG_INSTALL
> +AC_PROG_SED
>
>  AC_CHECK_PROG(CONFIG_MAN, docbook2x-man, y, n)
>  if test "$CONFIG_MAN" != "y"
> diff --git a/files/Makefile.in b/files/Makefile.in
> index c3643df..dc237e2 100644
> --- a/files/Makefile.in
> +++ b/files/Makefile.in
> @@ -2,3 +2,4 @@ install:
>         @echo -e "  INSTALL\tfiles"
>         $(MKDIR_P) $(DESTDIR)/$(confdir)
>         $(INSTALL) -m 755 -p $(SUBDIR)nftables/* $(DESTDIR)/$(confdir)/
> +       $(SED) -i "s~#\! nft~#\!@sbindir@/nft~" $(DESTDIR)/$(confdir)/*
>
> --
> To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Patrick McHardy Jan. 14, 2014, 3:16 p.m. UTC | #8
On Tue, Jan 14, 2014 at 03:00:14PM +0000, Sam Liddicott wrote:
> I realise a solution is reached, but an alternative in common use is
> mentioned here for completeness;
> 
> #! /usr/bin/env nft -f
> 
> it is commonly used to invoke interpreters whose path is unknown but
> which can be expected to be on the PATH

I'm find either way. Unless there are arguments for not using env,
this seems like the simpler fix.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Arturo Borrero Jan. 22, 2014, 4:45 p.m. UTC | #9
On 14 January 2014 16:16, Patrick McHardy <kaber@trash.net> wrote:
> On Tue, Jan 14, 2014 at 03:00:14PM +0000, Sam Liddicott wrote:
>> I realise a solution is reached, but an alternative in common use is
>> mentioned here for completeness;
>>
>> #! /usr/bin/env nft -f
>>
>> it is commonly used to invoke interpreters whose path is unknown but
>> which can be expected to be on the PATH
>
> I'm find either way. Unless there are arguments for not using env,
> this seems like the simpler fix.


Using env with an additional argument (the '-f') seems to fail in my system.

===8<===
#!/usr/bin/env nft -f
list table filter
===8<===

% ./test
/usr/bin/env: nft -f: No such file or directory
Patrick McHardy Jan. 22, 2014, 4:51 p.m. UTC | #10
On Wed, Jan 22, 2014 at 05:45:39PM +0100, Arturo Borrero Gonzalez wrote:
> On 14 January 2014 16:16, Patrick McHardy <kaber@trash.net> wrote:
> > On Tue, Jan 14, 2014 at 03:00:14PM +0000, Sam Liddicott wrote:
> >> I realise a solution is reached, but an alternative in common use is
> >> mentioned here for completeness;
> >>
> >> #! /usr/bin/env nft -f
> >>
> >> it is commonly used to invoke interpreters whose path is unknown but
> >> which can be expected to be on the PATH
> >
> > I'm find either way. Unless there are arguments for not using env,
> > this seems like the simpler fix.
> 
> 
> Using env with an additional argument (the '-f') seems to fail in my system.
> 
> ===8<===
> #!/usr/bin/env nft -f
> list table filter
> ===8<===
> 
> % ./test
> /usr/bin/env: nft -f: No such file or directory

I guess lets just keep it this way. Thanks.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/Makefile.defs.in b/Makefile.defs.in
index 502f374..3fee9c2 100644
--- a/Makefile.defs.in
+++ b/Makefile.defs.in
@@ -5,6 +5,7 @@  LEX		= @LEX@
 YACC		= @YACC@
 MKDIR_P		= @MKDIR_P@
 INSTALL		= @INSTALL@
+SED		= @SED@
 
 PACKAGE_TARNAME	= @PACKAGE_TARNAME@
 
diff --git a/configure.ac b/configure.ac
index 811d7e2..ca14d83 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,6 +23,7 @@  AC_SUBST([CONFIG_DEBUG])
 AC_PROG_CC
 AC_PROG_MKDIR_P
 AC_PROG_INSTALL
+AC_PROG_SED
 
 AC_CHECK_PROG(CONFIG_MAN, docbook2x-man, y, n)
 if test "$CONFIG_MAN" != "y"
diff --git a/files/Makefile.in b/files/Makefile.in
index c3643df..dc237e2 100644
--- a/files/Makefile.in
+++ b/files/Makefile.in
@@ -2,3 +2,4 @@  install:
 	@echo -e "  INSTALL\tfiles"
 	$(MKDIR_P) $(DESTDIR)/$(confdir)
 	$(INSTALL) -m 755 -p $(SUBDIR)nftables/* $(DESTDIR)/$(confdir)/
+	$(SED) -i "s~#\! nft~#\!@sbindir@/nft~" $(DESTDIR)/$(confdir)/*