Bug#397785: [debconf] Should warn if postinst doesn't understand argument "reconfigure"
Russ Allbery <rra@debian.org> wrote:
> Frank Küster <frank@debian.org> 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)
Reply to: