Chow Loong Jin
hyperair at debian.org
Tue Aug 26 17:29:51 UTC 2014
On Tue, Aug 26, 2014 at 06:04:57PM +0200, Bas Wijnen wrote:
> I haven't been very active lately, but that should change. After Cura
> was rejected due to nondistributable files, I thought I should use
> pristine-tar and so far haven't found what that does exactly, and how
> (or even why precisely) I should use it. This isn't documented on our
> wiki-page either, nor was the internet very helpful to me.
The purpose of pristine-tar is to be able to generate identical .orig.tar.*z
tarballs from the git repository, so that one can just clone the repository and
generate a next package for upload without needing to download the previous orig
tarball. Hence, at a minimum, any orig tarball that is uploaded to Debian should
The pristine-tar branch consists of a pair of files per stored tarball:
The .id file references the commit from which the tarball should be generated.
The .delta is a pristine-tar-specific binary delta that tells pristine-tar
exactly how to generate the pristine tarball witha from the referenced commit.
These files are automatically generated when calling "pristine-tar commit
gbp is typically used in one of three ways:
1. Upstream git history is kept separate from packaging repo, and the upstream
branch consists of tarballs imported via "git import-orig". This is the
recommended method as per gbp's documentation.
2. "upstream" branch tracks upstream git history, and tags. In this case, just
store uptsream's pristine tarballs into the pristine-tar folder by using
"pristine-tar commit $tarball $version_tag". If you need to mangle the
tarball, create a new dfsg branch that deletes the files you need, generate
the tarball, and commit it using "pristine-tar commit $tarball dfsg"
3. Upstream sources not present at all. In that case, just set
--git-tarball-dir when calling git buildpackage.
I prefer method #1, but I've noticed #2 being used in the team, specifically in
slic3r. I haven't seen #3 being used at all within the team, and I don't think
we have a policy set in place.
> So I'm asking here: for a package such as Cura, what would be the
> purpose of pristine-tar? To generate a tarball identical to upstream's,
> including non-distributable files, or without them? Why do I want
> whatever it does? What should I do to use it?
If upstream's tarball includes non-distributable files, then you'll probably be
uploading a +dfsg.orig.tar.*z tarball, and that's the tarball that must be
generatable from the git repository via pristine-tar.
As for a pristine non-dfsg-compliant upstream tarball, I'd consider that up to
the maintainer. For some of my packages involving tarball manglement, I use git
import-orig to import the pristine upstream tarball into the "upstream" branch
(with corresponding delta in pristine-tar), and then I merge the "upstream"
branch into "dfsg" which strips away the non-distributable files. "dfsg" is then
merged into "master" or "debian" which contains the debian/ folder.
> After I understand it, I'll document it on our wiki page. I think it is
> very important that this is well-documented, so that people unfamiliar
> with gbp aren't delayed as much as I am with this issue. (Which isn't
> only due to this, but it's a large part of it. No matter how easy this
> may seem, it stops me from starting to work on the package. I'm sure
> I'm not the only one who responds to that by doing other things
Thanks. That'll be very helpful.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 819 bytes
Desc: Digital signature
More information about the 3dprinter-general