Hi! On Sun, 2018-07-22 at 13:28:40 +0200, Christoph Biedl wrote: > Package: dpkg-dev > Version: 1.19.0.5+b1 > Severity: wishlist
> [ My gut feeling tells me I've reported this before - but I couldn't find it ] It didn't ring a bell. :) > dpkg-gencontrol might emit two warnings that look quite similar but > have a rather different meaning: > > | dpkg-gencontrol: warning: Depends field of package <package>: unknown > substitution variable ${<var>} > > | dpkg-gencontrol: warning: package <package>: unused substitution variable > ${<var>} > > Even after several years of encountering these (and fixing, of course), > I still get confused. Especially if only one of the both messages > appear, it's likely to get the meaning of "unknown" and "unused" the > wrong way. > > So I'm asking to reword these, and - more important - to include a > suggestion for the maintainer, like the following: > > | dpkg-gencontrol: warning: Variable ${<var>} was not listed in > debian/control for package <package> but is used - consider adding it > > | dpkg-gencontrol: warning: Variable ${<var>} was listed in debian/control > for package <package> but is not used - consider removing it > > Yes, these messages are longer than the current ones. But I think it's > worth it. This would miss the context that was present before (the field name at least). The recommendation I think might make more harm than good, because in many cases the fact that the variable is unknown/undefined or not used is on purpose, say with misc:Depends, which might be emitted with older debhelper but not newer, but could start emitting with even newer versions. Or something sets a substvar that we do not want to use. Regarding clarifying the messages, I think debian/control should be obvious from the command emitting these warnings? :) I guess we could list it but then it needs to be parametrized, as that's settable from the command-line. Also Dpkg::Substvars has no knowledge of where the variables being substituted come from (file nor field, etc), which makes creating a string that can be easily translated more difficult. Would perhaps just changing unknown for undefined help with the confusion? Or perhaps rephrasing them to something along the lines of: * unknown → substitution variable ${var} used, but was never defined * unused → substitution variable ${var} unused, but is defined Thanks, Guillem