summaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2021-08-30 11:38:56 +0300
committerKatja Marttila <katja.marttila@qt.io>2021-09-02 11:43:40 +0300
commit2767b0c96a0dbe713bc2d1e346d10f6787556d5b (patch)
treeca5342d36215e74db756af83b1367c0ce722ded8 /src/libs
parent08a123c86b9aae85da1be1542578de060df4868b (diff)
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 <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/installer/metadatajob.cpp4
-rw-r--r--src/libs/installer/packagemanagercore.cpp12
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp67
-rw-r--r--src/libs/installer/packagemanagercore_p.h4
-rw-r--r--src/libs/kdtools/updatefinder.cpp24
-rw-r--r--src/libs/kdtools/updatefinder.h4
6 files changed, 11 insertions, 104 deletions
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<LocalPackageHub>())
, m_status(PackageManagerCore::Unfinished)
, m_needsHardRestart(false)
@@ -250,7 +249,6 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core)
PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core, qint64 magicInstallerMaker,
const QList<OperationBlob> &performedOperations)
: m_updateFinder(nullptr)
- , m_compressedFinder(nullptr)
, m_localPackageHub(std::make_shared<LocalPackageHub>())
, 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<PackageSource> m_packageSources;
QSet<PackageSource> m_compressedPackageSources;
std::shared_ptr<LocalPackageHub> 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;
diff --git a/src/libs/kdtools/updatefinder.cpp b/src/libs/kdtools/updatefinder.cpp
index 034e162d3..5bf33d4a4 100644
--- a/src/libs/kdtools/updatefinder.cpp
+++ b/src/libs/kdtools/updatefinder.cpp
@@ -55,18 +55,6 @@ using namespace QInstaller;
objects.
*/
-/*!
- \fn void KDUpdater::UpdateFinder::addCompressedPackage(bool add)
- \internal
-
-*/
-
-/*!
- \fn void KDUpdater::UpdateFinder::isCompressedPackage()
- \internal
-
-*/
-
//
// Private
//
@@ -182,8 +170,8 @@ void UpdateFinder::Private::computeUpdates()
// 1. Downloading Update XML files from all the update sources
// 2. Matching updates with Package XML and figuring out available updates
- if (!q->isCompressedPackage())
- clear();
+
+ clear();
cancel = false;
// First do some quick sanity checks on the packages info
@@ -409,8 +397,7 @@ void UpdateFinder::Private::createUpdateObjects(const PackageSource &source,
delete updates.take(name);
// Create and register the update
- if (!q->isCompressedPackage() || value == Resolution::AddPackage)
- updates.insert(name, new Update(source, info));
+ updates.insert(name, new Update(source, info));
}
}
@@ -450,10 +437,6 @@ UpdateFinder::Private::Resolution UpdateFinder::Private::checkPriorityAndVersion
<< ", Source: " << QFileInfo(source.url.toLocalFile()).fileName() << "'";
return Resolution::RemoveExisting;
}
- if (q->isCompressedPackage() && match == 0 && source.priority == existingPackage->packageSource().priority) {
- //Same package with the same priority and version already exists
- return Resolution::RemoveExisting;
- }
return Resolution::KeepExisting; // otherwise keep existing
}
return Resolution::AddPackage;
@@ -468,7 +451,6 @@ UpdateFinder::Private::Resolution UpdateFinder::Private::checkPriorityAndVersion
*/
UpdateFinder::UpdateFinder()
: Task(QLatin1String("UpdateFinder"), Stoppable),
- m_compressedPackage(false),
d(new Private(this))
{
}
diff --git a/src/libs/kdtools/updatefinder.h b/src/libs/kdtools/updatefinder.h
index 47fa42c9a..7a3e4df1e 100644
--- a/src/libs/kdtools/updatefinder.h
+++ b/src/libs/kdtools/updatefinder.h
@@ -53,8 +53,7 @@ public:
void setLocalPackageHub(std::weak_ptr<LocalPackageHub> hub);
void setPackageSources(const QSet<QInstaller::PackageSource> &sources);
- void addCompressedPackage(bool add) { m_compressedPackage = add; }
- bool isCompressedPackage() { return m_compressedPackage; }
+
private:
void doRun();
bool doStop();
@@ -62,7 +61,6 @@ private:
bool doResume();
private:
- bool m_compressedPackage;
Private *d;
Q_PRIVATE_SLOT(d, void slotDownloadDone())
};