[repoman] transport mechanism

Paul Mattal paul at mattal.com
Mon Jul 9 10:13:15 EDT 2007


Jason Chu wrote:
>>> On the whole, I think the custom client/server is still winning for me, 
>>> at the moment, though I wish support for SSL servers in Python was 
>>> better. But I really feel like there should be something standard we 
>>> could use for this authentication and transport.
>>>
>>> Any ideas?
> 
> The new one I learned was using ssh from a chroot.  That's how repo.or.cz
> works and that's how phrakture planned on doing projects.archlinux.org.
> That way "developers" can have accounts but they don't need shells on the
> hosting system.  You can even limit the commands they can execute using
> something like rsh.

This violates one of the goals of repoman, though: be able to deploy 
more than once on a single server. This is critical, because there 
will not be (at least at first) granular permissions within an 
install. If you're a trusted party, you get to work on all the repos.

Otherwise, this is a very good solution that phrakture mentioned and 
I considered.

[stuff snipped]

>>> One thought that just occurred to me.. we could take a page out of the 
>>> monotone trick book and separate trust from transport. We could add a 
>>> file to the PKGBUILD directory which gets stored in the SCM and contains 
>>> the sha1sum of the BINARY package that corresponds to this PKGBUILD 
>>> built for a particular architecture. Then we don't need to care where or 
>>> who a binary package comes from.. anyone can upload the binary package 
>>> to the server (without authentication) as long as the package has the 
>>> proper sha1sum. This also has the benefit of keeping developers from 
>>> accidentally uploading the wrong binary package.
> 
> As we talked about in the dev meeting, the problem with this is that
> two compiles of the same package will have different sha1sums.  This is
> because of timestamps within the tar, the order of files within the tar,
> the contents of the binaries (I'm pretty sure linked libraries aren't
> ordered, for example.
> 
> Saying that one PKGBUILD creates a package with a sha1sum of X means we
> can't autobuild at all.

I think we can still autobuild if we trust the autobuilder. My point 
is that a single package foo-2.1-7-i686 should correspond to EXACTLY 
one binary package that ever gets distributed to the world, and it 
should have been produced by running makepkg (in some environment) 
on the contents of the PKGBUILD directory and SCM version pointed to.

So if the autobuilder builds, calculates the signature, and puts it 
in the db, I'm fine with that-- we can create some hooks so that an 
autobuilder can do that easily.

The point is that at *some point*, someone or something should 
decide that package pkgver-pkgrel-arch corresponds to ONE binary 
thing that will be distributed (and that meets whatever level of 
quality checking and testing is appropriate), and the signature will 
always allow us to check that. Once it's been put in a repo, we will 
never change the signature again. Of course, you can always do a 
pkgrel bump and upload a new version; this just enforces that a 
particular pkgrel really is exactly one release of a binary package.

Then when someone sends in a bug report against a 
pkgver-pkgrel-arch, you can be sure (and ask him to verify) that his 
package is the same as yours. It lets you make draw strong 
conclusions about what's going on that you can rely upon when 
debugging. Although I believe that pacbuild will get us much closer 
to packages being uniformly built, I still prefer to trust the bits 
themselves to guarantee we're both running the same software when 
we're chasing bugs.

- P



More information about the repoman mailing list