summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2020-06-16 08:52:50 +0300
committerKatja Marttila <katja.marttila@qt.io>2020-06-16 09:18:59 +0300
commit1359ff4de3d86601dd988fab0c35619f5a842488 (patch)
treedbf2fe75592afb652a886af606ae2e8ab0a817d8
parentfb2992faf76ad738687e1e50a2735d4113ff8865 (diff)
Require both SHA1 and MetadataName elements for united metadata
Installer can fetch either meta per component or meta per repository. Fetch meta per repository only when both MetadataName and SHA1 elements are found, otherwise fetch meta per component. Change-Id: Ic6d687525c74d5870cec991dea9dedf765b2df03 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
-rw-r--r--src/libs/installer/metadatajob.cpp28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp
index c500e2ec8..4c84dfae8 100644
--- a/src/libs/installer/metadatajob.cpp
+++ b/src/libs/installer/metadatajob.cpp
@@ -595,12 +595,19 @@ MetadataJob::Status MetadataJob::parseUpdatesXml(const QList<FileTaskResult> &re
if (!checksum.isNull())
testCheckSum = (checksum.toElement().text().toLower() == scTrue);
- // If we have top level sha1 element, we have compressed all metadata inside
- // one repository to a single 7z file. Fetch that instead of component specific
- // meta 7z files.
+ // If we have top level sha1 and MetadataName elements, we have compressed
+ // all metadata inside one repository to a single 7z file. Fetch that
+ // instead of component specific meta 7z files.
const QDomNode sha1 = root.firstChildElement(scSHA1);
+ QDomElement metadataNameElement = root.firstChildElement(QLatin1String("MetadataName"));
QDomNodeList children = root.childNodes();
- if (sha1.isNull()) {
+ if (!sha1.isNull() && !metadataNameElement.isNull()) {
+ const QString repoUrl = metadata.repository.url().toString();
+ const QString metadataName = metadataNameElement.toElement().text();
+ addFileTaskItem(QString::fromLatin1("%1/%2").arg(repoUrl, metadataName),
+ metadata.directory + QString::fromLatin1("/%1").arg(metadataName),
+ metadata, sha1.toElement().text(), QString());
+ } else {
bool metaFound = false;
for (int i = 0; i < children.count(); ++i) {
const QDomElement el = children.at(i).toElement();
@@ -625,19 +632,6 @@ MetadataJob::Status MetadataJob::parseUpdatesXml(const QList<FileTaskResult> &re
}
}
}
- } else {
- const QString repoUrl = metadata.repository.url().toString();
- QDomElement metadataNameElement = root.firstChildElement(QLatin1String("MetadataName"));
- if (!metadataNameElement.isNull()) {
- const QString metadataName = metadataNameElement.toElement().text();
- addFileTaskItem(QString::fromLatin1("%1/%2").arg(repoUrl, metadataName),
- metadata.directory + QString::fromLatin1("/%1").arg(metadataName),
- metadata, sha1.toElement().text(), QString());
- } else {
- qCWarning(QInstaller::lcInstallerInstallLog) <<
- "Unable to find MetadataName element from Updates.xml";
- return XmlDownloadFailure;
- }
}
if (metadata.repository.categoryname().isEmpty()) {