]> git.saurik.com Git - apt.git/commitdiff
add support for apt-get build-dep unpacked-source-dir
authorMichael Vogt <mvo@debian.org>
Fri, 25 Apr 2014 07:47:50 +0000 (09:47 +0200)
committerMichael Vogt <mvo@debian.org>
Fri, 25 Apr 2014 08:01:01 +0000 (10:01 +0200)
apt-pkg/deb/debindexfile.cc
apt-pkg/deb/debindexfile.h
cmdline/apt-get.cc
test/integration/test-apt-get-build-dep

index e7e764dd4ccfe1e3299fc74569cec64d8d78e33b..bb688412333e3a3d8866dd67901eef3146345eee 100644 (file)
@@ -744,6 +744,15 @@ class debIFTypeDscFile : public pkgIndexFile::Type
    };
    debIFTypeDscFile() {Label = "dsc File Source Index";};
 };
+class debIFTypeDebianSourceDir : public pkgIndexFile::Type
+{
+   public:
+   virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string SourceDir) const
+   {
+      return new debDscRecordParser(SourceDir + string("/debian/control"), NULL);
+   };
+   debIFTypeDebianSourceDir() {Label = "debian/control File Source Index";};
+};
 
 static debIFTypeSrc _apt_Src;
 static debIFTypePkg _apt_Pkg;
@@ -751,6 +760,7 @@ static debIFTypeTrans _apt_Trans;
 static debIFTypeStatus _apt_Status;
 // file based pseudo indexes
 static debIFTypeDscFile _apt_DscFile;
+static debIFTypeDebianSourceDir _apt_DebianSourceDir;
 
 const pkgIndexFile::Type *debSourcesIndex::GetType() const
 {
@@ -772,5 +782,9 @@ const pkgIndexFile::Type *debDscFileIndex::GetType() const
 {
    return &_apt_DscFile;
 }
+const pkgIndexFile::Type *debDebianSourceDirIndex::GetType() const
+{
+   return &_apt_DebianSourceDir;
+}
 
                                                                        /*}}}*/
index 88abfdd9d06c197c200fc171595ac83e21db6d3b..64ca558d2d4589041c1d59b63e73621f23ecebb0 100644 (file)
@@ -182,4 +182,9 @@ class debDscFileIndex : public pkgIndexFile
    virtual ~debDscFileIndex() {};
 };
 
+class debDebianSourceDirIndex : public debDscFileIndex
+{
+   virtual const Type *GetType() const APT_CONST;
+};
+
 #endif
index 5418c351bd7ac63b83bb8a41e056a9ad34bd550e..6d6ba5ff9ccd31ecc18ac0e5c4cd718ef09d61a5 100644 (file)
@@ -1055,8 +1055,17 @@ static bool DoBuildDep(CommandLine &CmdL)
       string Src;
       pkgSrcRecords::Parser *Last = 0;
 
+      // a unpacked debian source tree
+      if (DirectoryExists(*I))
+      {
+         // FIXME: how can we make this more elegant?
+         std::string TypeName = "debian/control File Source Index";
+         pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(TypeName.c_str());
+         if(Type != NULL)
+            Last = Type->CreateSrcPkgParser(*I);
+      }
       // if its a local file (e.g. .dsc) use this
-      if (FileExists(*I))
+      else if (FileExists(*I))
       {
          // see if we can get a parser for this pkgIndexFile type
          string TypeName = flExtension(*I) + " File Source Index";
index 6516aa7053255cb4d687fedfa27b5530fdfc025e..f71beae9c41560a476d07f0b697818d141b3ab83 100755 (executable)
@@ -83,3 +83,44 @@ Inst build-essential (1 stable [i386])
 Inst debhelper (7 stable [i386])
 Conf build-essential (1 stable [i386])
 Conf debhelper (7 stable [i386])" aptget build-dep --simulate 2vcard_0.5-3.dsc
+
+
+# unpacked source dir
+mkdir -p foo-1.0/debian
+cat > foo-1.0/debian/control <<'EOF'
+Source: apturl
+Section: admin
+Priority: optional
+Maintainer: Michael Vogt <mvo@ubuntu.com>
+Build-Depends: debhelper (>= 7)
+X-Python3-Version: >= 3.2
+Standards-Version: 3.9.3
+
+Package: apturl-common
+Architecture: any
+Depends: ${python3:Depends},
+ ${shlibs:Depends},
+ ${misc:Depends},
+ python3-apt,
+ python3-update-manager
+Replaces: apturl (<< 0.3.6ubuntu2)
+Description: install packages using the apt protocol - common data
+ AptUrl is a simple graphical application that takes an URL (which follows the
+ apt-protocol) as a command line option, parses it and carries out the
+ operations that the URL describes (that is, it asks the user if he wants the
+ indicated packages to be installed and if the answer is positive does so for
+ him).
+ .
+ This package contains the common data shared between the frontends.
+
+EOF
+
+testequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+  build-essential debhelper
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep --simulate ./foo-1.0