In the beginning, I tried to be careful to have commands that added a
substvar remove it when ran again with different options that caused it
to not be needed. However, now when I look over the code, I see 3 places
that got it right, 1 that was right but I just broke, and a dozen that
don't even try to handle this case.
Also, handling the case is hard; code that adds substvars may be complex
and calculate versioned dependencies. The removal code then has to somehow
also come up with those same exact dependency strings. It's a recipe for
nasty code and maintenance headache even if I went and fixed everything
right now.
Instead, I dropped the whole thing. Many debhelper commands make no
pretense of being idempotent anyway; it's easy and normal to call dh_prep
when starting a binary package build, with the exact purpose of not needing
to worry about idempotency.
I did leave in the delsubstvar function, as well as the option to
addsubstvar that, confusingly, causes an item to be removed. Just for
library compatability reasons.