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(); +}
