diff options
author | Katja Marttila <katja.marttila@qt.io> | 2023-01-31 15:57:22 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2023-02-09 07:36:56 +0200 |
commit | c9d7f2a3f72ced2dd576057b84bf03c6ece260af (patch) | |
tree | c3efe302ace3c4d544c9ea01b8d923332c921bb9 /src/libs/installer/packagemanagercore.cpp | |
parent | 399c010235bdb9079005930e125f301f53153808 (diff) |
Check sha1 checksum per repository
Updates.xml contains Checksum variable which can be set to false to
skip the archives checksum verification. The variable was read from one
arbitrary Updates.xml file and that was used in all downloads. Fixed so
that the checksum is read per Updates.xml. This change also speeds up
the component generation phase as it no longer needs to read Updates.xml
file.
Task-number: QTIFW-2805
Task-number: QTIFW-2928
Change-Id: Id28dd370ef200aec67cb85cbbc1d08d925b43c21
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index ebefafab6..3f91f6c7d 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -812,16 +812,19 @@ int PackageManagerCore::downloadNeededArchives(double partProgressSize) { Q_ASSERT(partProgressSize >= 0 && partProgressSize <= 1); - QList<QPair<QString, QString> > archivesToDownload; + QList<DownloadItem> archivesToDownload; quint64 archivesToDownloadTotalSize = 0; QList<Component*> neededComponents = orderedComponentsToInstall(); foreach (Component *component, neededComponents) { // collect all archives to be downloaded const QStringList toDownload = component->downloadableArchives(); + bool checkSha1CheckSum = (component->value(scCheckSha1CheckSum).toLower() == scTrue); foreach (const QString &versionFreeString, toDownload) { - archivesToDownload.push_back(qMakePair(QString::fromLatin1("installer://%1/%2") - .arg(component->name(), versionFreeString), QString::fromLatin1("%1/%2/%3") - .arg(component->repositoryUrl().toString(), component->name(), versionFreeString))); + DownloadItem item; + item.checkSha1CheckSum = checkSha1CheckSum; + item.fileName = scInstallerPrefixWithTwoArgs.arg(component->name(), versionFreeString); + item.sourceUrl = scThreeArgs.arg(component->repositoryUrl().toString(), component->name(), versionFreeString); + archivesToDownload.push_back(item); } archivesToDownloadTotalSize += component->value(scCompressedSize).toULongLong(); } @@ -1651,7 +1654,7 @@ bool PackageManagerCore::fetchCompressedPackagesTree() if (!d->fetchMetaInformationFromRepositories(DownloadType::CompressedPackage)) return false; - if (!d->addUpdateResourcesFromRepositories(true, true)) { + if (!d->addUpdateResourcesFromRepositories(true)) { return false; } @@ -1690,7 +1693,7 @@ bool PackageManagerCore::fetchRemotePackagesTree() if (!d->fetchMetaInformationFromRepositories(DownloadType::CompressedPackage)) return false; - if (!d->addUpdateResourcesFromRepositories(true)) + if (!d->addUpdateResourcesFromRepositories()) return false; const PackagesList &packages = d->remotePackages(); @@ -1945,24 +1948,6 @@ void PackageManagerCore::setTemporaryRepositories(const QStringList &repositorie } /*! - Checks whether the downloader should try to download SHA-1 checksums for - archives and returns the checksums. -*/ -bool PackageManagerCore::testChecksum() const -{ - return d->m_testChecksum; -} - -/*! - The \a test argument determines whether the downloader should try to - download SHA-1 checksums for archives. -*/ -void PackageManagerCore::setTestChecksum(bool test) -{ - d->m_testChecksum = test; -} - -/*! Returns the script engine that prepares and runs the component scripts. \sa {Component Scripting} @@ -2512,7 +2497,7 @@ void PackageManagerCore::listAvailablePackages(const QString ®exp, const QHas ComponentModel *model = defaultComponentModel(); d->fetchMetaInformationFromRepositories(DownloadType::UpdatesXML); - d->addUpdateResourcesFromRepositories(true); + d->addUpdateResourcesFromRepositories(); QRegularExpression re(regexp); re.setPatternOptions(QRegularExpression::CaseInsensitiveOption); const PackagesList &packages = d->remotePackages(); |