|
|
@@ -116,12 +116,12 @@ void foreachTarget(std::string const URI, std::string const Dist,
|
|
|
for (std::vector<std::string>::const_iterator T = targets.begin(); T != targets.end(); ++T)
|
|
|
{
|
|
|
#define APT_T_CONFIG(X) _config->Find(std::string("APT::Acquire::Targets::deb-src::") + *T + "::" + (X))
|
|
|
- std::string const URI = APT_T_CONFIG(flatArchive ? "flatURI" : "URI");
|
|
|
+ std::string const MetaKey = APT_T_CONFIG(flatArchive ? "flatMetaKey" : "MetaKey");
|
|
|
std::string const ShortDesc = APT_T_CONFIG("ShortDescription");
|
|
|
std::string const LongDesc = APT_T_CONFIG(flatArchive ? "flatDescription" : "Description");
|
|
|
bool const IsOptional = _config->FindB(std::string("APT::Acquire::Targets::deb-src::") + *T + "::Optional", true);
|
|
|
#undef APT_T_CONFIG
|
|
|
- if (URI.empty())
|
|
|
+ if (MetaKey.empty())
|
|
|
continue;
|
|
|
|
|
|
vector<debReleaseIndex::debSectionEntry const*> const SectionEntries = src->second;
|
|
|
@@ -130,23 +130,24 @@ void foreachTarget(std::string const URI, std::string const Dist,
|
|
|
{
|
|
|
for (vector<std::string>::const_iterator l = lang.begin(); l != lang.end(); ++l)
|
|
|
{
|
|
|
- if (*l == "none" && URI.find("$(LANGUAGE)") != std::string::npos)
|
|
|
+ if (*l == "none" && MetaKey.find("$(LANGUAGE)") != std::string::npos)
|
|
|
continue;
|
|
|
|
|
|
- struct SubstVar subst[] = {
|
|
|
- { "$(SITE)", &Site },
|
|
|
- { "$(RELEASE)", &Release },
|
|
|
- { "$(COMPONENT)", &((*I)->Section) },
|
|
|
- { "$(LANGUAGE)", &(*l) },
|
|
|
- { NULL, NULL }
|
|
|
- };
|
|
|
- Call(baseURI, *T, URI, ShortDesc, LongDesc, IsOptional, subst);
|
|
|
-
|
|
|
- if (URI.find("$(LANGUAGE)") == std::string::npos)
|
|
|
+ std::map<std::string, std::string> Options;
|
|
|
+ Options.insert(std::make_pair("SITE", Site));
|
|
|
+ Options.insert(std::make_pair("RELEASE", Release));
|
|
|
+ Options.insert(std::make_pair("COMPONENT", (*I)->Section));
|
|
|
+ Options.insert(std::make_pair("LANGUAGE", *l));
|
|
|
+ Options.insert(std::make_pair("ARCHITECTURE", "source"));
|
|
|
+ Options.insert(std::make_pair("BASE_URI", baseURI));
|
|
|
+ Options.insert(std::make_pair("CREATED_BY", *T));
|
|
|
+ Call(MetaKey, ShortDesc, LongDesc, IsOptional, Options);
|
|
|
+
|
|
|
+ if (MetaKey.find("$(LANGUAGE)") == std::string::npos)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (URI.find("$(COMPONENT)") == std::string::npos)
|
|
|
+ if (MetaKey.find("$(COMPONENT)") == std::string::npos)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -156,12 +157,12 @@ void foreachTarget(std::string const URI, std::string const Dist,
|
|
|
for (std::vector<std::string>::const_iterator T = targets.begin(); T != targets.end(); ++T)
|
|
|
{
|
|
|
#define APT_T_CONFIG(X) _config->Find(std::string("APT::Acquire::Targets::deb::") + *T + "::" + (X))
|
|
|
- std::string const URI = APT_T_CONFIG(flatArchive ? "flatURI" : "URI");
|
|
|
+ std::string const MetaKey = APT_T_CONFIG(flatArchive ? "flatMetaKey" : "MetaKey");
|
|
|
std::string const ShortDesc = APT_T_CONFIG("ShortDescription");
|
|
|
std::string const LongDesc = APT_T_CONFIG(flatArchive ? "flatDescription" : "Description");
|
|
|
bool const IsOptional = _config->FindB(std::string("APT::Acquire::Targets::deb::") + *T + "::Optional", true);
|
|
|
#undef APT_T_CONFIG
|
|
|
- if (URI.empty())
|
|
|
+ if (MetaKey.empty())
|
|
|
continue;
|
|
|
|
|
|
for (map<string, vector<debReleaseIndex::debSectionEntry const*> >::const_iterator a = ArchEntries.begin();
|
|
|
@@ -175,28 +176,28 @@ void foreachTarget(std::string const URI, std::string const Dist,
|
|
|
|
|
|
for (vector<std::string>::const_iterator l = lang.begin(); l != lang.end(); ++l)
|
|
|
{
|
|
|
- if (*l == "none" && URI.find("$(LANGUAGE)") != std::string::npos)
|
|
|
+ if (*l == "none" && MetaKey.find("$(LANGUAGE)") != std::string::npos)
|
|
|
continue;
|
|
|
|
|
|
- struct SubstVar subst[] = {
|
|
|
- { "$(SITE)", &Site },
|
|
|
- { "$(RELEASE)", &Release },
|
|
|
- { "$(COMPONENT)", &((*I)->Section) },
|
|
|
- { "$(LANGUAGE)", &(*l) },
|
|
|
- { "$(ARCHITECTURE)", &(a->first) },
|
|
|
- { NULL, NULL }
|
|
|
- };
|
|
|
- Call(baseURI, *T, URI, ShortDesc, LongDesc, IsOptional, subst);
|
|
|
-
|
|
|
- if (URI.find("$(LANGUAGE)") == std::string::npos)
|
|
|
+ std::map<std::string, std::string> Options;
|
|
|
+ Options.insert(std::make_pair("SITE", Site));
|
|
|
+ Options.insert(std::make_pair("RELEASE", Release));
|
|
|
+ Options.insert(std::make_pair("COMPONENT", (*I)->Section));
|
|
|
+ Options.insert(std::make_pair("LANGUAGE", *l));
|
|
|
+ Options.insert(std::make_pair("ARCHITECTURE", a->first));
|
|
|
+ Options.insert(std::make_pair("BASE_URI", baseURI));
|
|
|
+ Options.insert(std::make_pair("CREATED_BY", *T));
|
|
|
+ Call(MetaKey, ShortDesc, LongDesc, IsOptional, Options);
|
|
|
+
|
|
|
+ if (MetaKey.find("$(LANGUAGE)") == std::string::npos)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (URI.find("$(COMPONENT)") == std::string::npos)
|
|
|
+ if (MetaKey.find("$(COMPONENT)") == std::string::npos)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (URI.find("$(ARCHITECTURE)") == std::string::npos)
|
|
|
+ if (MetaKey.find("$(ARCHITECTURE)") == std::string::npos)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -207,30 +208,23 @@ struct ComputeIndexTargetsClass
|
|
|
{
|
|
|
vector <IndexTarget *> * const IndexTargets;
|
|
|
|
|
|
- void operator()(std::string const &baseURI, std::string const &/*TargetName*/,
|
|
|
- std::string const &URI, std::string const &ShortDesc, std::string const &LongDesc,
|
|
|
- bool const IsOptional, struct SubstVar const * const subst)
|
|
|
+ void operator()(std::string MetaKey, std::string ShortDesc, std::string LongDesc,
|
|
|
+ bool const IsOptional, std::map<std::string, std::string> Options)
|
|
|
{
|
|
|
- std::string const name = SubstVar(URI, subst);
|
|
|
- IndexTarget * Target;
|
|
|
- if (IsOptional == true)
|
|
|
- {
|
|
|
- Target = new OptionalIndexTarget(
|
|
|
- name,
|
|
|
- SubstVar(ShortDesc, subst),
|
|
|
- SubstVar(LongDesc, subst),
|
|
|
- baseURI + name
|
|
|
- );
|
|
|
- }
|
|
|
- else
|
|
|
+ for (std::map<std::string, std::string>::const_iterator O = Options.begin(); O != Options.end(); ++O)
|
|
|
{
|
|
|
- Target = new IndexTarget(
|
|
|
- name,
|
|
|
- SubstVar(ShortDesc, subst),
|
|
|
- SubstVar(LongDesc, subst),
|
|
|
- baseURI + name
|
|
|
- );
|
|
|
+ MetaKey = SubstVar(MetaKey, std::string("$(") + O->first + ")", O->second);
|
|
|
+ ShortDesc = SubstVar(ShortDesc, std::string("$(") + O->first + ")", O->second);
|
|
|
+ LongDesc = SubstVar(LongDesc, std::string("$(") + O->first + ")", O->second);
|
|
|
}
|
|
|
+ IndexTarget * Target = new IndexTarget(
|
|
|
+ MetaKey,
|
|
|
+ ShortDesc,
|
|
|
+ LongDesc,
|
|
|
+ Options.find("BASE_URI")->second + MetaKey,
|
|
|
+ IsOptional,
|
|
|
+ Options
|
|
|
+ );
|
|
|
IndexTargets->push_back(Target);
|
|
|
}
|
|
|
|
|
|
@@ -256,7 +250,7 @@ bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll) const
|
|
|
|
|
|
// special case for --print-uris
|
|
|
vector <IndexTarget *> const * const targets = ComputeIndexTargets();
|
|
|
-#define APT_TARGET(X) IndexTarget("", X, MetaIndexInfo(X), MetaIndexURI(X))
|
|
|
+#define APT_TARGET(X) IndexTarget("", X, MetaIndexInfo(X), MetaIndexURI(X), false, std::map<std::string,std::string>())
|
|
|
pkgAcqMetaBase * const TransactionManager = new pkgAcqMetaClearSig(Owner,
|
|
|
APT_TARGET("InRelease"), APT_TARGET("Release"), APT_TARGET("Release.gpg"),
|
|
|
targets, iR);
|
|
|
@@ -309,33 +303,33 @@ struct GetIndexFilesClass
|
|
|
std::string const Release;
|
|
|
bool const IsTrusted;
|
|
|
|
|
|
- void operator()(std::string const &/*baseURI*/, std::string const &TargetName,
|
|
|
- std::string const &/*URI*/, std::string const &/*ShortDesc*/, std::string const &/*LongDesc*/,
|
|
|
- bool const /*IsOptional*/, struct SubstVar const * const subst)
|
|
|
+ void operator()(std::string const &/*URI*/, std::string const &/*ShortDesc*/, std::string const &/*LongDesc*/,
|
|
|
+ bool const /*IsOptional*/, std::map<std::string, std::string> Options)
|
|
|
{
|
|
|
+ std::string const TargetName = Options.find("CREATED_BY")->second;
|
|
|
if (TargetName == "Packages")
|
|
|
{
|
|
|
Indexes->push_back(new debPackagesIndex(
|
|
|
URI,
|
|
|
Release,
|
|
|
- SubstVar("$(COMPONENT)", subst),
|
|
|
+ Options.find("COMPONENT")->second,
|
|
|
IsTrusted,
|
|
|
- SubstVar("$(ARCHITECTURE)", subst)
|
|
|
+ Options.find("ARCHITECTURE")->second
|
|
|
));
|
|
|
}
|
|
|
else if (TargetName == "Sources")
|
|
|
Indexes->push_back(new debSourcesIndex(
|
|
|
URI,
|
|
|
Release,
|
|
|
- SubstVar("$(COMPONENT)", subst),
|
|
|
+ Options.find("COMPONENT")->second,
|
|
|
IsTrusted
|
|
|
));
|
|
|
else if (TargetName == "Translations")
|
|
|
Indexes->push_back(new debTranslationsIndex(
|
|
|
URI,
|
|
|
Release,
|
|
|
- SubstVar("$(COMPONENT)", subst),
|
|
|
- SubstVar("$(LANGUAGE)", subst)
|
|
|
+ Options.find("COMPONENT")->second,
|
|
|
+ Options.find("LANGUAGE")->second
|
|
|
));
|
|
|
}
|
|
|
|