Bug#881826: devscripts: sadt: does not parse debian/control with comments
Geoffrey Thomas
geofft at ldpreload.com
Wed Nov 15 15:23:15 UTC 2017
Package: devscripts
Version: 2.17.11
User: devscripts at packages.debian.org
Usertags: sadt
sadt fails to correctly parse debian/control files that include comments
in their build-dependencies, for instance:
$ mkdir -p debian/tests
$ cat > debian/control << EOF
Source: s
Build-Depends:
# some comment here
sl
EOF
$ cat > debian/tests/control << EOF
Tests: sl-exists
Depends: @builddeps@
EOF
$ cat > debian/tests/sl-exists << EOF
#!/bin/sh
dpkg -l sl
EOF
$ sadt
Traceback (most recent call last):
File "/usr/bin/sadt", line 476, in <module>
main()
File "/usr/bin/sadt", line 378, in main
for n, para in enumerate(deb822.Packages.iter_paragraphs(file)):
File "/usr/lib/python3/dist-packages/debian/deb822.py", line 378, in iter_paragraphs
for section in parser:
apt_pkg.Error: E:Unable to parse package file (1)
This is refused by libapt-pkg's deb822 format parser, but permitted by the
pure-Python one in python-debian, as noted in a comment in python-debian:
> :param use_apt_pkg: if sequence is a file, apt_pkg can be used
> if available to parse the file, since it's much much faster. Set
> this parameter to True to enable use of apt_pkg. Note that the
> TagFile parser from apt_pkg is a much stricter parser of the
> Deb822 format, particularly with regards whitespace between
> paragraphs and comments within paragraphs. If these features are
> required (for example in debian/control files), ensure that this
> parameter is set to False.
The "Packages" subclass (which is intended for parsing Packages files in
apt repos, not deb822 files in general) sets use_apt_pkg to true. The
simplest fix is to change sadt line 378 to pass use_apt_pkg=False, but in
theory, python-debian should gain a new subclass for debian/control files
that has the _PkgRelationMixin but uses the more lenient parser.
If you would like me to commit this change to the collab-maint repo, let
me know. I've confirmed that it does fix the problem.
--
Geoffrey Thomas
https://ldpreload.com
geofft at ldpreload.com
More information about the devscripts-devel
mailing list