From 2767b0c96a0dbe713bc2d1e346d10f6787556d5b Mon Sep 17 00:00:00 2001 From: Katja Marttila Date: Mon, 30 Aug 2021 11:38:56 +0300 Subject: Fix qbsp adding from GUI Qbsp package adding failed using gui if the package with the same name existed in the component tree. Also increased priority to qbsp package so that if the same name and version exists in the component tree then qbsp package is used. Task-number: QTIFW-2312 Change-Id: I732fef1a7ba503d2332f411e15b6873c63dcf630 Reviewed-by: Arttu Tarkiainen --- src/libs/installer/metadatajob.cpp | 4 -- src/libs/installer/packagemanagercore.cpp | 12 ++---- src/libs/installer/packagemanagercore_p.cpp | 67 ++--------------------------- src/libs/installer/packagemanagercore_p.h | 4 -- 4 files changed, 7 insertions(+), 80 deletions(-) (limited to 'src/libs/installer') diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp index 690f5ac33..3408b3dab 100644 --- a/src/libs/installer/metadatajob.cpp +++ b/src/libs/installer/metadatajob.cpp @@ -180,10 +180,6 @@ void MetadataJob::doStart() item.insert(TaskRole::Authenticator, QVariant::fromValue(authenticator)); items.append(item); } - else { - qCWarning(QInstaller::lcInstallerInstallLog) << "Trying to parse compressed repo as " - "normal repository. Check repository syntax."; - } } } if (items.count() > 0) { diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index a0a010142..232024f66 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -1480,20 +1480,16 @@ bool PackageManagerCore::fetchCompressedPackagesTree() if (!isInstaller() && status() == Failure) return false; - if (!d->fetchMetaInformationFromCompressedRepositories()) + if (!d->fetchMetaInformationFromRepositories(DownloadType::CompressedPackage)) return false; if (!d->addUpdateResourcesFromRepositories(true, true)) { return false; } - PackagesList packages; - const PackagesList &compPackages = d->compressedPackages(); - if (compPackages.isEmpty()) + const PackagesList &packages = d->remotePackages(); + if (packages.isEmpty()) return false; - packages.append(compPackages); - const PackagesList &rPackages = d->remotePackages(); - packages.append(rPackages); return fetchPackagesTree(packages, installedPackages); } @@ -1523,7 +1519,7 @@ bool PackageManagerCore::fetchRemotePackagesTree() if (!d->fetchMetaInformationFromRepositories()) return false; - if (!d->fetchMetaInformationFromCompressedRepositories()) + if (!d->fetchMetaInformationFromRepositories(DownloadType::CompressedPackage)) return false; if (!d->addUpdateResourcesFromRepositories(true)) diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index d2f33c1b9..f323d676d 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -211,7 +211,6 @@ static void deferredRename(const QString &oldName, const QString &newName, bool PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core) : m_updateFinder(nullptr) - , m_compressedFinder(nullptr) , m_localPackageHub(std::make_shared()) , m_status(PackageManagerCore::Unfinished) , m_needsHardRestart(false) @@ -250,7 +249,6 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core) PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core, qint64 magicInstallerMaker, const QList &performedOperations) : m_updateFinder(nullptr) - , m_compressedFinder(nullptr) , m_localPackageHub(std::make_shared()) , m_status(PackageManagerCore::Unfinished) , m_needsHardRestart(false) @@ -2481,7 +2479,7 @@ PackagesList PackageManagerCorePrivate::remotePackages() m_updateFinder = new KDUpdater::UpdateFinder; m_updateFinder->setAutoDelete(false); - m_updateFinder->setPackageSources(m_packageSources); + m_updateFinder->setPackageSources(m_packageSources + m_compressedPackageSources); m_updateFinder->setLocalPackageHub(m_localPackageHub); m_updateFinder->run(); @@ -2495,29 +2493,6 @@ PackagesList PackageManagerCorePrivate::remotePackages() return m_updateFinder->updates(); } -PackagesList PackageManagerCorePrivate::compressedPackages() -{ - if (m_compressedUpdates && m_compressedFinder) - return m_compressedFinder->updates(); - m_compressedUpdates = false; - delete m_compressedFinder; - - m_compressedFinder = new KDUpdater::UpdateFinder; - m_compressedFinder->setAutoDelete(false); - m_compressedFinder->addCompressedPackage(true); - m_compressedFinder->setPackageSources(m_compressedPackageSources); - - m_compressedFinder->setLocalPackageHub(m_localPackageHub); - m_compressedFinder->run(); - if (m_compressedFinder->updates().isEmpty()) { - setStatus(PackageManagerCore::Failure, tr("Cannot retrieve remote tree %1.") - .arg(m_compressedFinder->errorString())); - return PackagesList(); - } - m_compressedUpdates = true; - return m_compressedFinder->updates(); -} - /*! Returns a hash containing the installed package name and it's associated package information. If the application is running in installer mode or the local components file could not be parsed, the @@ -2585,42 +2560,6 @@ bool PackageManagerCorePrivate::fetchMetaInformationFromRepositories(DownloadTyp return m_repoFetched; } -bool PackageManagerCorePrivate::fetchMetaInformationFromCompressedRepositories() -{ - bool compressedRepoFetched = false; - - m_compressedUpdates = false; - m_updateSourcesAdded = false; - - try { - //Tell MetadataJob that only compressed packages needed to be fetched and not all. - //We cannot do this in general fetch meta method as the compressed packages might be - //installed after components tree is generated - m_metadataJob.addDownloadType(DownloadType::CompressedPackage); - m_metadataJob.start(); - m_metadataJob.waitForFinished(); - } catch (Error &error) { - setStatus(PackageManagerCore::Failure, tr("Cannot retrieve meta information: %1") - .arg(error.message())); - return compressedRepoFetched; - } - - if (m_metadataJob.error() != Job::NoError) { - switch (m_metadataJob.error()) { - case QInstaller::UserIgnoreError: - break; // we can simply ignore this error, the user knows about it - default: - //Do not change core status here, we can recover if there is invalid - //compressed repository - setStatus(m_core->status(), m_metadataJob.errorString()); - return compressedRepoFetched; - } - } - - compressedRepoFetched = true; - return compressedRepoFetched; -} - bool PackageManagerCorePrivate::addUpdateResourcesFromRepositories(bool parseChecksum, bool compressedRepository) { if (!compressedRepository && m_updateSourcesAdded) @@ -2680,8 +2619,8 @@ bool PackageManagerCorePrivate::addUpdateResourcesFromRepositories(bool parseChe if (!checksum.isNull()) m_core->setTestChecksum(checksum.toElement().text().toLower() == scTrue); } - if (compressedRepository) - m_compressedPackageSources.insert(PackageSource(QUrl::fromLocalFile(data.directory), 1)); + if (data.repository.isCompressed()) + m_compressedPackageSources.insert(PackageSource(QUrl::fromLocalFile(data.directory), 2)); else m_packageSources.insert(PackageSource(QUrl::fromLocalFile(data.directory), 1)); diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h index b29808228..65f0e43eb 100644 --- a/src/libs/installer/packagemanagercore_p.h +++ b/src/libs/installer/packagemanagercore_p.h @@ -177,7 +177,6 @@ signals: public: UpdateFinder *m_updateFinder; - UpdateFinder *m_compressedFinder; QSet m_packageSources; QSet m_compressedPackageSources; std::shared_ptr m_localPackageHub; @@ -244,10 +243,8 @@ private: bool adminRightsGained, bool deleteOperation); PackagesList remotePackages(); - PackagesList compressedPackages(); LocalPackagesHash localInstalledPackages(); bool fetchMetaInformationFromRepositories(DownloadType type = DownloadType::All); - bool fetchMetaInformationFromCompressedRepositories(); bool addUpdateResourcesFromRepositories(bool parseChecksum, bool compressedRepository = false); void processFilesForDelayedDeletion(); void findExecutablesRecursive(const QString &path, const QStringList &excludeFiles, QStringList *result); @@ -263,7 +260,6 @@ private: MetadataJob m_metadataJob; bool m_updates; - bool m_compressedUpdates; bool m_repoFetched; bool m_updateSourcesAdded; qint64 m_magicBinaryMarker; -- cgit v1.2.3