Clarify rationale for ‘debian/rules’ shebang line (was: debian/rules "make -f" restriction)

View: New views
9 Messages — Rating Filter:   Alert me  

Parent Message unknown Clarify rationale for ‘debian/rules’ shebang line (was: debian/rules "make -f" restriction)

by Ben Finney-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Manoj Srivastava <srivasta@...> writes:

>         I think it would be a good idea to _add_ to policy a rule that
>  says that  "make -f debian/rules" and "./debian/rules" must behave
>  identically, to prevent confusion, and to promote reproducibility, and
>   conform to the principle of least surprise.

Rather than a new rule, I submit this patch to clarify the existing rule
for the shebang line.

=== modified file 'policy.sgml'
--- policy.sgml 2009-10-21 20:49:37 +0000
+++ policy.sgml 2009-10-31 00:59:18 +0000
@@ -1725,7 +1725,10 @@
        <p>
          It must start with the line <tt>#!/usr/bin/make -f</tt>,
          so that it can be invoked by saying its name rather than
-         invoking <prgn>make</prgn> explicitly.
+         invoking <prgn>make</prgn> explicitly. That is, invoking
+         either of <tt>make -f debian/rules <em>args...</em></tt>
+         or <tt>./debian/rules <em>args...</em></tt> should cause
+         identical behaviour in each case.
        </p>
 
        <p>

--
 \     “Listen: we are here on Earth to fart around. Don't let anybody |
  `\                  tell you otherwise.” —_Timequake_, Kurt Vonnegut |
_o__)                                                                  |
Ben Finney


--
To UNSUBSCRIBE, email to debian-policy-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...


Re: Clarify rationale for ‘debian/rules’ shebang line

by Ben Finney-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ben Finney <ben+debian@...> writes:

> Manoj Srivastava <srivasta@...> writes:
>
> >         I think it would be a good idea to _add_ to policy a rule that
> >  says that  "make -f debian/rules" and "./debian/rules" must behave
> >  identically, to prevent confusion, and to promote reproducibility, and
> >   conform to the principle of least surprise.
>
> Rather than a new rule, I submit this patch to clarify the existing rule
> for the shebang line.

I was sloppy in my use of normative language; this is a “must” directive.

=== modified file 'policy.sgml'
--- policy.sgml 2009-10-21 20:49:37 +0000
+++ policy.sgml 2009-10-31 01:10:42 +0000
@@ -1725,7 +1725,10 @@
        <p>
          It must start with the line <tt>#!/usr/bin/make -f</tt>,
          so that it can be invoked by saying its name rather than
-         invoking <prgn>make</prgn> explicitly.
+         invoking <prgn>make</prgn> explicitly. That is, invoking
+         either of <tt>make -f debian/rules <em>args...</em></tt>
+         or <tt>./debian/rules <em>args...</em></tt> must cause
+         identical behaviour in each case.
        </p>
 
        <p>

--
 \             “We can't depend for the long run on distinguishing one |
  `\         bitstream from another in order to figure out which rules |
_o__)               apply.” —Eben Moglen, _Anarchism Triumphant_, 1999 |
Ben Finney


--
To UNSUBSCRIBE, email to debian-policy-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...


Re: Clarify rationale for ‘debian/rules’ shebang line

by Russ Allbery-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ben Finney <ben+debian@...> writes:

> I was sloppy in my use of normative language; this is a “must” directive.

> === modified file 'policy.sgml'
> --- policy.sgml 2009-10-21 20:49:37 +0000
> +++ policy.sgml 2009-10-31 01:10:42 +0000
> @@ -1725,7 +1725,10 @@
>         <p>
>           It must start with the line <tt>#!/usr/bin/make -f</tt>,
>           so that it can be invoked by saying its name rather than
> -         invoking <prgn>make</prgn> explicitly.
> +         invoking <prgn>make</prgn> explicitly. That is, invoking
> +         either of <tt>make -f debian/rules <em>args...</em></tt>
> +         or <tt>./debian/rules <em>args...</em></tt> must cause
> +         identical behaviour in each case.
>         </p>
>  
>         <p>

Seems like a reasonable clarification to me.  Seconded.

Note, btw, that Lintian currently has some permitted exceptions to this
that we may not actually want to allow:

# Check for required #!/usr/bin/make -f opening line.  Allow -r or -e; a
# strict reading of Policy doesn't allow either, but they seem harmless.
my $start = <RULES>;
tag "debian-rules-not-a-makefile", ""
    unless $start =~ m%^\#!\s*/usr/bin/make\s+-[re]?f[re]?\s*$%;

-e isn't actually harmless, and -r, while it generally is, would break
the above requirement.  I suspect Lintian should start insisting on
exactly -f for consistent behavior.

--
Russ Allbery (rra@...)               <http://www.eyrie.org/~eagle/>


--
To UNSUBSCRIBE, email to debian-policy-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...


Re: Clarify rationale for ‘debian/rules’ shebang line

by Tollef Fog Heen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

]] Ben Finney

| === modified file 'policy.sgml'
| --- policy.sgml 2009-10-21 20:49:37 +0000
| +++ policy.sgml 2009-10-31 00:59:18 +0000
| @@ -1725,7 +1725,10 @@
|         <p>
|           It must start with the line <tt>#!/usr/bin/make -f</tt>,

This should probably also be changed to allow «#! /usr/bin/make -f»
too.  There's no reason to mandate one particular style of hashbangs.

--
Tollef Fog Heen
UNIX is user friendly, it's just picky about who its friends are


--
To UNSUBSCRIBE, email to debian-policy-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...


Re: Clarify rationale for ‘debian/rules’ shebang line

by Ben Finney-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Tollef Fog Heen <tfheen@...> writes:

> This should probably also be changed to allow «#! /usr/bin/make -f»
> too. There's no reason to mandate one particular style of hashbangs.

Agreed, I also prefer a space between the shebang and the program name.
Please propose to ‘debian-policy’ a different patch and see if it
garners enough support.

--
 \      “It is the integrity of each individual human that is in final |
  `\        examination. On personal integrity hangs humanity's fate.” |
_o__)               —Richard Buckminster Fuller, _Critical Path_, 1981 |
Ben Finney


--
To UNSUBSCRIBE, email to debian-policy-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...


Re: Clarify rationale for 'debian/rules' shebang line

by Kurt Roeckx :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sat, Oct 31, 2009 at 12:12:33PM +1100, Ben Finney wrote:

>
> === modified file 'policy.sgml'
> --- policy.sgml 2009-10-21 20:49:37 +0000
> +++ policy.sgml 2009-10-31 01:10:42 +0000
> @@ -1725,7 +1725,10 @@
>         <p>
>           It must start with the line <tt>#!/usr/bin/make -f</tt>,
>           so that it can be invoked by saying its name rather than
> -         invoking <prgn>make</prgn> explicitly.
> +         invoking <prgn>make</prgn> explicitly. That is, invoking
> +         either of <tt>make -f debian/rules <em>args...</em></tt>
> +         or <tt>./debian/rules <em>args...</em></tt> must cause
> +         identical behaviour in each case.
>         </p>
>  
>         <p>
Seconded.


Kurt



signature.asc (853 bytes) Download Attachment

Re: Clarify rationale for 'debian/rules' shebang line

by Steve Langasek :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, Nov 15, 2009 at 11:20:17PM +0100, Kurt Roeckx wrote:
> On Sat, Oct 31, 2009 at 12:12:33PM +1100, Ben Finney wrote:

> > === modified file 'policy.sgml'
> > --- policy.sgml 2009-10-21 20:49:37 +0000
> > +++ policy.sgml 2009-10-31 01:10:42 +0000
> > @@ -1725,7 +1725,10 @@
> >         <p>
> >           It must start with the line <tt>#!/usr/bin/make -f</tt>,
> >           so that it can be invoked by saying its name rather than
> > -         invoking <prgn>make</prgn> explicitly.
> > +         invoking <prgn>make</prgn> explicitly. That is, invoking
> > +         either of <tt>make -f debian/rules <em>args...</em></tt>
> > +         or <tt>./debian/rules <em>args...</em></tt> must cause
> > +         identical behaviour in each case.
> >         </p>
> >  
> >         <p>

> Seconded.

I'm not convinced this is necessary, but I think it would be better worded
as:

   That is, invoking either of [...] must result in identical behavior.

--
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slangasek@...                                     vorlon@...


signature.asc (844 bytes) Download Attachment

Re: Clarify rationale for 'debian/rules' shebang line

by Russ Allbery-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Steve Langasek <vorlon@...> writes:
> On Sun, Nov 15, 2009 at 11:20:17PM +0100, Kurt Roeckx wrote:
>> On Sat, Oct 31, 2009 at 12:12:33PM +1100, Ben Finney wrote:

>>> === modified file 'policy.sgml'
>>> --- policy.sgml 2009-10-21 20:49:37 +0000
>>> +++ policy.sgml 2009-10-31 01:10:42 +0000
>>> @@ -1725,7 +1725,10 @@
>>>         <p>
>>>           It must start with the line <tt>#!/usr/bin/make -f</tt>,
>>>           so that it can be invoked by saying its name rather than
>>> -         invoking <prgn>make</prgn> explicitly.
>>> +         invoking <prgn>make</prgn> explicitly. That is, invoking
>>> +         either of <tt>make -f debian/rules <em>args...</em></tt>
>>> +         or <tt>./debian/rules <em>args...</em></tt> must cause
>>> +         identical behaviour in each case.
>>>         </p>
>>>  
>>>         <p>

>> Seconded.

> I'm not convinced this is necessary, but I think it would be better worded
> as:

>    That is, invoking either of [...] must result in identical behavior.

I second the modification with this change, as I agree with Steve that
this reads a bit better.

--
Russ Allbery (rra@...)               <http://www.eyrie.org/~eagle/>


--
To UNSUBSCRIBE, email to debian-policy-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...


Re: Clarify rationale for 'debian/rules' shebang line

by Kurt Roeckx :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, Nov 17, 2009 at 06:51:31PM -0800, Russ Allbery wrote:

> Steve Langasek <vorlon@...> writes:
> > On Sun, Nov 15, 2009 at 11:20:17PM +0100, Kurt Roeckx wrote:
> >> On Sat, Oct 31, 2009 at 12:12:33PM +1100, Ben Finney wrote:
>
> >>> === modified file 'policy.sgml'
> >>> --- policy.sgml 2009-10-21 20:49:37 +0000
> >>> +++ policy.sgml 2009-10-31 01:10:42 +0000
> >>> @@ -1725,7 +1725,10 @@
> >>>         <p>
> >>>           It must start with the line <tt>#!/usr/bin/make -f</tt>,
> >>>           so that it can be invoked by saying its name rather than
> >>> -         invoking <prgn>make</prgn> explicitly.
> >>> +         invoking <prgn>make</prgn> explicitly. That is, invoking
> >>> +         either of <tt>make -f debian/rules <em>args...</em></tt>
> >>> +         or <tt>./debian/rules <em>args...</em></tt> must cause
> >>> +         identical behaviour in each case.
> >>>         </p>
> >>>  
> >>>         <p>
>
> >> Seconded.
>
> > I'm not convinced this is necessary, but I think it would be better worded
> > as:
>
> >    That is, invoking either of [...] must result in identical behavior.
>
> I second the modification with this change, as I agree with Steve that
> this reads a bit better.

I'm fine with either wording.


Kurt


--
To UNSUBSCRIBE, email to debian-policy-REQUEST@...
with a subject of "unsubscribe". Trouble? Contact listmaster@...