Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package PackageKit-Qt for openSUSE:Factory checked in at 2023-03-02 23:03:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/PackageKit-Qt (Old) and /work/SRC/openSUSE:Factory/.PackageKit-Qt.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "PackageKit-Qt" Thu Mar 2 23:03:02 2023 rev:19 rq:1068443 version:1.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/PackageKit-Qt/PackageKit-Qt.changes 2022-07-07 12:56:42.451264608 +0200 +++ /work/SRC/openSUSE:Factory/.PackageKit-Qt.new.31432/PackageKit-Qt.changes 2023-03-02 23:03:22.623419896 +0100 @@ -1,0 +2,15 @@ +Wed Mar 1 08:09:00 UTC 2023 - Christophe Marin <christo...@krop.fr> + +- Update to 1.1.0: + * Make PackageKit-Qt depend on Qt 5.10 + * Add build system support for Qt6 + * Add support for plural signals + * Prefer invoking methods by pointer rather than by name + * Emit error if transaction is already done before watcher setup + * offline: Address issues with dbus connections + * Add the missing pkgconfig file for Qt 6 builds + * Replace 404 Link by working one in README +- Drop patch, merged upstream: + * 0001-Add-build-system-support-for-Qt6.patch + +------------------------------------------------------------------- Old: ---- 0001-Add-build-system-support-for-Qt6.patch PackageKit-Qt-1.0.2.tar.gz New: ---- PackageKit-Qt-1.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ PackageKit-Qt.spec ++++++ --- /var/tmp/diff_new_pack.am3ytG/_old 2023-03-02 23:03:23.091426586 +0100 +++ /var/tmp/diff_new_pack.am3ytG/_new 2023-03-02 23:03:23.095426643 +0100 @@ -33,7 +33,7 @@ %endif %define major 1 Name: PackageKit%{?pkg_suffix} -Version: 1.0.2 +Version: 1.1.0 Release: 0 Summary: Simple software installation management software License: LGPL-2.1-or-later @@ -42,8 +42,6 @@ Source: https://github.com/hughsie/PackageKit-Qt/archive/v%{version}.tar.gz#/PackageKit-Qt-%{version}.tar.gz # PATCH-FIX-UPSTREAM boo#1103678 Patch0: 0001-Fix-PackageKit-not-emitting-network-state-changed-signal.patch -# PATCH-FIX-UPSTREAM -- Qt6 support -Patch1: 0001-Add-build-system-support-for-Qt6.patch BuildRequires: PackageKit-devel >= %{version} BuildRequires: cmake BuildRequires: pkgconfig @@ -116,8 +114,7 @@ %qt6_install %endif -%post -n lib%{pkqt}-%{major} -p /sbin/ldconfig -%postun -n lib%{pkqt}-%{major} -p /sbin/ldconfig +%ldconfig_scriptlets -n lib%{pkqt}-%{major} %files -n lib%{pkqt}-%{major} %license COPYING ++++++ PackageKit-Qt-1.0.2.tar.gz -> PackageKit-Qt-1.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/.github/workflows/main.yml new/PackageKit-Qt-1.1.0/.github/workflows/main.yml --- old/PackageKit-Qt-1.0.2/.github/workflows/main.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/.github/workflows/main.yml 2022-12-01 20:10:34.000000000 +0100 @@ -0,0 +1,22 @@ +name: Build and Test + +on: [push, pull_request] + +jobs: + build_and_test: + runs-on: ubuntu-latest + + strategy: + matrix: + distro: + - fedora + - debian + fail-fast: false + + steps: + - uses: actions/checkout@v2 + - run: docker build -t packagekitqt-${{ matrix.distro }} -f tests/ci/Dockerfile-${{ matrix.distro }} . + - run: docker run -t -v `pwd`:/build packagekitqt-${{ matrix.distro }} ./tests/ci/build_and_test.sh + if: ${{ matrix.distro == 'fedora' }} + - run: docker run -t -v `pwd`:/build packagekitqt-${{ matrix.distro }} ./tests/ci/build_and_test.sh + if: ${{ matrix.distro == 'debian' }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/CMakeLists.txt new/PackageKit-Qt-1.1.0/CMakeLists.txt --- old/PackageKit-Qt-1.0.2/CMakeLists.txt 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/CMakeLists.txt 2022-12-01 20:10:34.000000000 +0100 @@ -8,7 +8,7 @@ cmake_policy(SET CMP0063 NEW) endif() -project(packagekit-qt VERSION 1.0.2) +project(packagekit-qt VERSION 1.0.3) # Used to set installation paths set(CMAKE_AUTOMOC ON) @@ -19,6 +19,8 @@ set(QPACKAGEKIT_API_LEVEL "1") +find_package(QT NAMES Qt6 Qt5 NO_MODULE REQUIRED COMPONENTS Core DBus) + add_definitions( -DQT_NO_KEYWORDS -DQT_NO_CAST_TO_ASCII @@ -53,7 +55,7 @@ set (GETTEXT_PACKAGE "packagekit") set (VERSION "${QPACKAGEKIT_VERSION}") set (LOCALSTATEDIR "/var") -set (CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/packagekitqt5/") +set (CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/packagekitqt${QT_VERSION_MAJOR}/") add_definitions("-DLOCALSTATEDIR=\"${LOCALSTATEDIR}\"") set (CMAKE_CXX_STANDARD 11) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/NEWS new/PackageKit-Qt-1.1.0/NEWS --- old/PackageKit-Qt-1.0.2/NEWS 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/NEWS 2022-12-01 20:10:34.000000000 +0100 @@ -1,3 +1,22 @@ +Version 1.1.0 +~~~~~~~~~~~~~ +Released: 2022-12-01 + +Notes: + - Make PackageKit-Qt depend on Qt 5.10 (Aleix Pol) + +Features: + - Add build system support for Qt6 (Nicolas Fella) + - Add support for plural signals (Aleix Pol) + - Add initial GitHub Actions CI (Neal Gompa) + +Bugfixes: + - Prefer invoking methods by pointer rather than by name (Aleix Pol) + - Emit error if transaction is already done before watcher setup (#28) (Aleix Pol) + - offline: Address issues with dbus connections (Aleix Pol) + - Add the missing pkgconfig file for Qt 6 builds (Christophe Giboudeaux) + - Replace 404 Link by working one in README (Max Buchholz) + Version 1.0.2 ~~~~~~~~~~~~~ Released: 2020-02-20 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/README.md new/PackageKit-Qt-1.1.0/README.md --- old/PackageKit-Qt-1.0.2/README.md 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/README.md 2022-12-01 20:10:34.000000000 +0100 @@ -5,4 +5,4 @@ PackageKit is a DBUS abstraction layer that allows the session user to manage packages in a secure way using a cross-distro, cross-architecture API. -For more information, please see http://www.packagekit.org +For more information, please see https://www.freedesktop.org/software/PackageKit/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/RELEASE new/PackageKit-Qt-1.1.0/RELEASE --- old/PackageKit-Qt-1.0.2/RELEASE 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/RELEASE 2022-12-01 20:10:34.000000000 +0100 @@ -2,10 +2,10 @@ 1. Write NEWS entries for PackageKit-Qt in the same format as usual. -git shortlog v1.0.1.. | grep -i -v trivial | grep -v Merge > NEWS.new +git shortlog v1.0.2.. | grep -i -v trivial | grep -v Merge > NEWS.new -------------------------------------------------------------------------------- -Version 1.0.2 +Version 1.0.3 ~~~~~~~~~~~~~ Released: 2020-xx-xx @@ -20,13 +20,13 @@ 3. Commit changes in PackageKit-Qt git: -git commit -a -m "Release version 1.0.2" -git tag -s -f -m "Release 1.0.2" v1.0.2 +git commit -a -m "Release version 1.0.3" +git tag -s -f -m "Release 1.0.3" v1.0.3 <gpg password> git push --tags git push -4. run './release.sh --version=1.0.2 --git-tag=v1.0.2 --sign' +4. run './release.sh --version=1.0.3 --git-tag=v1.0.3 --sign' 5. Upload tarball to: @@ -42,7 +42,7 @@ 8. Send an email to package...@lists.freedesktop.org ================================================= -PackageKit-Qt 1.0.2 released! +PackageKit-Qt 1.0.3 released! Tarballs available here: http://www.packagekit.org/releases/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/CMakeLists.txt new/PackageKit-Qt-1.1.0/src/CMakeLists.txt --- old/PackageKit-Qt-1.0.2/src/CMakeLists.txt 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/CMakeLists.txt 2022-12-01 20:10:34.000000000 +0100 @@ -1,6 +1,6 @@ # CMakeLists for PackageKit-Qt library -find_package(Qt5 5.6 REQUIRED COMPONENTS Core DBus) +find_package(Qt${QT_VERSION_MAJOR} 5.10 REQUIRED COMPONENTS Core DBus) set(packagekitqt_HEADERS Daemon @@ -40,25 +40,30 @@ set_source_files_properties(${PK_INTERFACE_XML} PROPERTIES NO_NAMESPACE true) set_source_files_properties(${PK_TRANSACTION_INTERFACE_XML} PROPERTIES NO_NAMESPACE true) +if(${QT_VERSION_MAJOR} EQUAL 6) +qt6_add_dbus_interface(packagekitqt_SRC ${PK_INTERFACE_XML} daemonproxy) +qt6_add_dbus_interface(packagekitqt_SRC ${PK_TRANSACTION_INTERFACE_XML} transactionproxy) +else() qt5_add_dbus_interface(packagekitqt_SRC ${PK_INTERFACE_XML} daemonproxy) qt5_add_dbus_interface(packagekitqt_SRC ${PK_TRANSACTION_INTERFACE_XML} transactionproxy) +endif() -add_library(packagekitqt5 ${packagekitqt_SRC} ${packagekitqt_HEADERS} ${packagekitqt_HEADERS_PRIVATE}) -set_target_properties(packagekitqt5 PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${QPACKAGEKIT_API_LEVEL}) +add_library(packagekitqt${QT_VERSION_MAJOR} ${packagekitqt_SRC} ${packagekitqt_HEADERS} ${packagekitqt_HEADERS_PRIVATE}) +set_target_properties(packagekitqt${QT_VERSION_MAJOR} PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${QPACKAGEKIT_API_LEVEL}) -target_link_libraries(packagekitqt5 PUBLIC Qt5::DBus) +target_link_libraries(packagekitqt${QT_VERSION_MAJOR} PUBLIC Qt${QT_VERSION_MAJOR}::DBus) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packagekitqt5.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt5.pc +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packagekitqt${QT_VERSION_MAJOR}.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt${QT_VERSION_MAJOR}.pc @ONLY ) -target_include_directories(packagekitqt5 INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/packagekitqt5/PackageKit/;${CMAKE_INSTALL_INCLUDEDIR}/packagekitqt5>") -install(TARGETS packagekitqt5 EXPORT PackageKitQtTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt5.pc +target_include_directories(packagekitqt${QT_VERSION_MAJOR} INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/packagekitqt${QT_VERSION_MAJOR}/PackageKit/;${CMAKE_INSTALL_INCLUDEDIR}/packagekitqt${QT_VERSION_MAJOR}>") +install(TARGETS packagekitqt${QT_VERSION_MAJOR} EXPORT PackageKitQtTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt${QT_VERSION_MAJOR}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) install(FILES ${packagekitqt_HEADERS} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/packagekitqt5/PackageKit/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/packagekitqt${QT_VERSION_MAJOR}/PackageKit/ ) add_subdirectory(modules) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/daemon.cpp new/PackageKit-Qt-1.1.0/src/daemon.cpp --- old/PackageKit-Qt-1.0.2/src/daemon.cpp 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/daemon.cpp 2022-12-01 20:10:34.000000000 +0100 @@ -29,6 +29,69 @@ Q_LOGGING_CATEGORY(PACKAGEKITQT_DAEMON, "packagekitqt.daemon") Q_LOGGING_CATEGORY(PACKAGEKITQT_OFFLINE, "packagekitqt.offline") +Q_DECLARE_METATYPE(PackageKit::PkPackage); +Q_DECLARE_METATYPE(QList<PackageKit::PkPackage>); +Q_DECLARE_METATYPE(PackageKit::PkDetail); +Q_DECLARE_METATYPE(QList<PackageKit::PkDetail>); + +const QDBusArgument &operator<<(QDBusArgument &argument, const PackageKit::PkPackage &pkg) +{ + argument.beginStructure(); + argument << pkg.info; + argument << pkg.pid; + argument << pkg.summary; + argument.endStructure(); + return argument; +} + +const QDBusArgument &operator>>(const QDBusArgument &argument, PackageKit::PkPackage &pkg) +{ + argument.beginStructure(); + argument >> pkg.info; + argument >> pkg.pid; + argument >> pkg.summary; + argument.endStructure(); + return argument; +} + +const QDBusArgument &operator>>(const QDBusArgument &argument, PackageKit::PkDetail &detail) +{ + argument.beginStructure(); + argument >> detail.package_id; + argument >> detail.updates; + argument >> detail.obsoletes; + argument >> detail.vendor_urls; + argument >> detail.bugzilla_urls; + argument >> detail.cve_urls; + argument >> detail.restart; + argument >> detail.update_text; + argument >> detail.changelog; + argument >> detail.state; + argument >> detail.issued; + argument >> detail.updated; + argument.endStructure(); + return argument; +} + +const QDBusArgument &operator<<(QDBusArgument &argument, const PackageKit::PkDetail &detail) +{ + argument.beginStructure(); + argument << detail.package_id; + argument << detail.updates; + argument << detail.obsoletes; + argument << detail.vendor_urls; + argument << detail.bugzilla_urls; + argument << detail.cve_urls; + argument << detail.restart; + argument << detail.update_text; + argument << detail.changelog; + argument << detail.state; + argument << detail.issued; + argument << detail.updated; + argument.endStructure(); + return argument; +} + using namespace PackageKit; Daemon* Daemon::m_global = nullptr; @@ -58,6 +121,11 @@ QLatin1String("PropertiesChanged"), this, SLOT(propertiesChanged(QString,QVariantMap,QStringList))); + + qDBusRegisterMetaType<PackageKit::PkPackage>(); + qDBusRegisterMetaType<QList<PackageKit::PkPackage>>(); + qDBusRegisterMetaType<PackageKit::PkDetail>(); + qDBusRegisterMetaType<QList<PackageKit::PkDetail>>(); } void DaemonPrivate::setupSignal(const QMetaMethod &signal) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/daemonprivate.cpp new/PackageKit-Qt-1.1.0/src/daemonprivate.cpp --- old/PackageKit-Qt-1.0.2/src/daemonprivate.cpp 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/daemonprivate.cpp 2022-12-01 20:10:34.000000000 +0100 @@ -92,7 +92,7 @@ message << PK_OFFLINE_INTERFACE; QDBusConnection::systemBus().callWithCallback(message, offline, - SLOT(updateProperties(QVariantMap))); + SLOT(initializeProperties(QVariantMap))); } void DaemonPrivate::propertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProperties) @@ -102,7 +102,7 @@ if (interface == PK_NAME) { updateProperties(properties); } else if (interface == PK_OFFLINE_INTERFACE) { - offline->d_ptr->updateProperties(properties); + offline->d_ptr->updateProperties(interface, properties, invalidatedProperties); } else { qCWarning(PACKAGEKITQT_DAEMON) << "Unknown PackageKit interface:" << interface; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/modules/CMakeLists.txt new/PackageKit-Qt-1.1.0/src/modules/CMakeLists.txt --- old/PackageKit-Qt-1.0.2/src/modules/CMakeLists.txt 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/modules/CMakeLists.txt 2022-12-01 20:10:34.000000000 +0100 @@ -2,13 +2,13 @@ configure_package_config_file( ${CMAKE_CURRENT_SOURCE_DIR}/packagekit-qt-config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt5-config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/packagekitqt5/ + ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt${QT_VERSION_MAJOR}-config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/packagekitqt${QT_VERSION_MAJOR}/ ) -write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/packagekitqt5-config-version.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) +write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/packagekitqt${QT_VERSION_MAJOR}-config-version.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt5-config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt5-config-version.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/packagekitqt5/ +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt${QT_VERSION_MAJOR}-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/packagekitqt${QT_VERSION_MAJOR}-config-version.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/packagekitqt${QT_VERSION_MAJOR}/ ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/modules/packagekit-qt-config.cmake.in new/PackageKit-Qt-1.1.0/src/modules/packagekit-qt-config.cmake.in --- old/PackageKit-Qt-1.0.2/src/modules/packagekit-qt-config.cmake.in 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/modules/packagekit-qt-config.cmake.in 2022-12-01 20:10:34.000000000 +0100 @@ -1,7 +1,7 @@ @PACKAGE_INIT@ -check_required_components(Qt5DBus) +check_required_components(Qt@QT_VERSION_MAJOR@DBus) -SET(PackageKitQt5_LIBRARIES "PK::packagekitqt5") +SET(PackageKitQt@QT_VERSION_MAJOR@_LIBRARIES "PK::packagekitqt@QT_VERSION_MAJOR@") include("${CMAKE_CURRENT_LIST_DIR}/PackageKitQtTargets.cmake") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/offline.cpp new/PackageKit-Qt-1.1.0/src/offline.cpp --- old/PackageKit-Qt-1.0.2/src/offline.cpp 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/offline.cpp 2022-12-01 20:10:34.000000000 +0100 @@ -31,7 +31,7 @@ DBUS_PROPERTIES, QLatin1String("PropertiesChanged"), this, - SLOT(propertiesChanged(QString,QVariantMap,QStringList))); + SLOT(updateProperties(QString,QVariantMap,QStringList))); } Offline::~Offline() @@ -145,7 +145,7 @@ }); } -void OfflinePrivate::updateProperties(const QVariantMap &properties) +void OfflinePrivate::initializeProperties(const QVariantMap &properties) { Q_Q(Offline); @@ -184,4 +184,18 @@ } } +void OfflinePrivate::updateProperties(const QString &interface, const QVariantMap &properties, const QStringList &invalidate) +{ + if(interface != PK_OFFLINE_INTERFACE) { + qCWarning(PACKAGEKITQT_OFFLINE) << "Cannot process" << interface << "as" << PK_OFFLINE_INTERFACE; + return; + } + + if (!invalidate.isEmpty()) { + qCWarning(PACKAGEKITQT_OFFLINE) << "Properties could not be invalidated" << interface << invalidate; + } + + initializeProperties(properties); +} + #include "moc_offline.cpp" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/offline.h new/PackageKit-Qt-1.1.0/src/offline.h --- old/PackageKit-Qt-1.0.2/src/offline.h 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/offline.h 2022-12-01 20:10:34.000000000 +0100 @@ -132,7 +132,8 @@ explicit Offline(QObject *parent = nullptr); private: - Q_PRIVATE_SLOT(d_func(), void updateProperties(QVariantMap)) + Q_PRIVATE_SLOT(d_func(), void initializeProperties(QVariantMap)) + Q_PRIVATE_SLOT(d_func(), void updateProperties(QString, QVariantMap, QStringList)) OfflinePrivate *d_ptr; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/offline_p.h new/PackageKit-Qt-1.1.0/src/offline_p.h --- old/PackageKit-Qt-1.0.2/src/offline_p.h 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/offline_p.h 2022-12-01 20:10:34.000000000 +0100 @@ -33,7 +33,8 @@ { } - void updateProperties(const QVariantMap &properties); + void initializeProperties(const QVariantMap &properties); + void updateProperties(const QString &interface, const QVariantMap &properties, const QStringList &invalidate); Offline *q_ptr; OrgFreedesktopPackageKitOfflineInterface iface; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/packagekitqt6.pc.in new/PackageKit-Qt-1.1.0/src/packagekitqt6.pc.in --- old/PackageKit-Qt-1.0.2/src/packagekitqt6.pc.in 1970-01-01 01:00:00.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/packagekitqt6.pc.in 2022-12-01 20:10:34.000000000 +0100 @@ -0,0 +1,11 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + +Name: @LIBNAME@ +Description: PackageKit is a package management abstraction layer. +Version: @PROJECT_VERSION@ +Requires: Qt6Core, Qt6DBus +Libs: -L${libdir} -lpackagekitqt6 +Cflags: -I${includedir}/packagekitqt6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/transaction.cpp new/PackageKit-Qt-1.1.0/src/transaction.cpp --- old/PackageKit-Qt-1.0.2/src/transaction.cpp 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/transaction.cpp 2022-12-01 20:10:34.000000000 +0100 @@ -119,6 +119,10 @@ } else if (signal == QMetaMethod::fromSignal(&Transaction::package)) { signalToConnect = SIGNAL(Package(uint,QString,QString)); memberToConnect = SLOT(Package(uint,QString,QString)); + + if (!p->connection().connect(p->service(), p->path(), p->interface(), QStringLiteral("Packages"), q, SLOT(Packages(QList<PackageKit::PkPackage>)))) { + qWarning() << "Failed to connect Packages"; + } } else if (signal == QMetaMethod::fromSignal(&Transaction::repoDetail)) { signalToConnect = SIGNAL(RepoDetail(QString,QString,bool)); memberToConnect = SIGNAL(repoDetail(QString,QString,bool)); @@ -143,10 +147,15 @@ } else if (signal == QMetaMethod::fromSignal(&Transaction::updateDetail)) { signalToConnect = SIGNAL(UpdateDetail(QString,QStringList,QStringList,QStringList,QStringList,QStringList,uint,QString,QString,uint,QString,QString)); memberToConnect = SLOT(UpdateDetail(QString,QStringList,QStringList,QStringList,QStringList,QStringList,uint,QString,QString,uint,QString,QString)); + + if (!p->connection().connect(p->service(), p->path(), p->interface(), QStringLiteral("UpdateDetails"), q, SLOT(UpdateDetails(QList<PackageKit::PkDetail>)))) { + qWarning() << "Failed to connect UpdateDetails"; + } } if (signalToConnect && memberToConnect) { - QObject::connect(p, signalToConnect, q, memberToConnect); + bool b = QObject::connect(p, signalToConnect, q, memberToConnect); + Q_ASSERT(b); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/transaction.h new/PackageKit-Qt-1.1.0/src/transaction.h --- old/PackageKit-Qt-1.0.2/src/transaction.h 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/transaction.h 2022-12-01 20:10:34.000000000 +0100 @@ -34,6 +34,8 @@ namespace PackageKit { class Details; +struct PkPackage; +struct PkDetail; /** * \class Transaction transaction.h Transaction @@ -855,11 +857,13 @@ Q_PRIVATE_SLOT(d_func(), void mediaChangeRequired(uint mediaType, const QString &mediaId, const QString &mediaText)) Q_PRIVATE_SLOT(d_func(), void finished(uint exitCode, uint runtime)) Q_PRIVATE_SLOT(d_func(), void Package(uint info, const QString &pid, const QString &summary)) + Q_PRIVATE_SLOT(d_func(), void Packages(QList<PackageKit::PkPackage>)) Q_PRIVATE_SLOT(d_func(), void ItemProgress(const QString &itemID, uint status, uint percentage)) Q_PRIVATE_SLOT(d_func(), void RepoSignatureRequired(const QString &pid, const QString &repoName, const QString &keyUrl, const QString &keyUserid, const QString &keyId, const QString &keyFingerprint, const QString &keyTimestamp, uint type)) Q_PRIVATE_SLOT(d_func(), void requireRestart(uint type, const QString &pid)) Q_PRIVATE_SLOT(d_func(), void transaction(const QDBusObjectPath &oldTid, const QString ×pec, bool succeeded, uint role, uint duration, const QString &data, uint uid, const QString &cmdline)) Q_PRIVATE_SLOT(d_func(), void UpdateDetail(const QString &package_id, const QStringList &updates, const QStringList &obsoletes, const QStringList &vendor_urls, const QStringList &bugzilla_urls, const QStringList &cve_urls, uint restart, const QString &update_text, const QString &changelog, uint state, const QString &issued, const QString &updated)) + Q_PRIVATE_SLOT(d_func(), void UpdateDetails(const QList<PackageKit::PkDetail> &dets)) Q_PRIVATE_SLOT(d_func(), void destroy()) Q_PRIVATE_SLOT(d_func(), void daemonQuit()) Q_PRIVATE_SLOT(d_func(), void propertiesChanged(QString,QVariantMap,QStringList)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/transactionprivate.cpp new/PackageKit-Qt-1.1.0/src/transactionprivate.cpp --- old/PackageKit-Qt-1.0.2/src/transactionprivate.cpp 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/transactionprivate.cpp 2022-12-01 20:10:34.000000000 +0100 @@ -49,9 +49,9 @@ tid.path(), QDBusConnection::systemBus(), q); - if (!Daemon::global()->hints().isEmpty()) { - q->setHints(Daemon::global()->hints()); - } + QStringList hints = Daemon::global()->hints(); + hints << QStringLiteral("supports-plural-signals=true"); + q->setHints(hints); q->connect(p, SIGNAL(Destroy()), SLOT(destroy())); @@ -188,6 +188,11 @@ break; } + if (reply.isFinished() && reply.isError()) { + q->errorCode(Transaction::ErrorInternalError, reply.error().message()); + finished(Transaction::ExitFailed, 0); + return; + } auto watcher = new QDBusPendingCallWatcher(reply, q); q->connect(watcher, &QDBusPendingCallWatcher::finished, q, [this, q] (QDBusPendingCallWatcher *call) { @@ -286,40 +291,40 @@ const QVariant &value = it.value(); if (property == QLatin1String("AllowCancel")) { allowCancel = value.toBool(); - QMetaObject::invokeMethod(q, "allowCancelChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::allowCancelChanged, Qt::QueuedConnection); } else if (property == QLatin1String("CallerActive")) { callerActive = value.toBool(); - QMetaObject::invokeMethod(q, "isCallerActiveChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::isCallerActiveChanged, Qt::QueuedConnection); } else if (property == QLatin1String("DownloadSizeRemaining")) { downloadSizeRemaining = value.toLongLong(); - QMetaObject::invokeMethod(q, "downloadSizeRemainingChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::downloadSizeRemainingChanged, Qt::QueuedConnection); } else if (property == QLatin1String("ElapsedTime")) { elapsedTime = value.toUInt(); - QMetaObject::invokeMethod(q, "elapsedTimeChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::elapsedTimeChanged, Qt::QueuedConnection); } else if (property == QLatin1String("LastPackage")) { lastPackage = value.toString(); - QMetaObject::invokeMethod(q, "lastPackageChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::lastPackageChanged, Qt::QueuedConnection); } else if (property == QLatin1String("Percentage")) { percentage = value.toUInt(); - QMetaObject::invokeMethod(q, "percentageChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::percentageChanged, Qt::QueuedConnection); } else if (property == QLatin1String("RemainingTime")) { remainingTime = value.toUInt(); q->remainingTimeChanged(); } else if (property == QLatin1String("Role")) { role = static_cast<Transaction::Role>(value.toUInt()); - QMetaObject::invokeMethod(q, "roleChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::roleChanged, Qt::QueuedConnection); } else if (property == QLatin1String("Speed")) { speed = value.toUInt(); - QMetaObject::invokeMethod(q, "speedChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::speedChanged, Qt::QueuedConnection); } else if (property == QLatin1String("Status")) { status = static_cast<Transaction::Status>(value.toUInt()); - QMetaObject::invokeMethod(q, "statusChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::statusChanged, Qt::QueuedConnection); } else if (property == QLatin1String("TransactionFlags")) { transactionFlags = static_cast<Transaction::TransactionFlags>(value.toUInt()); - QMetaObject::invokeMethod(q, "transactionFlagsChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::transactionFlagsChanged, Qt::QueuedConnection); } else if (property == QLatin1String("Uid")) { uid = value.toUInt(); - QMetaObject::invokeMethod(q, "uidChanged", Qt::QueuedConnection); + QMetaObject::invokeMethod(q, &Transaction::uidChanged, Qt::QueuedConnection); } else { qCWarning(PACKAGEKITQT_TRANSACTION) << "Unknown Transaction property:" << property << value; } @@ -336,6 +341,14 @@ summary); } +void TransactionPrivate::Packages(const QList<PackageKit::PkPackage> &pkgs) +{ + Q_Q(Transaction); + for (PkPackage const &pkg : pkgs) { + q->package(static_cast<Transaction::Info>(pkg.info), pkg.pid, pkg.summary); + } +} + void TransactionPrivate::ItemProgress(const QString &itemID, uint status, uint percentage) { Q_Q(Transaction); @@ -424,3 +437,22 @@ QDateTime::fromString(issued, Qt::ISODate), QDateTime::fromString(updated, Qt::ISODate)); } + +void TransactionPrivate::UpdateDetails(const QList<PkDetail> &details) +{ + Q_Q(Transaction); + for (const PkDetail &detail : details) { + q->updateDetail(detail.package_id, + detail.updates, + detail.obsoletes, + detail.vendor_urls, + detail.bugzilla_urls, + detail.cve_urls, + static_cast<PackageKit::Transaction::Restart>(detail.restart), + detail.update_text, + detail.changelog, + static_cast<PackageKit::Transaction::UpdateState>(detail.state), + QDateTime::fromString(detail.issued, Qt::ISODate), + QDateTime::fromString(detail.updated, Qt::ISODate)); + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/src/transactionprivate.h new/PackageKit-Qt-1.1.0/src/transactionprivate.h --- old/PackageKit-Qt-1.0.2/src/transactionprivate.h 2020-02-20 23:52:54.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/src/transactionprivate.h 2022-12-01 20:10:34.000000000 +0100 @@ -32,6 +32,27 @@ namespace PackageKit { +struct PkPackage { + uint info; + QString pid; + QString summary; +}; + +struct PkDetail { + QString package_id; + QStringList updates; + QStringList obsoletes; + QStringList vendor_urls; + QStringList bugzilla_urls; + QStringList cve_urls; + uint restart; + QString update_text; + QString changelog; + uint state; + QString issued; + QString updated; +}; + class TransactionPrivate { Q_DECLARE_PUBLIC(Transaction) @@ -103,6 +124,7 @@ void mediaChangeRequired(uint mediaType, const QString &mediaId, const QString &mediaText); void finished(uint exitCode, uint runtime); void Package(uint info, const QString &pid, const QString &summary); + void Packages(const QList<PackageKit::PkPackage> &packages); void ItemProgress(const QString &itemID, uint status, uint percentage); void RepoSignatureRequired(const QString &pid, const QString &repoName, @@ -115,6 +137,7 @@ void requireRestart(uint type, const QString &pid); void transaction(const QDBusObjectPath &oldTid, const QString ×pec, bool succeeded, uint role, uint duration, const QString &data, uint uid, const QString &cmdline); void UpdateDetail(const QString &package_id, const QStringList &updates, const QStringList &obsoletes, const QStringList &vendor_urls, const QStringList &bugzilla_urls, const QStringList &cve_urls, uint restart, const QString &update_text, const QString &changelog, uint state, const QString &issued, const QString &updated); + void UpdateDetails(const QList<PackageKit::PkDetail> &details); void destroy(); void daemonQuit(); void propertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProperties); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/tests/ci/Dockerfile-debian new/PackageKit-Qt-1.1.0/tests/ci/Dockerfile-debian --- old/PackageKit-Qt-1.0.2/tests/ci/Dockerfile-debian 1970-01-01 01:00:00.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/tests/ci/Dockerfile-debian 2022-12-01 20:10:34.000000000 +0100 @@ -0,0 +1,18 @@ +FROM debian:bullseye + +# allow fetching source packages +RUN echo "deb-src http://deb.debian.org/debian/ bullseye main" >> /etc/apt/sources.list + +# prepare +RUN apt-get update -qq + +# install build essentials +RUN apt-get install -yq build-essential + +# install PackageKit-Qt dependencies +RUN apt-get build-dep -yq packagekit-qt +RUN apt-get install -yq cmake ninja-build + +# finish +RUN mkdir /build +WORKDIR /build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/tests/ci/Dockerfile-fedora new/PackageKit-Qt-1.1.0/tests/ci/Dockerfile-fedora --- old/PackageKit-Qt-1.0.2/tests/ci/Dockerfile-fedora 1970-01-01 01:00:00.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/tests/ci/Dockerfile-fedora 2022-12-01 20:10:34.000000000 +0100 @@ -0,0 +1,8 @@ +FROM fedora:31 + +RUN dnf -y update +RUN dnf -y install dnf-plugins-core libdnf-devel redhat-rpm-config cmake gcc-c++ ninja-build +RUN dnf -y builddep PackageKit-Qt + +RUN mkdir /build +WORKDIR /build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PackageKit-Qt-1.0.2/tests/ci/build_and_test.sh new/PackageKit-Qt-1.1.0/tests/ci/build_and_test.sh --- old/PackageKit-Qt-1.0.2/tests/ci/build_and_test.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/PackageKit-Qt-1.1.0/tests/ci/build_and_test.sh 2022-12-01 20:10:34.000000000 +0100 @@ -0,0 +1,14 @@ +#!/bin/sh +set -e + +if [ -d "build" ]; then + rm build -rf +fi +cmake -S . -B build -GNinja -DMAINTAINER=1 $@ + +# Build, Test & Install +cmake --build build +## No tests yet +#cd build && ctest && cd - + +DESTDIR=/tmp/install_root/ cmake --install build