[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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



Ben Finney <ben+debian@benfinney.id.au> 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@debian.org)               <http://www.eyrie.org/~eagle/>


Reply to: