|
|
@@ -189,14 +189,14 @@ void pkgAcquire::Item::ReportMirrorFailure(string FailCode)
|
|
|
/*}}}*/
|
|
|
// AcqSubIndex::AcqSubIndex - Constructor /*{{{*/
|
|
|
// ---------------------------------------------------------------------
|
|
|
-/* Get the Index file first and see if there are languages available
|
|
|
- * If so, create a pkgAcqIndexTrans for the found language(s).
|
|
|
- */
|
|
|
+/* Get a sub-index file based on checksums from a 'master' file and
|
|
|
+ possibly query additional files */
|
|
|
pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire *Owner, string const &URI,
|
|
|
string const &URIDesc, string const &ShortDesc,
|
|
|
HashString const &ExpectedHash)
|
|
|
: Item(Owner), ExpectedHash(ExpectedHash)
|
|
|
{
|
|
|
+ /* XXX: Beware: Currently this class does nothing (of value) anymore ! */
|
|
|
Debug = _config->FindB("Debug::pkgAcquire::SubIndex",false);
|
|
|
|
|
|
DestFile = _config->FindDir("Dir::State::lists") + "partial/";
|
|
|
@@ -236,17 +236,7 @@ void pkgAcqSubIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*
|
|
|
Status = StatDone;
|
|
|
Dequeue();
|
|
|
|
|
|
- // No good Index is provided, so try guessing
|
|
|
- std::vector<std::string> langs = APT::Configuration::getLanguages(true);
|
|
|
- for (std::vector<std::string>::const_iterator l = langs.begin();
|
|
|
- l != langs.end(); ++l)
|
|
|
- {
|
|
|
- if (*l == "none") continue;
|
|
|
- string const file = "Translation-" + *l;
|
|
|
- new pkgAcqIndexTrans(Owner, Desc.URI.substr(0, Desc.URI.rfind('/')+1).append(file),
|
|
|
- Desc.Description.erase(Desc.Description.rfind(' ')+1).append(file),
|
|
|
- file);
|
|
|
- }
|
|
|
+ // No good Index is provided
|
|
|
}
|
|
|
/*}}}*/
|
|
|
void pkgAcqSubIndex::Done(string Message,unsigned long long Size,string Md5Hash, /*{{{*/
|
|
|
@@ -305,38 +295,7 @@ bool pkgAcqSubIndex::ParseIndex(string const &IndexFile) /*{{{*/
|
|
|
indexRecords SubIndexParser;
|
|
|
if (FileExists(IndexFile) == false || SubIndexParser.Load(IndexFile) == false)
|
|
|
return false;
|
|
|
-
|
|
|
- std::vector<std::string> lang = APT::Configuration::getLanguages(true);
|
|
|
- for (std::vector<std::string>::const_iterator l = lang.begin();
|
|
|
- l != lang.end(); ++l)
|
|
|
- {
|
|
|
- if (*l == "none")
|
|
|
- continue;
|
|
|
-
|
|
|
- string file = "Translation-" + *l;
|
|
|
- indexRecords::checkSum const *Record = SubIndexParser.Lookup(file);
|
|
|
- HashString expected;
|
|
|
- if (Record == NULL)
|
|
|
- {
|
|
|
- // FIXME: the Index file provided by debian currently only includes bz2 records
|
|
|
- Record = SubIndexParser.Lookup(file + ".bz2");
|
|
|
- if (Record == NULL)
|
|
|
- continue;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- expected = Record->Hash;
|
|
|
- if (expected.empty() == true)
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- IndexTarget target;
|
|
|
- target.Description = Desc.Description.erase(Desc.Description.rfind(' ')+1).append(file);
|
|
|
- target.MetaKey = file;
|
|
|
- target.ShortDesc = file;
|
|
|
- target.URI = Desc.URI.substr(0, Desc.URI.rfind('/')+1).append(file);
|
|
|
- new pkgAcqIndexTrans(Owner, &target, expected, &SubIndexParser);
|
|
|
- }
|
|
|
+ // so something with the downloaded index
|
|
|
return true;
|
|
|
}
|
|
|
/*}}}*/
|
|
|
@@ -1385,6 +1344,18 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/
|
|
|
return;
|
|
|
}
|
|
|
#endif
|
|
|
+ bool transInRelease = false;
|
|
|
+ {
|
|
|
+ std::vector<std::string> const keys = MetaIndexParser->MetaKeys();
|
|
|
+ for (std::vector<std::string>::const_iterator k = keys.begin(); k != keys.end(); ++k)
|
|
|
+ // FIXME: Feels wrong to check for hardcoded string here, but what should we do else…
|
|
|
+ if (k->find("Translation-") != std::string::npos)
|
|
|
+ {
|
|
|
+ transInRelease = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
for (vector <struct IndexTarget*>::const_iterator Target = IndexTargets->begin();
|
|
|
Target != IndexTargets->end();
|
|
|
++Target)
|
|
|
@@ -1422,8 +1393,10 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/
|
|
|
if ((*Target)->IsSubIndex() == true)
|
|
|
new pkgAcqSubIndex(Owner, (*Target)->URI, (*Target)->Description,
|
|
|
(*Target)->ShortDesc, ExpectedIndexHash);
|
|
|
- else
|
|
|
+ else if (transInRelease == false || MetaIndexParser->Exists((*Target)->MetaKey) == true)
|
|
|
+ {
|
|
|
new pkgAcqIndexTrans(Owner, *Target, ExpectedIndexHash, MetaIndexParser);
|
|
|
+ }
|
|
|
continue;
|
|
|
}
|
|
|
|