[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [discover/Plasma/5.12] libdiscover/backends/PackageKitBackend: Have PackageKit only execute files in
From: Aleix Pol <null () kde ! org>
Date: 2018-01-25 13:10:07
Message-ID: E1eehI7-00067y-OI () code ! kde ! org
[Download RAW message or body]
Git commit 59a93daa2fbe7099788729a02c6ea44669e4844d by Aleix Pol.
Committed on 25/01/2018 at 13:05.
Pushed by apol into branch 'Plasma/5.12'.
Have PackageKit only execute files installed by the package
BUG: 389036
M +18 -7 libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp
https://commits.kde.org/discover/59a93daa2fbe7099788729a02c6ea44669e4844d
diff --git a/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp \
b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp index \
91211b44..14270235 100644
--- a/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp
+++ b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp
@@ -31,6 +31,8 @@
#include <QStandardPaths>
#include <QDebug>
#include "config-paths.h"
+#include <PackageKit/Daemon>
+#include <utils.h>
AppPackageKitResource::AppPackageKitResource(const AppStream::Component& data, const \
QString &packageName, PackageKitBackend* parent) : PackageKitResource(packageName, \
QString(), parent) @@ -182,12 +184,21 @@ void AppPackageKitResource::fetchChangelog()
void AppPackageKitResource::invokeApplication() const
{
- const QStringList exes = \
m_appdata.provided(AppStream::Provided::KindBinary).items();
- if (exes.isEmpty()) {
- const auto servicePath = \
QStandardPaths::locate(QStandardPaths::ApplicationsLocation, \
m_appdata.id());
- QProcess::startDetached(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 \
"/discover/runservice"), {servicePath});
- } else {
- QProcess::startDetached(exes.constFirst());
- }
+ auto trans = PackageKit::Daemon::getFiles({installedPackageId()});
+ connect(trans, &PackageKit::Transaction::files, this, [this](const QString \
&/*packageID*/, const QStringList &filenames) { + const auto allServices = \
QStandardPaths::locateAll(QStandardPaths::ApplicationsLocation, m_appdata.id()); + \
if (!allServices.isEmpty()) { + const auto packageServices = \
kFilter<QStringList>(allServices, [filenames](const QString &file) { return \
filenames.contains(file); }); + \
QProcess::startDetached(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 \
"/discover/runservice"), {packageServices}); + } else {
+ const QStringList exes = \
m_appdata.provided(AppStream::Provided::KindBinary).items(); + const auto \
packageExecutables = kFilter<QStringList>(allServices, [filenames](const QString \
&exe) { return filenames.contains(QLatin1Char('/') + exe); }); + if \
(packageExecutables.isEmpty()) { + qWarning() << "Could not find any \
executables" << exes << filenames; + return;
+ }
+ QProcess::startDetached(exes.constFirst());
+ }
+ });
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic