On 17276 March 1977, Russ Allbery wrote:

So, in short: A t2u uploaded source package should consist of whatever t2u produces (normal Debian source package) *plus* two additional files.

The first file contains client side generated data, but to *not*
overburden the client, this *only* consists of the output of `git
ls-files --format="%(objectmode) %(objectname) %(path)"` for the tag
that should be uploaded, signed by the DD/DM key - or something
similarly easily generated on client side. Exact format can be hashed
out between t2u people and ftpmaster during implementation.
You describe the contents here, but not the semantics, and I'm not sure that I fully understand what the intended semantics are (in other words, what packages dak will accept under this proposal). Would source packages that contain additional files not represented in this list of files and
hashes be accepted, for example?

dak sets no limit on the packages here. That is, no matter what t2u has
to do in its blackbox, go and have fun. Just include the signed list of
files from the maintainer plus the shallow clone.

The intention is that enough gets uploaded and stored somewhere that dak
(or whoever later) can reconstruct what t2u did. And, obviously, if you
then follow the steps t2u does and use as input the shallow clone
(verified against the maintainers sig), it really should get identical
output. (Maybe minus timestamps, but for the important part).

Here's one specific concrete example for one workflow using tag2upload
(there are other variations): suppose I, as the uploader, tag a Git tree that is patches-applied with no patches in debian/patches/*. I run the above command and include that signed data somewhere where tag2upload can get at it via the Git tag. tag2upload then turns that into a 3.0 (quilt) package and uploads that package along with the information as requested, including that list of files and hashes that I signed from the tree that I
tagged.

In the thing I described it does not matter what t2u does, and yes, what
it uploads may well contain more or less files, or changed files, from
what the maintainer signed and started the process with. But those are
all added/removed/changed files from the t2u process, so ought to be
able to be redone, taking the same starting point. If *that* isn't true,
something would be fundamentally wrong.

When dak sees the package, all of the files in debian/* in the source
package will have the same hashes as in the git ls-files output, but the source package will have additional files in debian/patches/* that do not exist in the git ls-files output. Some of the upstream files will have hashes in the git ls-files output that match the contents of those files after unpacking the source package (and thus applying patches), but will
not match the hashes of those files as they exist in the upstream
orig.tar.gz.

In this proposal, would dak be willing to accept such a package?

Unless dak goes and redoes the work that t2u is doing, ie. construct the
whole thing from git and whatever magic needed, dak will not care, if
the files in the source package are modified by t2u.

The case of a repository that contains only the debian/* files poses
another set of complications, but I don't think we have to get into that immediately. The above examples are probably enough to work through to
understand what the intended semantics of this manifest is.

I'm not entirely sure on what is best to require here. I mean, the orig
source has to be somewhere, including on the maints machine, so should
be possible to be included in this without any extra large magic.

The second file consists of a shallow git clone of the repository for
the tag that t2u wants to upload, put into an appropriately named
tarball.
Just to double check, to make sure I'm not missing some subtlety, it's
intentional that this file contains all of the same information as in the first file, and the first file is just a subset of this same information
in a different form?

It's not the same. The first contains a list of things with hashes or
something (whatever will be defined between t2u and ftpmaster). The
second contains the actual data. But yes, you can generate the first out
of the second - except for the maintainers signature.

In other words, someone could verify the signature on the Git tag in this file and then run the git ls-files command on the Git repository and get exactly the same information as in the first file, so the first file is
technically redundant.  I can think of some reasons why you might want
that, but it's a little surprising, so I wanted to make sure that's
intentional.

And yes, you can get the exact same thing out. Thats how you can verify
it later, if it matches. I mean, we CAN condense it down to "the
maintainer does the shallow clone and signs that, and that gets
uploaded", but I think that goes against the "simple on the client
side".



--
bye, Joerg

Reply via email to