pkgSrcRecords &SrcRecs,std::string &Src,
CacheFile &Cache)
{
- if (Cache.BuildCaches(false) == false)
- return nullptr;
std::string VerTag, UserRequestedVerTag;
std::string ArchTag = "";
std::string RelTag = _config->Find("APT::Default-Release");
return _error->Error(_("Must specify at least one package to fetch source for"));
CacheFile Cache;
- // Read the source list
- if (Cache.BuildSourceList() == false)
+ if (Cache.BuildCaches(false) == false)
return false;
- pkgSourceList *List = Cache.GetSourceList();
// Create the text record parsers
+ pkgSourceList * const List = Cache.GetSourceList();
pkgSrcRecords SrcRecs(*List);
if (_error->PendingError() == true)
return false;
{
ioprintf(c1out, "Skipping download of file '%s' as requested hashsum is not available for authentication\n",
localFile.c_str());
+ Dsc[J].Dsc.clear();
continue;
}
{
pkgAcquire::UriIterator I = Fetcher.UriBegin();
for (; I != Fetcher.UriEnd(); ++I)
- std::cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' <<
- I->Owner->FileSize << ' ' << I->Owner->HashSum() << std::endl;
+ std::cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' <<
+ std::to_string(I->Owner->FileSize) << ' ' << I->Owner->HashSum() << std::endl;
return true;
}
bool DoBuildDep(CommandLine &CmdL)
{
CacheFile Cache;
- std::vector<char const *> VolatileCmdL;
+ std::vector<std::string> VolatileCmdL;
Cache.GetSourceList()->AddVolatileFiles(CmdL, &VolatileCmdL);
_config->Set("APT::Install-Recommends", false);
{
for (size_t i = 0; i < VolatileSources.size(); ++i)
{
- char const * const Src = VolatileCmdL[i];
+ auto const Src = VolatileCmdL[i];
if (DirectoryExists(Src))
- ioprintf(c1out, _("Note, using directory '%s' to get the build dependencies\n"), Src);
+ ioprintf(c1out, _("Note, using directory '%s' to get the build dependencies\n"), Src.c_str());
else
- ioprintf(c1out, _("Note, using file '%s' to get the build dependencies\n"), Src);
+ ioprintf(c1out, _("Note, using file '%s' to get the build dependencies\n"), Src.c_str());
std::unique_ptr<pkgSrcRecords::Parser> Last(VolatileSources[i]->CreateSrcParser());
if (Last == nullptr)
- return _error->Error(_("Unable to find a source package for %s"), Src);
+ return _error->Error(_("Unable to find a source package for %s"), Src.c_str());
std::string const pseudo = std::string("builddeps:") + Src;
WriteBuildDependencyPackage(buildDepsPkgFile, pseudo, pseudoArch,
- GetBuildDeps(Last.get(), Src, StripMultiArch, hostArch));
+ GetBuildDeps(Last.get(), Src.c_str(), StripMultiArch, hostArch));
pseudoPkgs.emplace_back(pseudo, pseudoArch);
}
}
VolatileCmdL.size());
}
+ bool const WantLock = _config->FindB("APT::Get::Print-URIs", false) == false;
if (CmdL.FileList[1] != 0)
{
+ if (Cache.BuildCaches(WantLock) == false)
+ return false;
// Create the text record parsers
pkgSrcRecords SrcRecs(*List);
if (_error->PendingError() == true)
Cache.AddIndexFile(new debStringPackageIndex(buildDepsPkgFile.str()));
- bool WantLock = _config->FindB("APT::Get::Print-URIs", false) == false;
if (Cache.Open(WantLock) == false)
return false;
pkgProblemResolver Fix(Cache.GetDepCache());
}
if (DoAutomaticRemove(Cache) == false)
return false;
+
{
pkgDepCache::ActionGroup group(Cache);
+ if (_config->FindB("APT::Get::Build-Dep-Automatic", false) == false)
+ {
+ for (auto const &pkg: removeAgain)
+ {
+ auto const instVer = Cache[pkg].InstVerIter(Cache);
+ if (unlikely(instVer.end() == true))
+ continue;
+ for (auto D = instVer.DependsList(); D.end() != true; ++D)
+ {
+ if (D->Type != pkgCache::Dep::Depends || D.IsMultiArchImplicit())
+ continue;
+ APT::VersionList verlist = APT::VersionList::FromDependency(Cache, D, APT::CacheSetHelper::CANDIDATE);
+ for (auto const &V : verlist)
+ {
+ auto const P = V.ParentPkg();
+ if (Cache[P].InstallVer != V)
+ continue;
+ Cache->MarkAuto(P, false);
+ }
+ }
+ }
+ }
for (auto const &pkg: removeAgain)
Cache->MarkDelete(pkg, false, 0, true);
}