On Sat, Jul 7, 2018 at 10:38 PM Tong Sun wrote:
Hi,
> If upstream doesn't build upstream tarballs, or you don't care about them, the simplest way is to clone upstream's repository and create a separate packaging branch in there. You will not need gbp import-orig at all with this workflow. gbp buildpackage will handle creating the upstream tarballs needed for the Debian source package.
I cannot make it happening, no matter what I tried.
How to make gbp buildpackage create the upstream tarballs and commit the generated tarball back to the pristine-tar branch?
Thanks to Shengjing Zhu's help, I was able to move one step further.
(Oddly I don't have it in my inbox, but found it at
I.e., what works is,
gbp buildpackage --git-pristine-tar --git-pristine-tar-commit --git-upstream-tag='%(version)s'
Which is,
using pristine-tar™ to make gbp buildpackage commit the generated tarball back to the pristine-tar branch using the --git-pristine-tar-commit option ... This will make sure others building your package can exactly regenerate the tarball you created when building the Debian™ package.
- - https://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.import.upstream-git.html
I.e., I don't have a pristine tarball, and am using the above command to generate it for me.
However, `gbp --git-pristine-tar` generated tarball confuses dpkg-source. Here is the full log, right from scratch:
------------------------------------
cd shc
git checkout pristine-tar
# prepare my debian/ folder, then
$ ls -l ../
total 124
drwxrwx--x 7 u u 4096 2018-07-07 16:20 shc
$ gbp buildpackage --git-pristine-tar --git-pristine-tar-commit --git-upstream-tag='%(version)s'
dh clean --with autotools_dev
dh_testdir
dh_auto_clean
dh_autotools-dev_restoreconfig
dh_clean
gbp:info: Creating /sysvol/dg/shc/shc_3.9.6.orig.tar.gz
gbp:info: Performing the build
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building shc using existing ./shc_3.9.6.orig.tar.gz
dpkg-source: info: local changes detected, the modified files are:
shc/.travis.yml
dpkg-source: info: you can integrate the local changes with dpkg-source --commit
dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/shc_3.9.6-1.diff.kENb1n
E: Failed to package source directory /sysvol/dg/shc/shc
gbp:error: 'sbuild --source-only-changes -s -v -A --no-clean-source' failed: it exited with 1
$ cat /tmp/shc_3.9.6-1.diff.kENb1n
+++ shc-3.9.6/.travis.yml
@@ -0,0 +1,5 @@
...
$ ls -l ../
total 124
drwxrwx--x 7 u u 4096 2018-07-07 16:20 shc
-rw-rw---- 1 u u 122644 2018-07-08 09:49 shc_3.9.6.orig.tar.gz
------------------------------------
I.e., `gbp --git-pristine-tar` is able to generate the tarball, but that tarballconfuses dpkg-source into thinking there is unexpected upstream changes -- the .travis.yml file is not in the tarball, but only in upstream git (therefore in my master as well)
------------------------------------
$ ls .travis.yml
.travis.yml
$ tar -tvzf ../shc_3.9.6.orig.tar.gz | grep travis | wc
0 0 0
$ grep filter ~/.gbp.conf | wc
0 0 0
------------------------------------
I don't have import-orig filter myself, so removing the .travis.yml file is done by `gbp --git-pristine-tar`. This is a good thing, especially when the upstream contains files like,
'.bzr',
'.hg',
'.hgtags',
'.svn',
'CVS',
However, then, how to make `dpkg-source` happy as well, without complaining? I shouldn't remove them from upstream git (therefore in my master as well), should I?
Thx