Bug#557459: dpkg-source: should not fallback to other formats without user intervention
It has been suggested on IRC that having dpkg-source switch back to
native mode if it can't find the .orig tarball was probably a bad idea
from the beginning and that it tends to confuse people. However,
with the addition of new formats, I generalized that concept of
fallbacks... we have a list of formats to try and the first one
whose prerequisite is satisfied is used. ron just found out that
passing -Zbzip2 generated a 3.0 (native) source package because
"1.0" accepts gzip only and that "3.0 (native)" is in the fallback list.
Now that we have native and non-native in different formats we have an
opportunity to fix that. We could just make dpkg-source fail if the
prerequisite for the current format is not satisfied. So people that
want native source packages would have to be explicit about that choice
and put "3.0 (native)" in debian/source/format.
Since that is an important interface change, I'm soliciting some more
feedback from debian-devel before I decide to do it.
On a sidenote, with such a change when "3.0 (quilt)" is made the default
format, 1.0 native source packages would fail to build because the
fallback to native would then be specific to 1.0. When we do that,
dpkg-source -x should thus be modified to auto-create debian/source/format
to mitigate this problem in this specific case.
Here's the log for reference:
00:02 <ron> buxy: I'm not sure sure this "fall back through a range of default
formats" idea is so hot.
00:04 <ron> if I pass -Zbzip2 to dpkg-source, for a package with no other
qualifiers, having it default to 3.0 (native) is far more likely to be
wrong than right
00:05 <ron> there is a perfectly good orig.tar.bz2 there, and a perfectly good
debian dir, so it seems quite unintuitive that it makes a native
package out of that
09:44 <buxy> ron: good remark, I can add 3.0 (quilt) before 3.0 (native) in the
10:26 <ron> buxy: I'm not sure that really makes it better, it may just be wrong
for different (and maybe fewer) people ...
10:26 <buxy> ron: you would rather have it fail?
10:26 <ron> I do think I'd prefer it if the user had to be explicit about what
format they wanted, since I don't really have the sanity checks of
specifying -sX anymore to cross check that against ...
10:27 <ron> I think I'd rather have it fail at build time, than potentially make
and upload a "bogus" package yeah ...
10:28 <buxy> ron: well, the idea was to keep the same logic than with 1.0, if you
don't have any .orig, you fallback to the native mode
10:28 <buxy> I just generalized it a bit
10:28 <lifeless> buxy: that confuses very many people ;)
10:28 <ron> basically something like "format 1.0 assumed if no s/format exists or
--format specified, if illegal options for 1.0 are passed with no
format, bail out rather than trying to guess which format it may be"
10:29 <buxy> lifeless: at least now, dpkg-source explains its behaviour with
10:30 <ron> native should probably have to be forced. either with -sn or "3.0
(native)". that seems to be a common screw up even with the 1.0
format, so it would be nice to make that harder to happen rather than
10:30 <lifeless> +1
10:31 <Clint> i think i agree
10:33 <buxy> ok, it deserves some discussion on -devel, but I'm not opposed to the