Re: Summary of the current state of the tag2upload discussion
Le mardi, 25 juin 2024, 19.14:53 h CEST Russ Allbery a écrit :
> thomas@goirand.fr writes:
> > Watch the Kosovo lightning talk where Didier shows what he did. It is a
> > proven concept.
>
> If this is the proof of concept where the *.dsc file is encoded in a Git
> tag (sorry, there have been several proofs of concept and I lose track of
> which person was associated with which one), I understand it and have
> already said why I don't think it will work reliably enough in its current
> form. (Summary: It relies on the reproducibility of tar and compression
> programs.) We should measure reproducible source packages by comparing
> the unpacked source packages. It's a lot more robust.
For the record: I agree with Russ.
My PoC was written out of the desire to let Salsa CI upload _after successful
tests_, and I took the "inline the source package as built locally in a git
object" route for that. It inlines the .dsc and the _source.changes. As Russ
(and others) have demonstrated, this kind of concept is going to be very
fragile and very susceptible to breakage (with origins in varying versions of
dpkg, tar, git-archive, pristine-tar, source building workflows, etc etc): in
other words, it relies on the reproduciblity of _source packages_,
reproducibility of the conversion from a git repository to a source package
(which is out of scope of the reproducible builds' team, last I checked).
It also falls short on its original promise: given that (a modified, inlined
version of) the signed source package is pushed to Salsa, the uploader has
already vouched for the upload to Debian, even before the "required" tests
have ran.
The workflow I proposed was to delegate the actual upload to a CI job, but it
has no additional git-centric or security-centric properties than an uploader
pushing a git tag and uploading to DELAYED/1 simultaneously, and then
promoting, or cancelling depending on the CI test results (besides a bit less
manual work).
Another caveat with that approach, is that it clearly needs a Debian-specific
tool to build the inline data and add it to git (and then another to unpack it
and upload). As I wanted something auditable, I inlined text signatures and
refused to inline things out of the source tree, but it would be easy to
commit the actual signed source binaries to git and get the same process (and
effect). But then there's no point in using git, just upload it!
I think the tag2upload is a much better and stronger approach than my PoC for
these reasons:
- the dgit tools cover way more ground in terms of supported git workflows, to
get closer to reproducible source package building from git
- the PoC's promise to "only upload after successful CI" is nice, and not
covered by tag2upload (yet?), but is not really important in the big picture;
it's not such a fundamental property for a git workflow that it is worth
blocking the tag2upload proposal for. (and it's likely quite simple to get
that with tag2upload)
- tag2upload (especially with multiple, parallel instances of it) would test
reproducibility of the git-to-source process that is currently absolutely
untested. I totally concur with the impression that almost nobody is actually
dissecting source packages (as signed, I really mean the orig tar and
.debian.tar files) before upload; as well as the fact that even those doing so
are very likely to miss anything unusual in there, making the check mostly
useless.
OdyX
Reply to: