--- Begin Message ---
Package: git-buildpackage
Version: 0.9.30
Severity: normal
File: /usr/lib/python3/dist-packages/gbp/scripts/supercommand.py
Steps to reproduce:
dget
https://deb.debian.org/debian/pool/main/p/python-coverage/python-coverage_6.5.0+dfsg1-2.dsc
dpkg-source --skip-patches -x python-coverage_6.5.0+dfsg1-2.dsc
cd python-coverage-6.5.0+dfsg1/
git init
git add -Af .
git commit -m import
# Now we are on a patches-unapplied packaging branch (without .pc
# directory, at least in the version of dpkg-source I have here)
gbp pq import
Expected behaviour:
Imports the patch queue, leaving me on patch-queue/master,
with two patches applied.
Actual behaviour:
Python stack backtrace. (Transcript below.)
It leaves me on a broken patch-queue/master branch - one without
the patches applied. Even to go back to where I was before,
I must
git checkout master; git-branch -D patch-queue/master
The root cause is that the debian/patches/series file contains a line
containing only a form feed (ctrl-L). I think this is deranged.
Perhaps you don't want to support it. Maybe you want to at least
detect and reject it
Empirically, deleting the form feed works around the problem.
Background:
As you know: when dgit must import a .dsc (no proper dgit branch
available) that is in "3.0 (quilt)" format it uses gbp pq import to
convert the patches in the source package to a series of commits.
Because dgit wants to be able to work on every package ever uploaded
and accepted by Debian, this means that dgit in principle exposes gbp
pq to every strange package. This resulted in #1030093, where
Peter Green reports that dgit failed on python-coverage_6.5.0+dfsg1-2.dsc.
Maybe you recall that dgit already has a horrific workaround mode:
when it has trouble importing a package, it resorts to running gbp pq
with a fake version of "git apply" (which redirects to dpkg-source).
I have added an additional countermeasure to this "absurd git-apply"
mode: dgit now also launders the series file to eliminate anything
that doesn't look reasonable. So it is not a problem for dgit if gbp
pq continues to break on these strange series files.
But I thought you would appreciate the report.
Transcript of run with --verbose:
$ gbp pq import --verbose
gbp:debug: ['git', 'rev-parse', '--show-cdup']
gbp:debug: ['git', 'rev-parse', '--is-bare-repository']
gbp:debug: ['git', 'rev-parse', '--git-dir']
gbp:debug: ['git', 'symbolic-ref', 'HEAD']
gbp:debug: ['git', 'show-ref', 'refs/heads/master']
gbp:debug: ['git', 'status', '--porcelain']
gbp:debug: ['git', 'show-ref', '--verify', 'refs/heads/patch-queue/master']
gbp:debug: ['git', 'log', '--pretty=format:%H', '--no-show-signature', '-1',
'--first-parent', '--']
gbp:info: Trying to apply patches at '9a4d19efaf43dc9e010ae54c3aaf199d97cd577d'
gbp:debug: ['git', 'branch', 'patch-queue/master',
'9a4d19efaf43dc9e010ae54c3aaf199d97cd577d']
gbp:debug: ['git', 'symbolic-ref', 'HEAD']
gbp:debug: ['git', 'show-ref', 'refs/heads/master']
gbp:debug: ['git', 'checkout', 'patch-queue/master']
gbp:debug: Applying
/home/ian/things/Dgit/Bugs/1030093/gbp/python-coverage-6.5.0+dfsg1/debian/patches/01.omit-resource-files-from-distutils-setup.patch
gbp:debug: ['git', 'mailinfo', '-k', '/tmp/gbp_ohuew56u', '/dev/null']
gbp:debug: ['git', 'apply', '--index',
'/home/ian/things/Dgit/Bugs/1030093/gbp/python-coverage-6.5.0+dfsg1/debian/patches/01.omit-resource-files-from-distutils-setup.patch']
gbp:debug: ['git', 'write-tree']
gbp:debug: ['git', 'rev-parse', '--quiet', '--verify', 'HEAD']
gbp:debug: ['git', 'commit-tree', 'be024c39ac0f909b34cf31fd9835175660a37d4a',
'-p', '9a4d19efaf43dc9e010ae54c3aaf199d97cd577d']
gbp:debug: ['git', 'update-ref', '-m', 'gbp-pq import
/home/ian/things/Dgit/Bugs/1030093/gbp/python-coverage-6.5.0+dfsg1/debian/patches/01.omit-resource-files-from-distutils-setup.patch',
'HEAD', '85a324791cd65b1852ae8373a6b152fa97143a2d']
gbp:debug: Applying
/home/ian/things/Dgit/Bugs/1030093/gbp/python-coverage-6.5.0+dfsg1/debian/patches/02.rename-public-programs.patch
gbp:debug: ['git', 'mailinfo', '-k', '/tmp/gbp_3ahdctdw', '/dev/null']
gbp:debug: ['git', 'apply', '--index',
'/home/ian/things/Dgit/Bugs/1030093/gbp/python-coverage-6.5.0+dfsg1/debian/patches/02.rename-public-programs.patch']
gbp:debug: ['git', 'write-tree']
gbp:debug: ['git', 'rev-parse', '--quiet', '--verify', 'HEAD']
gbp:debug: ['git', 'commit-tree', '3741634a3978ff6c1e920b4eef9b80097ff465f8',
'-p', '85a324791cd65b1852ae8373a6b152fa97143a2d']
gbp:debug: ['git', 'update-ref', '-m', 'gbp-pq import
/home/ian/things/Dgit/Bugs/1030093/gbp/python-coverage-6.5.0+dfsg1/debian/patches/02.rename-public-programs.patch',
'HEAD', '35d1ffd97c6cf0b070bf0f15591940446973a88c']
gbp:debug: Applying
/home/ian/things/Dgit/Bugs/1030093/gbp/python-coverage-6.5.0+dfsg1/debian/patches/
Traceback (most recent call last):
File "/bin/gbp", line 149, in <module>
sys.exit(supercommand())
^^^^^^^^^^^^^^
File "/bin/gbp", line 145, in supercommand
return module.main(args)
^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/gbp/scripts/pq.py", line 499, in main
import_pq(repo, current, options)
File "/usr/lib/python3/dist-packages/gbp/scripts/pq.py", line 372, in
import_pq
num = import_quilt_patches(repo, branch, series, tries,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/gbp/scripts/pq.py", line 335, in
import_quilt_patches
apply_and_commit_patch(repo, patch, maintainer, patch.topic, name)
File "/usr/lib/python3/dist-packages/gbp/scripts/common/pq.py", line 316, in
apply_and_commit_patch
author = {'name': patch.author,
^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/gbp/patch_series.py", line 181, in author
return self._get_info_field('author')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/gbp/patch_series.py", line 164, in
_get_info_field
self._read_info()
File "/usr/lib/python3/dist-packages/gbp/patch_series.py", line 196, in
_read_info
super(Dep3Patch, self)._read_info()
File "/usr/lib/python3/dist-packages/gbp/patch_series.py", line 62, in
_read_info
self._read_git_mailinfo()
File "/usr/lib/python3/dist-packages/gbp/patch_series.py", line 81, in
_read_git_mailinfo
for line in open(self.path, 'rb'):
^^^^^^^^^^^^^^^^^^^^^
IsADirectoryError: [Errno 21] Is a directory:
'/home/ian/things/Dgit/Bugs/1030093/gbp/python-coverage-6.5.0+dfsg1/debian/patches/'
$
-- System Information:
Debian Release: bookworm/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 5.10.0-0.deb10.16-amd64 (SMP w/8 CPU threads)
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)
Versions of packages git-buildpackage depends on:
ii devscripts 2.22.2
ii git 1:2.39.1-0.1
ii man-db 2.11.2-1
ii python3 3.11.1-3
ii python3-dateutil 2.8.2-1
ii python3-pkg-resources 66.1.1-1
ii python3-yaml 6.0-3+b2
ii sensible-utils 0.0.17+nmu1
Versions of packages git-buildpackage recommends:
ii cowbuilder 0.89
ii pbuilder 0.231
ii pristine-tar 1.50
ii python3-requests 2.28.1+dfsg-1
Versions of packages git-buildpackage suggests:
pn python3-notify2 <none>
ii sudo 1.9.12p2-1
ii unzip 6.0-27
-- no debconf information
--- End Message ---