Subject: Bug#397785: [debconf] Should warn if postinst doesn't understand argument "reconfigure"

From: Frank Küster <[email-masked]>
Date: Fri, 10 Nov 2006 07:59:45 +0100

Russ Allbery <[email-masked]> wrote:

> Frank Küster <[email-masked]> writes:
>
>> Package: lintian
>> Version: 1.5.8
>> Severity: wishlist
>
>> From debconf-devel(7):
>
>> ,----
>> | the right thing would be to pass $1 = "reconfigure", but doing so
>> | without breaking all the postinsts that use debconf is difficult.  The
>> | migration plan away from this hack is to encourage people to write
>> | postinsts that accept "reconfigure", and once they all do, begin
>> | passing that variable.
>> `----
>
>> To aid in that goal, it would be nice if lintian complained if
>> reconfigure is not accepted.
>
> Agreed, but I don't have any idea how to do that given that the tests in
> postinst can be written as case statements or if statements and in many
> different formats and syntaxes and simply missing the word "reconfigure"
> doesn't mean that the postinst is wrong.

Yes, this is hard and probably won't go without false positives and
negatives... 

One approach might be to

- find assignments of $1 to a variable name

- check all occurrences of 

case ['"]*\$(1|name_found)['"] 

  or analogous 

if (\[|test) ...

  whether there's an occurence of "reconfigure" before "esac" or before
  "then", respectively.  I'd say it's a feature not to allow
  "*configure" in case statements.

Even if this approach might give false positives, I still think it's
better to do such a check than none at all.  

Regards, Frank
-- 
Dr. Frank Küster
Single Molecule Spectroscopy, Protein Folding @ Inst. f. Biochemie, Univ. Zürich
Debian Developer (teTeX/TeXLive)