summaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/installer/loggingutils.cpp2
-rw-r--r--src/libs/installer/loggingutils.h2
-rw-r--r--src/libs/installer/packagemanagercore.cpp33
-rw-r--r--src/libs/installer/packagemanagercore.h10
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp18
-rw-r--r--src/libs/installer/packagemanagercore_p.h2
-rw-r--r--src/libs/installer/qinstallerglobal.h2
-rw-r--r--src/libs/kdtools/localpackagehub.cpp7
-rw-r--r--src/libs/kdtools/localpackagehub.h2
9 files changed, 43 insertions, 35 deletions
diff --git a/src/libs/installer/loggingutils.cpp b/src/libs/installer/loggingutils.cpp
index c2e707928..2c5d918d5 100644
--- a/src/libs/installer/loggingutils.cpp
+++ b/src/libs/installer/loggingutils.cpp
@@ -316,7 +316,7 @@ void LoggingHandler::printLocalPackageInformation(const QList<KDUpdater::LocalPa
depending on the current verbosity level. If a package is also present in \a installedPackages,
the installed version will be included in printed information.
*/
-void LoggingHandler::printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesHash &installedPackages) const
+void LoggingHandler::printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesMap &installedPackages) const
{
QString output;
QXmlStreamWriter stream(&output);
diff --git a/src/libs/installer/loggingutils.h b/src/libs/installer/loggingutils.h
index f0e76037c..f41a18663 100644
--- a/src/libs/installer/loggingutils.h
+++ b/src/libs/installer/loggingutils.h
@@ -66,7 +66,7 @@ public:
void printUpdateInformation(const QList<Component *> components) const;
void printLocalPackageInformation(const QList<KDUpdater::LocalPackage> &packages) const;
- void printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesHash &installedPackages) const;
+ void printPackageInformation(const PackagesList &matchedPackages, const LocalPackagesMap &installedPackages) const;
friend VerbosityLevel &operator++(VerbosityLevel &level, int);
friend VerbosityLevel &operator--(VerbosityLevel &level, int);
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 041c0fd31..1b1ca1eec 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -1484,7 +1484,7 @@ bool PackageManagerCore::fetchLocalPackagesTree()
return false;
}
- LocalPackagesHash installedPackages = d->localInstalledPackages();
+ LocalPackagesMap installedPackages = d->localInstalledPackages();
if (installedPackages.isEmpty()) {
if (status() != Failure)
d->setStatus(Failure, tr("No installed packages found."));
@@ -1564,7 +1564,7 @@ bool PackageManagerCore::fetchLocalPackagesTree()
/*!
Returns a list of local installed packages. The list can be empty.
*/
-LocalPackagesHash PackageManagerCore::localInstalledPackages()
+LocalPackagesMap PackageManagerCore::localInstalledPackages()
{
return d->localInstalledPackages();
}
@@ -1635,7 +1635,7 @@ PackagesList PackageManagerCore::remotePackages()
*/
bool PackageManagerCore::fetchCompressedPackagesTree()
{
- const LocalPackagesHash installedPackages = d->localInstalledPackages();
+ const LocalPackagesMap installedPackages = d->localInstalledPackages();
if (!isInstaller() && status() == Failure)
return false;
@@ -1671,7 +1671,7 @@ bool PackageManagerCore::fetchRemotePackagesTree()
return false;
}
- const LocalPackagesHash installedPackages = d->localInstalledPackages();
+ const LocalPackagesMap installedPackages = d->localInstalledPackages();
if (!isInstaller() && status() == Failure)
return false;
@@ -1687,11 +1687,10 @@ bool PackageManagerCore::fetchRemotePackagesTree()
const PackagesList &packages = d->remotePackages();
if (packages.isEmpty())
return false;
-
return fetchPackagesTree(packages, installedPackages);
}
-bool PackageManagerCore::fetchPackagesTree(const PackagesList &packages, const LocalPackagesHash installedPackages) {
+bool PackageManagerCore::fetchPackagesTree(const PackagesList &packages, const LocalPackagesMap installedPackages) {
bool success = false;
if (!isUpdater()) {
@@ -2427,7 +2426,7 @@ void PackageManagerCore::listAvailablePackages(const QString &regexp, const QHas
QRegularExpression re(regexp);
re.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
const PackagesList &packages = d->remotePackages();
- if (!fetchAllPackages(packages, LocalPackagesHash())) {
+ if (!fetchAllPackages(packages, LocalPackagesMap())) {
qCWarning(QInstaller::lcInstallerInstallLog)
<< "There was a problem with loading the package data.";
return;
@@ -2567,7 +2566,7 @@ bool PackageManagerCore::checkComponentsForInstallation(const QStringList &compo
void PackageManagerCore::listInstalledPackages(const QString &regexp)
{
setPackageViewer();
- LocalPackagesHash installedPackages = this->localInstalledPackages();
+ LocalPackagesMap installedPackages = this->localInstalledPackages();
if (!regexp.isEmpty()) {
qCDebug(QInstaller::lcInstallerInstallLog)
@@ -2808,7 +2807,7 @@ PackageManagerCore::Status PackageManagerCore::installSelectedComponentsSilently
setPackageManager();
//Check that packages are not already installed
- const LocalPackagesHash installedPackages = this->localInstalledPackages();
+ const LocalPackagesMap installedPackages = this->localInstalledPackages();
QStringList helperStrList;
helperStrList << components << installedPackages.keys();
helperStrList.removeDuplicates();
@@ -3992,7 +3991,7 @@ void PackageManagerCore::storeReplacedComponents(QHash<QString, Component *> &co
}
}
-bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const LocalPackagesHash &locals)
+bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const LocalPackagesMap &locals)
{
emit startAllComponentsReset();
@@ -4051,6 +4050,11 @@ bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const Loc
allTreeNameComponents = remoteTreeNameComponents;
foreach (auto &package, locals) {
+ if (package.virtualComp && package.autoDependencies.isEmpty()) {
+ if (!d->m_localVirtualComponents.contains(package.name))
+ d->m_localVirtualComponents.append(package.name);
+ }
+
QScopedPointer<QInstaller::Component> localComponent(new QInstaller::Component(this));
localComponent->loadDataFromPackage(package);
const QString name = localComponent->treeName();
@@ -4124,7 +4128,7 @@ bool PackageManagerCore::fetchAllPackages(const PackagesList &remotes, const Loc
return true;
}
-bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const LocalPackagesHash &locals)
+bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const LocalPackagesMap &locals)
{
emit startUpdaterComponentsReset();
@@ -4136,7 +4140,7 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const
data.installedPackages = &locals;
setFoundEssentialUpdate(false);
- LocalPackagesHash installedPackages = locals;
+ LocalPackagesMap installedPackages = locals;
QStringList replaceMes;
foreach (Package *const update, remotes) {
@@ -4206,6 +4210,11 @@ bool PackageManagerCore::fetchUpdaterPackages(const PackagesList &remotes, const
}
foreach (const QString &key, locals.keys()) {
+ LocalPackage package = locals.value(key);
+ if (package.virtualComp && package.autoDependencies.isEmpty()) {
+ if (!d->m_localVirtualComponents.contains(package.name))
+ d->m_localVirtualComponents.append(package.name);
+ }
// Keep a list of local components that should be replaced
// Remove from components list - we don't want to update the component
// as it is replaced by other component
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index bebfc191d..50cdac486 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -127,7 +127,7 @@ public:
bool directoryWritable(const QString &path) const;
bool fetchLocalPackagesTree();
- LocalPackagesHash localInstalledPackages();
+ LocalPackagesMap localInstalledPackages();
void networkSettingsChanged();
PackageManagerProxyFactory *proxyFactory() const;
@@ -411,15 +411,15 @@ private:
struct Data {
Package *package;
QHash<QString, Component*> *components;
- const LocalPackagesHash *installedPackages;
+ const LocalPackagesMap *installedPackages;
QHash<Component*, QStringList> replacementToExchangeables;
};
bool updateComponentData(struct Data &data, QInstaller::Component *component);
void storeReplacedComponents(QHash<QString, Component*> &components, const struct Data &data,
QMap<QString, QString> *const treeNameComponents = nullptr);
- bool fetchAllPackages(const PackagesList &remotePackages, const LocalPackagesHash &localPackages);
- bool fetchUpdaterPackages(const PackagesList &remotePackages, const LocalPackagesHash &localPackages);
+ bool fetchAllPackages(const PackagesList &remotePackages, const LocalPackagesMap &localPackages);
+ bool fetchUpdaterPackages(const PackagesList &remotePackages, const LocalPackagesMap &localPackages);
void createAutoTreeNames(QHash<QString, Component *> &components,
const QMap<QString, QString> &treeNameComponents);
@@ -430,7 +430,7 @@ private:
ComponentModel *componentModel(PackageManagerCore *core, const QString &objectName) const;
QList<Component *> componentsMarkedForInstallation() const;
- bool fetchPackagesTree(const PackagesList &packages, const LocalPackagesHash installedPackages);
+ bool fetchPackagesTree(const PackagesList &packages, const LocalPackagesMap installedPackages);
bool componentUninstallableFromCommandLine(const QString &componentName);
bool checkComponentsForInstallation(const QStringList &components, QString &errorMessage);
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index c532e2cbd..cfe2cfe09 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -2744,12 +2744,12 @@ PackagesList PackageManagerCorePrivate::remotePackages()
the application is running in installer mode or the local components file could not be parsed, the
hash is empty.
*/
-LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages()
+LocalPackagesMap PackageManagerCorePrivate::localInstalledPackages()
{
if (isInstaller())
- return LocalPackagesHash();
+ return LocalPackagesMap();
+
- LocalPackagesHash installedPackages;
if (m_localPackageHub->error() != LocalPackageHub::NoError) {
if (m_localPackageHub->fileName().isEmpty())
m_localPackageHub->setFileName(componentsXmlPath());
@@ -2766,17 +2766,7 @@ LocalPackagesHash PackageManagerCorePrivate::localInstalledPackages()
setStatus(PackageManagerCore::Failure, tr("Failure to read packages from %1.")
.arg(componentsXmlPath()));
}
-
- foreach (const LocalPackage &package, m_localPackageHub->packageInfos()) {
- if (statusCanceledOrFailed())
- break;
- installedPackages.insert(package.name, package);
- if (package.virtualComp && package.autoDependencies.isEmpty()) {
- if (!m_localVirtualComponents.contains(package.name))
- m_localVirtualComponents.append(package.name);
- }
- }
- return installedPackages;
+ return m_localPackageHub->localPackages();
}
bool PackageManagerCorePrivate::fetchMetaInformationFromRepositories(DownloadType type)
diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h
index 0699bce3d..1a15c6f6c 100644
--- a/src/libs/installer/packagemanagercore_p.h
+++ b/src/libs/installer/packagemanagercore_p.h
@@ -255,7 +255,7 @@ private:
bool adminRightsGained, bool deleteOperation);
PackagesList remotePackages();
- LocalPackagesHash localInstalledPackages();
+ LocalPackagesMap localInstalledPackages();
bool fetchMetaInformationFromRepositories(DownloadType type = DownloadType::All);
bool addUpdateResourcesFromRepositories(bool parseChecksum, bool compressedRepository = false);
void processFilesForDelayedDeletion();
diff --git a/src/libs/installer/qinstallerglobal.h b/src/libs/installer/qinstallerglobal.h
index 98a81f092..5bc87e21d 100644
--- a/src/libs/installer/qinstallerglobal.h
+++ b/src/libs/installer/qinstallerglobal.h
@@ -55,7 +55,7 @@ typedef QList<QInstaller::Operation*> OperationList;
typedef KDUpdater::Update Package;
typedef QList<QInstaller::Package*> PackagesList;
-typedef QHash<QString, KDUpdater::LocalPackage> LocalPackagesHash;
+typedef QMap<QString, KDUpdater::LocalPackage> LocalPackagesMap;
typedef QHash<QString, QStringList> AutoDependencyHash;
typedef QHash<QString, QStringList> DependencyHash;
diff --git a/src/libs/kdtools/localpackagehub.cpp b/src/libs/kdtools/localpackagehub.cpp
index 60a11f1a3..f63f6c974 100644
--- a/src/libs/kdtools/localpackagehub.cpp
+++ b/src/libs/kdtools/localpackagehub.cpp
@@ -124,6 +124,13 @@ bool LocalPackageHub::isValid() const
}
/*!
+ Returns a map of all local installed packages. Map key is the package name.
+*/
+QMap<QString, LocalPackage> LocalPackageHub::localPackages() const
+{
+ return d->m_packageInfoMap;
+}
+/*!
Returns a list of all local installed packages.
*/
QStringList LocalPackageHub::packageNames() const
diff --git a/src/libs/kdtools/localpackagehub.h b/src/libs/kdtools/localpackagehub.h
index 6b6744491..11ed200a5 100644
--- a/src/libs/kdtools/localpackagehub.h
+++ b/src/libs/kdtools/localpackagehub.h
@@ -77,6 +77,8 @@ public:
};
bool isValid() const;
+
+ QMap<QString, LocalPackage> localPackages() const;
QStringList packageNames() const;
Error error() const;