diff options
author | Katja Marttila <katja.marttila@qt.io> | 2018-06-04 13:07:45 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2018-06-06 10:50:59 +0300 |
commit | cf8d5b9a650cc413dde79cf7d72da407c8993ddc (patch) | |
tree | 2d56955b2471facc250229ab92be1bfb2a62d176 /src/libs/installer | |
parent | 83cc3b6b88e40353cd0e03e88a6fe1abeba038d5 (diff) | |
parent | 28316fbb7efb95f7d0a3cdee4f601f1190f598aa (diff) |
Merge remote-tracking branch 'origin/3.0' into master
Change-Id: Ia00c88061f15fc9c9517b536609ac3260c0df2ef
Diffstat (limited to 'src/libs/installer')
-rw-r--r-- | src/libs/installer/componentmodel.cpp | 8 | ||||
-rw-r--r-- | src/libs/installer/metadatajob.cpp | 40 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 11 |
3 files changed, 36 insertions, 23 deletions
diff --git a/src/libs/installer/componentmodel.cpp b/src/libs/installer/componentmodel.cpp index 8201248f8..e729f3088 100644 --- a/src/libs/installer/componentmodel.cpp +++ b/src/libs/installer/componentmodel.cpp @@ -584,13 +584,9 @@ QSet<QModelIndex> ComponentModel::updateCheckedState(const ComponentSet &compone if (node->value(scCheckable, scTrue).toLower() == scFalse) { checkable = false; } - // Let the check state to be checked up if the node is installed even if the component is not - // selectable/enabled or is installed as autodependency. Otherwise the node might not be selected - // and installer thinks it should be uninstalled. - if (!node->isInstalled() && - ((!node->isCheckable() && checkable) || !node->isEnabled() || !node->autoDependencies().isEmpty())) { + + if ((!node->isCheckable() && checkable) || !node->isEnabled() || !node->autoDependencies().isEmpty()) continue; - } Qt::CheckState newState = state; const Qt::CheckState recentState = node->checkState(); diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp index e14032640..bbcf9ed5e 100644 --- a/src/libs/installer/metadatajob.cpp +++ b/src/libs/installer/metadatajob.cpp @@ -39,6 +39,8 @@ #include <QTemporaryDir> #include <QtMath> +const QStringList metaElements = {QLatin1String("Script"), QLatin1String("Licenses"), QLatin1String("UserInterfaces"), QLatin1String("Translations")}; + namespace QInstaller { static QUrl resolveUrl(const FileTaskResult &result, const QString &url) @@ -544,6 +546,7 @@ MetadataJob::Status MetadataJob::parseUpdatesXml(const QList<FileTaskResult> &re if (!el.isNull() && el.tagName() == QLatin1String("PackageUpdate")) { const QDomNodeList c2 = el.childNodes(); QString packageName, packageVersion, packageHash; + bool metaFound = false; for (int j = 0; j < c2.count(); ++j) { if (c2.at(j).toElement().tagName() == scName) packageName = c2.at(j).toElement().text(); @@ -551,22 +554,33 @@ MetadataJob::Status MetadataJob::parseUpdatesXml(const QList<FileTaskResult> &re packageVersion = (online ? c2.at(j).toElement().text() : QString()); else if ((c2.at(j).toElement().tagName() == QLatin1String("SHA1")) && testCheckSum) packageHash = c2.at(j).toElement().text(); + else { + foreach (QString meta, metaElements) { + if (c2.at(j).toElement().tagName() == meta) { + metaFound = true; + break; + } + } + } } const QString repoUrl = metadata.repository.url().toString(); - FileTaskItem item(QString::fromLatin1("%1/%2/%3meta.7z").arg(repoUrl, packageName, - packageVersion), metadata.directory + QString::fromLatin1("/%1-%2-meta.7z") - .arg(packageName, packageVersion)); - - QAuthenticator authenticator; - authenticator.setUser(metadata.repository.username()); - authenticator.setPassword(metadata.repository.password()); - - 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); + //If script element is not found, no need to fetch metadata + if (metaFound) { + FileTaskItem item(QString::fromLatin1("%1/%2/%3meta.7z").arg(repoUrl, packageName, + packageVersion), metadata.directory + QString::fromLatin1("/%1-%2-meta.7z") + .arg(packageName, packageVersion)); + + QAuthenticator authenticator; + authenticator.setUser(metadata.repository.username()); + authenticator.setPassword(metadata.repository.password()); + + 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); + } } } m_metadata.insert(metadata.directory, metadata); diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 2577f09fc..62056d906 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -406,11 +406,14 @@ bool PackageManagerCorePrivate::buildComponentTree(QHash<QString, Component*> &c restoreCheckState(); - foreach (QInstaller::Component *component, components) { - const QStringList warnings = ComponentChecker::checkComponent(component); - foreach (const QString &warning, warnings) - qCWarning(lcComponentChecker).noquote() << warning; + if (m_core->isVerbose()) { + foreach (QInstaller::Component *component, components) { + const QStringList warnings = ComponentChecker::checkComponent(component); + foreach (const QString &warning, warnings) + qCWarning(lcComponentChecker).noquote() << warning; + } } + } catch (const Error &error) { clearAllComponentLists(); emit m_core->finishAllComponentsReset(QList<QInstaller::Component*>()); |