diff options
author | Katja Marttila <katja.marttila@qt.io> | 2021-03-02 11:36:40 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2021-03-03 18:24:40 +0200 |
commit | 79bd9366980a9534e7e61e8e7c9e8c94efbd29d7 (patch) | |
tree | f534165fb5a30dabc33a6d59b435c58570a7a4ce /src/libs/installer/packagemanagercore_p.cpp | |
parent | 92b00db08fa6b9fb8f818cdef55c7578998c8ecf (diff) |
Add alternative way to update components from repository
Components can be updated from online repository using version number.
Sometimes there is a need to update to an older version which is now
possible by using content sha. Content sha can be added to repository
with repogen --sha-update <component_id>. If there is a new content sha
available in the repository, component is updated although it version
number might be smaller. After the content sha is removed from online
repository, the normal update with version number is performed.
Task-number: QTIFW-1798
Change-Id: Id9e32b0345af5101cccaf6e30c81bd39691d9590
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index f4670c738..e6220ba35 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -2246,7 +2246,8 @@ void PackageManagerCorePrivate::installComponent(Component *component, double pr component->value(scUncompressedSize).toULongLong(), component->value(scInheritVersion), component->isCheckable(), - component->isExpandedByDefault()); + component->isExpandedByDefault(), + component->value(scContentSha1)); m_localPackageHub->writeToDisk(); component->setInstalled(); @@ -2898,4 +2899,19 @@ bool PackageManagerCorePrivate::askUserConfirmCommand() const } } +bool PackageManagerCorePrivate::packageNeedsUpdate(const LocalPackage &localPackage, const Package *update) const +{ + bool updateNeeded = true; + const QString contentSha1 = update->data(scContentSha1).toString(); + if (!contentSha1.isEmpty()) { + if (contentSha1 == localPackage.contentSha1) + updateNeeded = false; + } else { + const QString updateVersion = update->data(scVersion).toString(); + if (KDUpdater::compareVersion(updateVersion, localPackage.version) <= 0) + updateNeeded = false; + } + return updateNeeded; +} + } // namespace QInstaller |