Name: PackageKit Version: 1.3.6 Release: 3%{?dist} Summary: Package management service (dnf5 backend, for Discover) License: GPL-2.0-or-later URL: https://www.freedesktop.org/software/PackageKit/ Source0: https://github.com/PackageKit/PackageKit/archive/refs/tags/v%{version}/PackageKit-%{version}.tar.gz BuildRequires: meson BuildRequires: ninja-build BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: pkgconfig BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gio-unix-2.0) BuildRequires: pkgconfig(gmodule-2.0) BuildRequires: sqlite-devel BuildRequires: polkit-devel BuildRequires: jansson-devel BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(systemd) BuildRequires: systemd-rpm-macros BuildRequires: libdnf5-devel BuildRequires: rpm-devel BuildRequires: gobject-introspection-devel BuildRequires: vala BuildRequires: bash-completion %description PackageKit is a D-Bus abstraction layer that allows the session user to manage packages in a secure way using a cross-distro, cross-architecture API. Built with the real dnf5 backend against this distro's own libdnf5 (confirmed that Azure Linux's tdnf genuinely is dnf5/libdnf5 underneath -- `tdnf --version` reports "dnf5 version ..." directly), so this gives Discover real, working package management rather than the no-op dummy backend. The supplementary RPM-transaction notification plugin (notifies PackageKit's UI when an rpm transaction happens outside of PackageKit itself, e.g. via the dnf5/tdnf CLI directly) needs sdbus-c++, which is genuinely absent on this distro; that one small optional plugin was removed via a tested source patch rather than pulling in a whole new C++ D-Bus binding library for a non-essential sync-up feature. Core PackageKit transactions (search/install/remove via Discover) are entirely unaffected. %package glib Summary: GLib libraries for accessing PackageKit %description glib GLib libraries for accessing PackageKit. %package glib-devel Summary: GLib development libraries for PackageKit Requires: %{name}-glib%{?_isa} = %{version}-%{release} %description glib-devel Development files for PackageKit-glib. %package backend-dnf5 Summary: DNF5 backend for PackageKit Requires: %{name}%{?_isa} = %{version}-%{release} %description backend-dnf5 The dnf5 backend for PackageKit, using this distro's real libdnf5. %prep %autosetup -n %{name}-%{version} # The RPM-transaction notification plugin needs sdbus-c++, which is # genuinely absent on this distro -- removed via a tested regex # (verified locally against this exact tarball before submission), no # dangling variable references left behind. python3 - <<'PYEOF' import re with open("backends/dnf5/meson.build") as f: content = f.read() pattern = ( r"\n# Build rpm plugin for notifying PackageKit\n" r"rpm_dep = dependency\('rpm', version: '>=4\.20'\)\n" r"sdbus_cpp_dep = dependency\('sdbus-c\+\+'\)\n" r".*?" r"install_data\(\n" r" 'macros\.transaction_notify_packagekit',\n" r" install_dir: rpm_macrosdir,\n" r"\)\n" ) new_content, n = re.subn(pattern, "\n", content, count=1, flags=re.DOTALL) assert n == 1, f"expected 1 match, got {n}" with open("backends/dnf5/meson.build", "w") as f: f.write(new_content) print("OK: sdbus-c++ notify plugin removed") PYEOF %build %meson \ -D packaging_backend=dnf5 \ -D dnf_vendor=fedora \ -D systemd=true \ -D elogind=false \ -D offline_update=true \ -D legacy_tools=true \ -D gobject_introspection=true \ -D bash_completion=true \ -D bash_command_not_found=false \ -D gstreamer_plugin=false \ -D gtk_module=false \ -D cron=false \ -D python_backend=false \ -D man_pages=false \ -D gtk_doc=false \ -D daemon_tests=false %meson_build %install %meson_install %files %license COPYING %doc README.md NEWS %{_sbindir}/PackageKit %{_libexecdir}/packagekit-direct %{_libexecdir}/pk-offline-update %{_bindir}/pkcon %{_bindir}/pkmon %{_datadir}/PackageKit/ %{_datadir}/dbus-1/system-services/org.freedesktop.PackageKit.service %{_datadir}/dbus-1/system.d/org.freedesktop.PackageKit.conf %{_datadir}/polkit-1/actions/org.freedesktop.packagekit.policy %{_datadir}/bash-completion/completions/pkgcli %{_datadir}/bash-completion/completions/pkcon %{_unitdir}/packagekit.service %{_unitdir}/packagekit-offline-update.service %{_localstatedir}/lib/PackageKit/ %files glib %{_libdir}/libpackagekit-glib2.so.* %{_libdir}/girepository-1.0/PackageKitGlib-1.0.typelib %files glib-devel %{_includedir}/PackageKit/ %{_libdir}/libpackagekit-glib2.so %{_libdir}/pkgconfig/packagekit-glib2.pc %{_datadir}/gir-1.0/PackageKitGlib-1.0.gir %{_datadir}/gir-1.0/PackageKitPlugin-1.0.gir %{_libdir}/girepository-1.0/PackageKitPlugin-1.0.typelib %{_datadir}/vala/vapi/packagekit-glib2.* %files backend-dnf5 %{_libdir}/packagekit-backend/libpk_backend_dnf5.so %changelog * Sat Aug 29 2026 Smech - 1.3.6-3 - R2 failed: "Program 'vapigen' not found" (lib/packagekit-glib2/ meson.build:216, gnome.generate_vapi(), nested inside if get_option('gobject_introspection'), which we enabled). Added the vala package (provides vapigen). Proactively claimed the resulting packagekit-glib2.vapi/.deps output in %%files devel to avoid a separate unpackaged-file round. * Sat Aug 29 2026 Smech - 1.3.6-2 - R1 failed instantly: "Unknown option: 'tests'" -- passed a -D tests=false flag that doesn't exist in this project's meson_options.txt (only daemon_tests does, already included). Removed the bogus flag. * Sat Aug 29 2026 Smech - 1.3.6-1 - Real upstream source (GitHub release tag archive). Full dependency scan done against real meson.build/meson_options.txt AND every subdirectory meson.build (backends/dnf5, contrib, client) up front, learning from this session's earlier Meson packages (pipewire, wireplumber, pulseaudio-libs) that transitive deps hide outside the top-level options file. Selected the real dnf5 backend (confirmed Azure Linux's tdnf is genuinely dnf5/libdnf5 underneath) instead of the no-op dummy backend, so Discover gets real package management. Removed the sdbus-c++-dependent RPM notify plugin via a tested source patch (that library is absent on this distro; the plugin is a non-essential CLI/GUI-transaction sync-up feature, not needed for Discover's core functionality). Disabled gstreamer/gtk/cron/python backend/docs (none of their dependencies are built in this repo, and none are needed for the core dnf5-backed Discover use case). %%files is a first-pass estimate from reading meson.build install() calls, not real build output -- expect a real-error iteration round or two, consistent with every other new package this session.