diff options
author | Michael Vogt <mvo@debian.org> | 2014-05-07 18:10:52 +0200 |
---|---|---|
committer | Michael Vogt <mvo@debian.org> | 2014-05-07 18:10:52 +0200 |
commit | 00026265672f2663e0aa0ab1a3fa7333f718a643 (patch) | |
tree | 841fc7de4952b7ac0f535555ff8ddbce752b955e /apt-private/private-install.cc | |
parent | 38d2959ffb8c6f5f291b2910014a67b1b352ab4c (diff) | |
parent | aaf677da5b62d3d0fdeb26f9b4c63fed544b63cd (diff) |
Merge remote-tracking branch 'mvo/feature/apt-install-deb' into debian/experimental
Diffstat (limited to 'apt-private/private-install.cc')
-rw-r--r-- | apt-private/private-install.cc | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc index 107ed398e..35649fcdb 100644 --- a/apt-private/private-install.cc +++ b/apt-private/private-install.cc @@ -19,6 +19,7 @@ #include <apt-pkg/macros.h> #include <apt-pkg/packagemanager.h> #include <apt-pkg/pkgcache.h> +#include <apt-pkg/sourcelist.h> #include <errno.h> #include <stdlib.h> @@ -29,6 +30,7 @@ #include <iostream> #include <set> #include <vector> +#include <map> #include <apt-private/acqprogress.h> #include <apt-private/private-install.h> @@ -669,10 +671,34 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, CacheFile &Cache, bool DoInstall(CommandLine &CmdL) { CacheFile Cache; + // first check for local pkgs and add them to the cache + for (const char **I = CmdL.FileList; *I != 0; I++) + { + if(FileExists(*I)) + { + // FIXME: make this more elegant + std::string TypeStr = flExtension(*I) + "-file"; + pkgSourceList::Type *Type = pkgSourceList::Type::GetType(TypeStr.c_str()); + if(Type != 0) + { + std::vector<metaIndex *> List; + std::map<std::string, std::string> Options; + if(Type->CreateItem(List, *I, "", "", Options)) + { + // we have our own CacheFile that gives us a SourceList + // with superpowerz + SourceList *sources = (SourceList*)Cache.GetSourceList(); + sources->AddMetaIndex(List[0]); + } + } + } + } + + // then open the cache if (Cache.OpenForInstall() == false || Cache.CheckDeps(CmdL.FileSize() != 1) == false) return false; - + std::map<unsigned short, APT::VersionSet> verset; if(!DoCacheManipulationFromCommandLine(CmdL, Cache, verset)) |