diff options
author | Michael Vogt <mvo@ubuntu.com> | 2014-04-22 17:59:09 +0200 |
---|---|---|
committer | Michael Vogt <mvo@ubuntu.com> | 2014-04-22 21:58:26 +0200 |
commit | feab34c5216941ca95aae1a389238a77b662d1de (patch) | |
tree | 3aee2587ca28cfa62421d076d40d81060a0579c4 /cmdline/apt-get.cc | |
parent | 5572f6bdcb947e11f32e2a035438d9d3899ad46d (diff) |
add support for apt-get build-dep foo.dsc
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r-- | cmdline/apt-get.cc | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index caf69da2a..92384931b 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -57,6 +57,9 @@ #include <apt-pkg/cacheiterators.h> #include <apt-pkg/upgrade.h> +// FIXME: direct include of deb specific header +#include <apt-pkg/debsrcrecords.h> + #include <apt-private/acqprogress.h> #include <apt-private/private-cacheset.h> #include <apt-private/private-cachefile.h> @@ -1053,12 +1056,23 @@ static bool DoBuildDep(CommandLine &CmdL) for (const char **I = CmdL.FileList + 1; *I != 0; I++, J++) { string Src; - pkgSrcRecords::Parser *Last = FindSrc(*I,Recs,SrcRecs,Src,Cache); + pkgSrcRecords::Parser *Last = 0; + vector<pkgSrcRecords::Parser::BuildDepRec> BuildDeps; + + // support local .dsc files + if (FileExists(*I) && flExtension(*I) == "dsc") + { + // FIXME: add a layer of abstraction + Last = new debDscRecordParser(*I); + Src = *I; + } else { + Last = FindSrc(*I,Recs,SrcRecs,Src,Cache); + } if (Last == 0) return _error->Error(_("Unable to find a source package for %s"),Src.c_str()); // Process the build-dependencies - vector<pkgSrcRecords::Parser::BuildDepRec> BuildDeps; + // FIXME: Can't specify architecture to use for [wildcard] matching, so switch default arch temporary if (hostArch.empty() == false) { @@ -1071,7 +1085,7 @@ static bool DoBuildDep(CommandLine &CmdL) } else if (Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only", false), StripMultiArch) == false) return _error->Error(_("Unable to get build-dependency information for %s"),Src.c_str()); - + // Also ensure that build-essential packages are present Configuration::Item const *Opts = _config->Tree("APT::Build-Essential"); if (Opts) |