Browse Source

support comments in debian/control parsing

Now (55153bf94f) that pkgTagFile can be
told to deal with all sorts of comments we can use this mode to parse
dsc (as by catch) and debian/control files properly even in the wake of
multiline fields spliced with comments like Build-Depends.

Closes: 806775
tags/debian/1.2_exp1
David Kalnischkies 6 years ago
parent
commit
e21ba62847
2 changed files with 45 additions and 4 deletions
  1. +10
    -4
      apt-pkg/deb/debsrcrecords.cc
  2. +35
    -0
      test/integration/test-apt-get-build-dep

+ 10
- 4
apt-pkg/deb/debsrcrecords.cc View File

@@ -33,8 +33,14 @@ using std::max;
using std::string;

debSrcRecordParser::debSrcRecordParser(std::string const &File,pkgIndexFile const *Index)
: Parser(Index), d(NULL), Fd(File,FileFd::ReadOnly, FileFd::Extension), Tags(&Fd,102400),
iOffset(0), Buffer(NULL) {}
: Parser(Index), d(NULL), Tags(&Fd), iOffset(0), Buffer(NULL)
{
if (File.empty() == false)
{
if (Fd.Open(File, FileFd::ReadOnly, FileFd::Extension))
Tags.Init(&Fd, 102400);
}
}

// SrcRecordParser::Binaries - Return the binaries field /*{{{*/
// ---------------------------------------------------------------------
@@ -260,7 +266,7 @@ debSrcRecordParser::~debSrcRecordParser()


debDscRecordParser::debDscRecordParser(std::string const &DscFile, pkgIndexFile const *Index)
: debSrcRecordParser(DscFile, Index)
: debSrcRecordParser("", Index)
{
// support clear signed files
if (OpenMaybeClearSignedFile(DscFile, Fd) == false)
@@ -270,7 +276,7 @@ debDscRecordParser::debDscRecordParser(std::string const &DscFile, pkgIndexFile
}

// re-init to ensure the updated Fd is used
Tags.Init(&Fd);
Tags.Init(&Fd, pkgTagFile::SUPPORT_COMMENTS);
// read the first (and only) record
Step();



+ 35
- 0
test/integration/test-apt-get-build-dep View File

@@ -9,6 +9,7 @@ configarchitecture 'i386'

insertpackage 'stable' 'debhelper' 'i386' '7'
insertpackage 'stable' 'build-essential' 'i386' '1'
insertpackage 'stable' 'build-depends' 'i386' '1'
insertinstalledpackage 'build-conflict' 'i386' '1'

setupaptarchive
@@ -149,3 +150,37 @@ E: No architecture information available for armel. See apt.conf(5) APT::Archite
testfailureequal 'Reading package lists...
Building dependency tree...
E: Unable to find a source package for foo' aptget build-dep --simulate foo

msgmsg 'Test with a dsc' 'with comments'
cat > comments.dsc <<EOF
# I love comments
# I love them so much, I give them their own paragraph

#This is my first package
Format: 3.0 (native)
Source: comments
Binary: comments
Architecture: all
Version: 1
#Version: 2
Maintainer: Joe Sixpack <joe@example.org>
Build-Depends: debhelper (>= 5),
# TODO: add more
build-depends (= 1),
Standards-Version: 3.9.6
# This is the end…

# or this?
EOF
testsuccessequal "Reading package lists...
Building dependency tree...
Note, using file './comments.dsc' to get the build dependencies
The following NEW packages will be installed:
build-depends build-essential debhelper
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Inst build-depends (1 stable [i386])
Inst build-essential (1 stable [i386])
Inst debhelper (7 stable [i386])
Conf build-depends (1 stable [i386])
Conf build-essential (1 stable [i386])
Conf debhelper (7 stable [i386])" aptget build-dep --simulate ./comments.dsc

Loading…
Cancel
Save