Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kdbusaddons for openSUSE:Factory 
checked in at 2021-10-18 21:58:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdbusaddons (Old)
 and      /work/SRC/openSUSE:Factory/.kdbusaddons.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdbusaddons"

Mon Oct 18 21:58:31 2021 rev:95 rq:924426 version:5.87.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdbusaddons/kdbusaddons.changes  2021-09-16 
23:15:38.507858575 +0200
+++ /work/SRC/openSUSE:Factory/.kdbusaddons.new.1890/kdbusaddons.changes        
2021-10-18 22:00:11.922007046 +0200
@@ -1,0 +2,13 @@
+Sun Oct  3 20:33:40 UTC 2021 - Christophe Giboudeaux <[email protected]>
+
+- Update to 5.87.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/5/5.87.0
+- Changes since 5.86.0:
+  * Add Gitlab CI configuration
+  * Introduce UpdateLaunchEnvJob
+  * Correct to make sure we use the matching ECM version
+  * Add CI configuration file
+
+-------------------------------------------------------------------

Old:
----
  kdbusaddons-5.86.0.tar.xz
  kdbusaddons-5.86.0.tar.xz.sig

New:
----
  kdbusaddons-5.87.0.tar.xz
  kdbusaddons-5.87.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kdbusaddons.spec ++++++
--- /var/tmp/diff_new_pack.ks1KmS/_old  2021-10-18 22:00:12.438007420 +0200
+++ /var/tmp/diff_new_pack.ks1KmS/_new  2021-10-18 22:00:12.442007422 +0200
@@ -17,14 +17,14 @@
 
 
 %define lname   libKF5DBusAddons5
-%define _tar_path 5.86
+%define _tar_path 5.87
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
 %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | 
awk -F. '{print $1"."$2}')}
 %bcond_without lang
 Name:           kdbusaddons
-Version:        5.86.0
+Version:        5.87.0
 Release:        0
 Summary:        Convenience classes for QtDBus
 License:        LGPL-2.1-or-later


++++++ kdbusaddons-5.86.0.tar.xz -> kdbusaddons-5.87.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdbusaddons-5.86.0/.gitlab-ci.yml 
new/kdbusaddons-5.87.0/.gitlab-ci.yml
--- old/kdbusaddons-5.86.0/.gitlab-ci.yml       1970-01-01 01:00:00.000000000 
+0100
+++ new/kdbusaddons-5.87.0/.gitlab-ci.yml       2021-10-02 16:24:53.000000000 
+0200
@@ -0,0 +1,5 @@
+# SPDX-FileCopyrightText: 2020 Volker Krause <[email protected]>
+# SPDX-License-Identifier: CC0-1.0
+
+include:
+  - 
https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdbusaddons-5.86.0/.kde-ci.yml 
new/kdbusaddons-5.87.0/.kde-ci.yml
--- old/kdbusaddons-5.86.0/.kde-ci.yml  1970-01-01 01:00:00.000000000 +0100
+++ new/kdbusaddons-5.87.0/.kde-ci.yml  2021-10-02 16:24:53.000000000 +0200
@@ -0,0 +1,7 @@
+Dependencies:
+- 'on': ['Linux', 'FreeBSD', 'Windows', 'macOS']
+  'require':
+    'frameworks/extra-cmake-modules': '@same'
+
+Options:
+  test-before-installing: True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdbusaddons-5.86.0/CMakeLists.txt 
new/kdbusaddons-5.87.0/CMakeLists.txt
--- old/kdbusaddons-5.86.0/CMakeLists.txt       2021-09-04 18:58:12.000000000 
+0200
+++ new/kdbusaddons-5.87.0/CMakeLists.txt       2021-10-02 16:24:53.000000000 
+0200
@@ -1,10 +1,10 @@
 cmake_minimum_required(VERSION 3.16)
 
-set(KF_VERSION "5.86.0") # handled by release scripts
+set(KF_VERSION "5.87.0") # handled by release scripts
 project(KDBusAddons VERSION ${KF_VERSION})
 
 include(FeatureSummary)
-find_package(ECM 5.86.0  NO_MODULE)
+find_package(ECM 5.87.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL "https://commits.kde.org/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdbusaddons-5.86.0/po/zh_CN/kdbusaddons5_qt.po 
new/kdbusaddons-5.87.0/po/zh_CN/kdbusaddons5_qt.po
--- old/kdbusaddons-5.86.0/po/zh_CN/kdbusaddons5_qt.po  2021-09-04 
18:58:12.000000000 +0200
+++ new/kdbusaddons-5.87.0/po/zh_CN/kdbusaddons5_qt.po  2021-10-02 
16:24:53.000000000 +0200
@@ -2,7 +2,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: kdeorg\n"
-"PO-Revision-Date: 2021-08-30 11:43\n"
+"PO-Revision-Date: 2021-09-27 13:07\n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdbusaddons-5.86.0/src/CMakeLists.txt 
new/kdbusaddons-5.87.0/src/CMakeLists.txt
--- old/kdbusaddons-5.86.0/src/CMakeLists.txt   2021-09-04 18:58:12.000000000 
+0200
+++ new/kdbusaddons-5.87.0/src/CMakeLists.txt   2021-10-02 16:24:53.000000000 
+0200
@@ -11,6 +11,7 @@
     kdbusservice.cpp
     kdedmodule.cpp
     kdeinitinterface.cpp
+    updatelaunchenvironmentjob.cpp
 )
 ecm_qt_declare_logging_category(KF5DBusAddons
     HEADER kdbusaddons_debug.h
@@ -69,6 +70,7 @@
   KDBusService
   KDEDModule
   KDEInitInterface
+  UpdateLaunchEnvironmentJob
   REQUIRED_HEADERS KDBusAddons_HEADERS
 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdbusaddons-5.86.0/src/updatelaunchenvironmentjob.cpp 
new/kdbusaddons-5.87.0/src/updatelaunchenvironmentjob.cpp
--- old/kdbusaddons-5.86.0/src/updatelaunchenvironmentjob.cpp   1970-01-01 
01:00:00.000000000 +0100
+++ new/kdbusaddons-5.87.0/src/updatelaunchenvironmentjob.cpp   2021-10-02 
16:24:53.000000000 +0200
@@ -0,0 +1,168 @@
+/*
+    SPDX-FileCopyrightText: 2020 Kai Uwe Broulik <[email protected]>
+    SPDX-FileCopyrightText: 2021 David Edmundson <[email protected]>
+
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "updatelaunchenvironmentjob.h"
+
+#include <QDBusArgument>
+#include <QDBusConnection>
+#include <QDBusMetaType>
+#include <QDBusPendingReply>
+
+#include <QTimer>
+
+#include "kdbusaddons_debug.h"
+
+class Q_DECL_HIDDEN UpdateLaunchEnvironmentJob::Private
+{
+public:
+    explicit Private(UpdateLaunchEnvironmentJob *q);
+    void monitorReply(const QDBusPendingReply<> &reply);
+
+    static bool isPosixName(const QString &name);
+    static bool isSystemdApprovedValue(const QString &value);
+
+    UpdateLaunchEnvironmentJob *q;
+    QProcessEnvironment environment;
+    int pendingReplies = 0;
+};
+
+UpdateLaunchEnvironmentJob::Private::Private(UpdateLaunchEnvironmentJob *q)
+    : q(q)
+{
+}
+
+void UpdateLaunchEnvironmentJob::Private::monitorReply(const 
QDBusPendingReply<> &reply)
+{
+    ++pendingReplies;
+
+    auto *watcher = new QDBusPendingCallWatcher(reply, q);
+    QObject::connect(watcher, &QDBusPendingCallWatcher::finished, q, 
[this](QDBusPendingCallWatcher *watcher) {
+        watcher->deleteLater();
+        --pendingReplies;
+
+        if (pendingReplies == 0) {
+            Q_EMIT q->finished();
+            q->deleteLater();
+        }
+    });
+}
+
+UpdateLaunchEnvironmentJob::UpdateLaunchEnvironmentJob(const 
QProcessEnvironment &environment)
+    : d(new Private(this))
+{
+    d->environment = environment;
+    QTimer::singleShot(0, this, &UpdateLaunchEnvironmentJob::start);
+}
+
+UpdateLaunchEnvironmentJob::~UpdateLaunchEnvironmentJob()
+{
+    delete d;
+}
+
+void UpdateLaunchEnvironmentJob::start()
+{
+    qDBusRegisterMetaType<QMap<QString, QString>>();
+    QMap<QString, QString> dbusActivationEnv;
+    QStringList systemdUpdates;
+
+    for (const auto &varName : d->environment.keys()) {
+        if (!Private::isPosixName(varName)) {
+            qCWarning(KDBUSADDONS_LOG) << "Skipping syncing of environment 
variable " << varName << "as name contains unsupported characters";
+            continue;
+        }
+        const QString value = d->environment.value(varName);
+
+        // KLauncher; remove this in KF6 (by then KInit will be gone)
+        QDBusMessage klauncherMsg = 
QDBusMessage::createMethodCall(QStringLiteral("org.kde.klauncher5"),
+                                                                   
QStringLiteral("/KLauncher"),
+                                                                   
QStringLiteral("org.kde.KLauncher"),
+                                                                   
QStringLiteral("setLaunchEnv"));
+        klauncherMsg.setArguments({QVariant::fromValue(varName), 
QVariant::fromValue(value)});
+        auto klauncherReply = 
QDBusConnection::sessionBus().asyncCall(klauncherMsg);
+        d->monitorReply(klauncherReply);
+
+        // plasma-session
+        QDBusMessage plasmaSessionMsg = 
QDBusMessage::createMethodCall(QStringLiteral("org.kde.Startup"),
+                                                                       
QStringLiteral("/Startup"),
+                                                                       
QStringLiteral("org.kde.Startup"),
+                                                                       
QStringLiteral("updateLaunchEnv"));
+        plasmaSessionMsg.setArguments({QVariant::fromValue(varName), 
QVariant::fromValue(value)});
+        auto plasmaSessionReply = 
QDBusConnection::sessionBus().asyncCall(plasmaSessionMsg);
+        d->monitorReply(plasmaSessionReply);
+
+        // DBus-activation environment
+        dbusActivationEnv.insert(varName, value);
+
+        // _user_ systemd env
+        // Systemd has stricter parsing of valid environment variables
+        // https://github.com/systemd/systemd/issues/16704
+        // validate here
+        if (!Private::isSystemdApprovedValue(value)) {
+            qCWarning(KDBUSADDONS_LOG) << "Skipping syncing of environment 
variable " << varName << "as value contains unsupported characters";
+            continue;
+        }
+        const QString updateString = varName + QStringLiteral("=") + value;
+        systemdUpdates.append(updateString);
+    }
+
+    // DBus-activation environment
+    QDBusMessage dbusActivationMsg = 
QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DBus"),
+                                                                    
QStringLiteral("/org/freedesktop/DBus"),
+                                                                    
QStringLiteral("org.freedesktop.DBus"),
+                                                                    
QStringLiteral("UpdateActivationEnvironment"));
+    dbusActivationMsg.setArguments({QVariant::fromValue(dbusActivationEnv)});
+
+    auto dbusActivationReply = 
QDBusConnection::sessionBus().asyncCall(dbusActivationMsg);
+    d->monitorReply(dbusActivationReply);
+
+    // _user_ systemd env
+    QDBusMessage systemdActivationMsg = 
QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.systemd1"),
+                                                                       
QStringLiteral("/org/freedesktop/systemd1"),
+                                                                       
QStringLiteral("org.freedesktop.systemd1.Manager"),
+                                                                       
QStringLiteral("SetEnvironment"));
+    systemdActivationMsg.setArguments({systemdUpdates});
+
+    auto systemdActivationReply = 
QDBusConnection::sessionBus().asyncCall(systemdActivationMsg);
+    d->monitorReply(systemdActivationReply);
+}
+
+bool UpdateLaunchEnvironmentJob::Private::isPosixName(const QString &name)
+{
+    // Posix says characters like % should be 'tolerated', but it gives issues 
in practice.
+    // https://bugzilla.redhat.com/show_bug.cgi?id=1754395
+    // https://bugzilla.redhat.com/show_bug.cgi?id=1879216
+    // Ensure systemd compat by only allowing alphanumerics and _ in names.
+    bool first = true;
+    for (const QChar c : name) {
+        if (first && !c.isLetter() && c != QLatin1Char('_')) {
+            return false;
+        } else if (first) {
+            first = false;
+        } else if (!c.isLetterOrNumber() && c != QLatin1Char('_')) {
+            return false;
+        }
+    }
+    return !first;
+}
+
+bool UpdateLaunchEnvironmentJob::Private::isSystemdApprovedValue(const QString 
&value)
+{
+    // systemd code checks that a value contains no control characters except 
\n \t
+    // effectively copied from systemd's string_has_cc
+    for (const char &it : value.toLatin1()) {
+        if (it == QLatin1Char('\n') || it == QLatin1Char('\t')) {
+            continue;
+        }
+        if (it > 0 && it < ' ') {
+            return false;
+        }
+        if (it == 127) {
+            return false;
+        }
+    }
+    return true;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdbusaddons-5.86.0/src/updatelaunchenvironmentjob.h 
new/kdbusaddons-5.87.0/src/updatelaunchenvironmentjob.h
--- old/kdbusaddons-5.86.0/src/updatelaunchenvironmentjob.h     1970-01-01 
01:00:00.000000000 +0100
+++ new/kdbusaddons-5.87.0/src/updatelaunchenvironmentjob.h     2021-10-02 
16:24:53.000000000 +0200
@@ -0,0 +1,48 @@
+/*
+    SPDX-FileCopyrightText: 2020 Kai Uwe Broulik <[email protected]>
+    SPDX-FileCopyrightText: 2021 David Edmundson <[email protected]>
+
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <kdbusaddons_export.h>
+
+#include <QProcessEnvironment>
+
+class QString;
+
+/**
+ * Job for updating the launch environment.
+ *
+ * This job adds or updates an environment variable in process environment 
that will be used
+ * when a process is launched:
+ * This includes:
+ *  - DBus activation
+ *  - Systemd units
+ *  - Plasma-session
+ *  - KInit (deprecated)
+ *
+ * Environment variables are sanitized before uploading.
+ *
+ * This object deletes itself after completion, similar to KJobs
+ *
+ * @since 5.84
+ */
+class KDBUSADDONS_EXPORT UpdateLaunchEnvironmentJob : public QObject
+{
+    Q_OBJECT
+
+public:
+    explicit UpdateLaunchEnvironmentJob(const QProcessEnvironment 
&environment);
+    ~UpdateLaunchEnvironmentJob() override;
+
+Q_SIGNALS:
+    void finished();
+
+private:
+    void start();
+    class Private;
+    Private *const d;
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdbusaddons-5.86.0/tests/CMakeLists.txt 
new/kdbusaddons-5.87.0/tests/CMakeLists.txt
--- old/kdbusaddons-5.86.0/tests/CMakeLists.txt 2021-09-04 18:58:12.000000000 
+0200
+++ new/kdbusaddons-5.87.0/tests/CMakeLists.txt 2021-10-02 16:24:53.000000000 
+0200
@@ -12,5 +12,6 @@
 
 kdbusaddons_tests(
    dbuscalltest
+   syncdbusenvtest
 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdbusaddons-5.86.0/tests/syncdbusenvtest.cpp 
new/kdbusaddons-5.87.0/tests/syncdbusenvtest.cpp
--- old/kdbusaddons-5.86.0/tests/syncdbusenvtest.cpp    1970-01-01 
01:00:00.000000000 +0100
+++ new/kdbusaddons-5.87.0/tests/syncdbusenvtest.cpp    2021-10-02 
16:24:53.000000000 +0200
@@ -0,0 +1,21 @@
+/*
+    SPDX-FileCopyrightText: 2019 David Edmundson <[email protected]>
+
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include <QCoreApplication>
+#include <updatelaunchenvironmentjob.h>
+
+// This test syncs the current environment of the spawned process to 
systemd/whatever
+// akin to dbus-update-activation-environment
+// it can then be compared with "systemd-run --user -P env" or watched with 
dbus-monitor
+
+int main(int argc, char **argv)
+{
+    QCoreApplication app(argc, argv);
+    QEventLoop e;
+    auto job = new 
UpdateLaunchEnvironmentJob(QProcessEnvironment::systemEnvironment());
+    QObject::connect(job, &UpdateLaunchEnvironmentJob::finished, &e, 
&QEventLoop::quit);
+    return e.exec();
+}

Reply via email to