summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/metadatajob.cpp
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2018-05-14 14:58:25 +0300
committerKatja Marttila <katja.marttila@qt.io>2018-06-04 03:14:49 +0000
commit83cc3b6b88e40353cd0e03e88a6fe1abeba038d5 (patch)
tree867f6909d05f49c3eb0b1825d20002f057b916a0 /src/libs/installer/metadatajob.cpp
parent88d85a78949194aafa67340d3afdbc90594f9064 (diff)
Allow install other components if sha mismatches in metadata
Expanding commit "Add attribute to mark parts of install tree unstable." This change will allow installing other components if some component has sha mismatch. Change-Id: I61202da95dc07ca3f1fe931cfe1fbbb053596f42 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Diffstat (limited to 'src/libs/installer/metadatajob.cpp')
-rw-r--r--src/libs/installer/metadatajob.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp
index bd577fecf..e14032640 100644
--- a/src/libs/installer/metadatajob.cpp
+++ b/src/libs/installer/metadatajob.cpp
@@ -383,6 +383,16 @@ void MetadataJob::metadataTaskFinished()
emit infoMessage(this, tr("Extracting meta information..."));
foreach (const FileTaskResult &result, m_metadataResult) {
const FileTaskItem item = result.value(TaskRole::TaskItem).value<FileTaskItem>();
+ if (result.value(TaskRole::ChecksumMismatch).toBool()) {
+ QString mismatchMessage = tr("Checksum mismatch detected for \"%1\".")
+ .arg(item.value(TaskRole::SourceFile).toString());
+ if (m_core->settings().allowUnstableComponents()) {
+ m_shaMissmatchPackages.append(item.value(TaskRole::Name).toString());
+ qWarning() << mismatchMessage;
+ } else {
+ throw QInstaller::TaskException(mismatchMessage);
+ }
+ }
UnzipArchiveTask *task = new UnzipArchiveTask(result.target(),
item.value(TaskRole::UserRole).toString());
@@ -555,6 +565,7 @@ MetadataJob::Status MetadataJob::parseUpdatesXml(const QList<FileTaskResult> &re
item.insert(TaskRole::UserRole, metadata.directory);
item.insert(TaskRole::Checksum, packageHash.toLatin1());
item.insert(TaskRole::Authenticator, QVariant::fromValue(authenticator));
+ item.insert(TaskRole::Name, packageName);
m_packages.append(item);
}
}