From 1a3a14ac63b0c4f18de53a7bddcf79d20a5e814f Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 27 Aug 2015 18:13:00 +0200 Subject: sources.list and indextargets option for pdiffs Disabling pdiffs can be useful occasionally, like if you have a fast local mirror where the download doesn't matter, but still want to use it for non-local mirrors. Also, some users might prefer it to only use it for very big indextargets like Contents. --- apt-pkg/deb/debmetaindex.cc | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'apt-pkg/deb/debmetaindex.cc') diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index 69e41a6f4..78d54b04e 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -36,6 +36,7 @@ class APT_HIDDEN debReleaseIndexPrivate /*{{{*/ std::vector Targets; std::vector Architectures; std::vector Languages; + bool UsePDiffs; }; std::vector DebEntries; @@ -131,6 +132,7 @@ static void GetIndexTargetsFor(char const * const Type, std::string const &URI, std::string const tplLongDesc = "$(SITE) " + APT_T_CONFIG(flatArchive ? "flatDescription" : "Description"); bool const IsOptional = _config->FindB(std::string("Acquire::IndexTargets::") + Type + "::" + *T + "::Optional", true); bool const KeepCompressed = _config->FindB(std::string("Acquire::IndexTargets::") + Type + "::" + *T + "::KeepCompressed", GzipIndex); + bool const UsePDiffs = _config->FindB(std::string("Acquire::IndexTargets::") + Type + "::" + *T + "::PDiffs", E->UsePDiffs); #undef APT_T_CONFIG if (tplMetaKey.empty()) continue; @@ -156,6 +158,10 @@ static void GetIndexTargetsFor(char const * const Type, std::string const &URI, Options.insert(std::make_pair("REPO_URI", URI)); Options.insert(std::make_pair("TARGET_OF", Type)); Options.insert(std::make_pair("CREATED_BY", *T)); + if (UsePDiffs) + Options.insert(std::make_pair("PDIFFS", "yes")); + else + Options.insert(std::make_pair("PDIFFS", "no")); std::string MetaKey = tplMetaKey; std::string ShortDesc = tplShortDesc; @@ -201,12 +207,13 @@ std::vector debReleaseIndex::GetIndexTargets() const void debReleaseIndex::AddComponent(bool const isSrc, std::string const &Name,/*{{{*/ std::vector const &Targets, std::vector const &Architectures, - std::vector Languages) + std::vector Languages, + bool const usePDiffs) { if (Languages.empty() == true) Languages.push_back("none"); debReleaseIndexPrivate::debSectionEntry const entry = { - Name, Targets, Architectures, Languages + Name, Targets, Architectures, Languages, usePDiffs }; if (isSrc) d->DebSrcEntries.push_back(entry); @@ -730,12 +737,19 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type /*{{{*/ else if (optValue == false && tarItr != mytargets.end()) mytargets.erase(std::remove(mytargets.begin(), mytargets.end(), target), mytargets.end()); } + bool UsePDiffs = _config->FindB("Acquire::PDiffs", true); + { + std::map::const_iterator const opt = Options.find("pdiffs"); + if (opt != Options.end()) + UsePDiffs = StringToBool(opt->second); + } Deb->AddComponent( IsSrc, Section, mytargets, parsePlusMinusOptions("arch", Options, APT::Configuration::getArchitectures()), - parsePlusMinusOptions("lang", Options, APT::Configuration::getLanguages(true)) + parsePlusMinusOptions("lang", Options, APT::Configuration::getLanguages(true)), + UsePDiffs ); if (Deb->SetTrusted(GetTriStateOption(Options, "trusted")) == false || -- cgit v1.2.3