]> git.saurik.com Git - apt.git/commitdiff
support comments in debian/control parsing
authorDavid Kalnischkies <david@kalnischkies.de>
Sat, 2 Jan 2016 12:19:32 +0000 (13:19 +0100)
committerDavid Kalnischkies <david@kalnischkies.de>
Sat, 2 Jan 2016 15:19:40 +0000 (16:19 +0100)
Now (55153bf94ff28a23318e79aa48242244c4d82b3c) 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
apt-pkg/deb/debsrcrecords.cc
test/integration/test-apt-get-build-dep

index cef7ad10edfd1f76ef7f49998ee63a6e6bcb0d1f..cefaf46acc84c59479227d248cdec5da40a98f55 100644 (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();
 
index 3d6550b604f004f0ba3495ae57070d767e57a381..b1c36222a04a695818599870153a072e4fdb8195 100755 (executable)
@@ -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