# TODO:
# - BASH command-not-found functionality disabled for now as it needs patched bash
# (details in bash from Fedora Rawhide)
+# - setup dnf vendor properly? (see meson command)
+# - daemon user (see meson command)
#
# Conditional build:
-%bcond_without doc # build without docs
+%bcond_without apidocs # API documentation
%bcond_without introspection # gobject introspection, time to time broken
%bcond_without static_libs # static library
%bcond_without python # Python binding (used by entropy and portage backends)
# backends
%bcond_with alpm # ALPM (Arch Linux package manager) backend
%bcond_with apt # APT (Debian/Ubuntu) backend using C++ API
-%bcond_with dnf # DNF (Fedora/RHEL) backend
+%bcond_without dnf # DNF (Fedora/RHEL/Mageia/OpenMandriva/OpenSUSE/Rosa) backend
%bcond_with entropy # Entropy (Sabayon) backend (Python)
-%bcond_with nix # Nix (NixOS) backend [broken as of 1.2.0]
+%bcond_with nix # Nix (NixOS) backend [broken as of 1.2.0-1.2.5]
+%bcond_with pisi # PiSi (Pardus) backend (Python)
%bcond_without poldek # Poldek (PLD) backend
%bcond_with portage # portage (Gentoo) backend (Python)
%bcond_with slack # Slack (Slackware) backend
-%bcond_with zypp # ZYPP (openSUSE/SLE) backend [broken as of 1.2.0]
+%bcond_with zypp # ZYPP (openSUSE/SLE) backend
%if %{without python}
%undefine with_entropy
+%undefine with_pisi
%undefine with_portage
%endif
Summary: System daemon that is a D-Bus abstraction layer for package management
Summary(pl.UTF-8): Demon systemowy będący warstwą abstrakcji D-Bus do zarządzania pakietami
Name: PackageKit
-Version: 1.2.1
-Release: 1
+Version: 1.2.8
+Release: 2
License: GPL v2+
Group: Applications/System
Source0: https://www.freedesktop.org/software/PackageKit/releases/%{name}-%{version}.tar.xz
-# Source0-md5: a0a1f7c45d25901cf4ff4318405610c3
+# Source0-md5: 78cb918f4128a57bfc8a454b60f5a3c1
Patch0: %{name}-poldek.patch
-Patch1: %{name}-bashcomp.patch
Patch2: %{name}-meson.patch
Patch3: consolekit-fallback.patch
URL: https://www.freedesktop.org/software/PackageKit/
-%{?with_apt:BuildRequires: AppStream-devel >= 0.11}
+%{?with_dnf:BuildRequires: AppStream-devel >= 0.14.0}
+%{?with_apt:BuildRequires: AppStream-devel >= 0.16.0}
BuildRequires: NetworkManager-devel >= 0.6.5
-# pkgconfig(libalpm) >= 12.0.0
-%{?with_alpm:BuildRequires: alpm-devel >= 5.2}
-%{?with_dnf:BuildRequires: appstream-glib-devel}
-%{?with_apt:BuildRequires: apt-devel >= 1.7}
+# pkgconfig(libalpm) >= 13.0.0
+%{?with_alpm:BuildRequires: alpm-devel >= 6.0}
+%{?with_apt:BuildRequires: apt-devel >= 1.9.2}
+BuildRequires: bash-completion-devel >= 1:2.0
BuildRequires: connman-devel
%{?with_slack:BuildRequires: curl-devel}
BuildRequires: dbus-devel >= 1.2.0
BuildRequires: dbus-glib-devel >= 0.76
BuildRequires: docbook-dtd412-xml
BuildRequires: docbook-dtd42-xml
+BuildRequires: docbook-style-xsl-nons
BuildRequires: fontconfig-devel
BuildRequires: gettext-tools
-BuildRequires: glib2-devel >= 1:2.54.0
+BuildRequires: glib2-devel >= 1:2.62
%{?with_introspection:BuildRequires: gobject-introspection-devel >= 0.9.9}
BuildRequires: gstreamer-devel >= 1.0.0
BuildRequires: gstreamer-plugins-base-devel >= 1.0.0
BuildRequires: gtk+3-devel >= 3.0.0
-%{?with_doc:BuildRequires: gtk-doc >= 1.11}
+%{?with_apidocs:BuildRequires: gtk-doc >= 1.11}
BuildRequires: libarchive-devel
%{?with_dnf:BuildRequires: libdnf-devel >= 0.43.1}
%if %{with apt} || %{with nix}
%endif
%{?with_slack:BuildRequires: libstdc++-devel >= 6:5}
BuildRequires: libxslt-progs
-%{?with_zypp:BuildRequires: libzypp-devel >= 15}
-BuildRequires: meson >= 0.47.0
+%{?with_zypp:BuildRequires: libzypp-devel >= 17.31.0}
+BuildRequires: meson >= 0.50
BuildRequires: ninja >= 1.5
# nix-expr nix-main nix-store
-%{?with_nix:BuildRequires: nix-devel >= 1.12}
+%{?with_nix:BuildRequires: nix-devel >= 2.9}
BuildRequires: pango-devel
BuildRequires: pkgconfig
-# when released; just to detect which reboot modes to use (library not linked)
+# just to detect which reboot modes to use (library not linked)
#BuildRequires: plymouth-devel >= 0.9.5
%{?with_poldek:BuildRequires: poldek-devel >= 0.30-1.rc6.4}
BuildRequires: polkit-devel >= 0.114
-# or 1:3.2
-%{?with_python:BuildRequires: python-devel >= 1:2.7}
+%{?with_python:BuildRequires: python3-devel >= 1:3.2}
BuildRequires: readline-devel
-%{?with_dnf:BuildRequires: rpm-devel >= 4.?}
+BuildRequires: rpm-build >= 4.6
+%{?with_dnf:BuildRequires: rpm-devel >= 1:4.6}
BuildRequires: rpm-pythonprov
BuildRequires: rpmbuild(macros) >= 1.736
BuildRequires: sed >= 4.0
BuildRequires: sqlite3-devel >= 3
+# or elogind >= 229.4
BuildRequires: systemd-devel >= 1:213
BuildRequires: tar >= 1:1.22
BuildRequires: udev-glib-devel
Requires: crondaemon
Requires: polkit >= 0.114
Suggests: ConsoleKit-x11
-Obsoletes: PackageKit-backend-pisi
-Obsoletes: PackageKit-backend-ports
-Obsoletes: PackageKit-backend-smart
-Obsoletes: PackageKit-backend-urpmi
-Obsoletes: PackageKit-backend-yum
+Obsoletes: PackageKit-backend-ports < 1.2
+Obsoletes: PackageKit-backend-smart < 1.0
+Obsoletes: PackageKit-backend-urpmi < 1.2
+Obsoletes: PackageKit-backend-yum < 1.2
Obsoletes: PackageKit-docs < 0.8.4
-Obsoletes: pm-utils-packagekit
+Obsoletes: pm-utils-packagekit < 0.8.15
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
Summary: packagekit-glib library
Summary(pl.UTF-8): Biblioteka packagekit-glib
Group: Libraries
-Requires: glib2 >= 1:2.54.0
+Requires: glib2 >= 1:2.62
Obsoletes: browser-plugin-packagekit < 1.1.0
%description libs
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
Requires: dbus-devel >= 1.2.0
-Requires: glib2-devel >= 1:2.54.0
+Requires: glib2-devel >= 1:2.62
Requires: sqlite3-devel
%description devel
Group: Development/Libraries
Requires: %{name}-devel = %{version}-%{release}
Requires: vala >= 2:0.16
-%if "%{_rpmversion}" >= "4.6"
BuildArch: noarch
-%endif
%description -n vala-packagekit
Vala API for PackageKit library.
Summary(pl.UTF-8): Dokumentacja API biblioteki PackageKit
Group: Documentation
Requires: gtk-doc-common
-%if "%{_rpmversion}" >= "4.6"
BuildArch: noarch
-%endif
%description apidocs
PackageKit library API documentation.
Summary(pl.UTF-8): Backend PackageKit APTcc
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: AppStream >= 0.11
+Requires: AppStream >= 0.12
+Requires: apt >= 1.9.2
Provides: %{name}-backend = %{version}-%{release}
%description backend-aptcc
Summary(pl.UTF-8): Backend PackageKit oparty na bibliotece dnfhif
Group: Libraries
Requires: %{name} = %{version}-%{release}
+Requires: libdnf >= 0.43.1
+Requires: rpm >= 1:4.6
Provides: %{name}-backend = %{version}-%{release}
-Obsoletes: PackageKit-backend-hawkey
-Obsoletes: PackageKit-backend-hif
+Obsoletes: PackageKit-backend-hawkey < 1.0
+Obsoletes: PackageKit-backend-hif < 1.2
%description backend-dnf
A backend for PackageKit to enable RPM packages support via dnf
Summary(pl.UTF-8): Backend PackageKit Entropy
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: python-packagekit = %{version}-%{release}
-#Requires: python-entropy
+Requires: python3-packagekit = %{version}-%{release}
+#Requires: python3-entropy
Provides: %{name}-backend = %{version}-%{release}
%description backend-entropy
Summary(pl.UTF-8): Backend PackageKit oparty na zarządcy pakietów Nix
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: nix >= 1.12
+Requires: nix >= 2.9
Provides: %{name}-backend = %{version}-%{release}
%description backend-nix
%description backend-nix -l pl.UTF-8
Backend PackageKit dodający obsługę pakietów Nix (używanych w NixOS).
+%package backend-pisi
+Summary: PackageKit PiSi backend
+Summary(pl.UTF-8): Backend PackageKit PiSi
+Group: Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: python3-packagekit = %{version}-%{release}
+#Requires: python3-piksemel
+#Requires: python3-pisi
+Provides: %{name}-backend = %{version}-%{release}
+
+%description backend-pisi
+A backend for PackageKit to enable PiSi packages support. PiSi
+packages are originated in Pardus distribution.
+
+%description backend-pisi -l pl.UTF-8
+Backend PackageKit dodający obsługę pakietów PiSi. Pakiety PiSi
+wywodzą się z dystrybucji Pardus.
+
%package backend-poldek
Summary: PackageKit Poldek backend
Summary(pl.UTF-8): Backend PackageKit oparty na Poldku
Summary(pl.UTF-8): Backend PackageKit Portage
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: python-packagekit = %{version}-%{release}
-#Requires: python-portage
+Requires: python3-packagekit = %{version}-%{release}
+#Requires: python3-portage
Provides: %{name}-backend = %{version}-%{release}
%description backend-portage
Group: Libraries
Requires: %{name} = %{version}-%{release}
Provides: %{name}-backend = %{version}-%{release}
-Obsoletes: PackageKit-backend-katja
+Obsoletes: PackageKit-backend-katja < 1.2
%description backend-slack
Slack backend for PackageKit to enable Slackware repositories support.
Summary(pl.UTF-8): Backend PackageKit Zypp
Group: Libraries
Requires: %{name} = %{version}-%{release}
-Requires: libzypp >= 15
+Requires: libzypp >= 17.31.0
Provides: %{name}-backend = %{version}-%{release}
%description backend-zypp
Summary(pl.UTF-8): Bashowe uzupełnianie parametrów dla poleceń konsolowych PackageKit
Group: Applications/Shells
Requires: %{name} = %{version}-%{release}
-Requires: bash-completion >= 2
-%if "%{_rpmversion}" >= "4.6"
+Requires: bash-completion >= 1:2.0
BuildArch: noarch
-%endif
%description -n bash-completion-packagekit
This package provides bash-completion for PackageKit console commands.
Pakiet ten dostarcza bashowe uzupełnianie parametrów dla poleceń
konsolowych PackageKit.
-%package -n python-packagekit
+%package -n python3-packagekit
Summary: PackageKit Python bindings
Summary(pl.UTF-8): Wiązania PackageKit dla Pythona
Group: Development/Languages/Python
-Requires: python-dbus
-Requires: python-pygobject
+Obsoletes: python-packagekit < 1.2.7
-%description -n python-packagekit
+%description -n python3-packagekit
PackageKit Python bindings.
-%description -n python-packagekit -l pl.UTF-8
+%description -n python3-packagekit -l pl.UTF-8
Wiązania PackageKit dla Pythona.
%prep
%setup -q
%patch0 -p1
-%patch1 -p1
%patch2 -p1
%patch3 -p1
+%{__sed} -i -e '1s,/usr/bin/python$,%{__python3},' backends/pisi/pisiBackend.py
+
%if %{with static_libs}
%{__sed} -i -e '/^packagekit_glib2_library =/ s/shared_library/library/' lib/packagekit-glib2/meson.build
%endif
%build
-%{?with_zypp:CPPFLAGS="%{rpmcppflags} -D_RPM_5 -I/usr/include/rpm"}
%meson build \
+ --python.bytecompile=2 \
-Dbash_command_not_found=false \
- -Dbash_completion_dir=%{bash_compdir} \
%{!?with_introspection:-Dgobject_introspection=false} \
- %{?with_doc:-Dgtk_doc=true} \
- -Dpackaging_backend=dummy%{?with_alpm:,alpm}%{?with_apt:,aptcc}%{?with_dnf:,dnf}%{?with_entropy:,entropy}%{?with_poldek:,poldek}%{?with_portage:,portage}%{?with_slack:,slack}%{?with_zypp:,zypp}%{?with_nix:,nix} \
+ %{?with_apidocs:-Dgtk_doc=true} \
+ -Dpackaging_backend=dummy%{?with_alpm:,alpm}%{?with_apt:,aptcc}%{?with_dnf:,dnf}%{?with_entropy:,entropy}%{?with_pisi:,pisi}%{?with_poldek:,poldek}%{?with_portage:,portage}%{?with_slack:,slack}%{?with_zypp:,zypp}%{?with_nix:,nix} \
%{!?with_python:-Dpython_backend=false} \
- -Dpythonpackagedir=%{py_sitescriptdir} \
-Dsystemdsystemunitdir=%{systemdunitdir}
# TODO:
%ninja_install -C build
%{__rm} $RPM_BUILD_ROOT%{_libdir}/packagekit-backend/libpk_backend_test_*.so
-
-%if %{without apt} && %{without entropy} && %{without portage}
-# common dir not created if no users built with PackageKit
-install -d $RPM_BUILD_ROOT%{_datadir}/PackageKit/helpers
-%endif
+%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/PackageKit/helpers/test_spawn
# use pk-gstreamer-install as codec installer
ln -s pk-gstreamer-install $RPM_BUILD_ROOT%{_libexecdir}/gst-install-plugins-helper
install -d $RPM_BUILD_ROOT%{systemdunitdir}/system-update.target.wants
ln -sf ../packagekit-offline-update.service \
- $RPM_BUILD_ROOT%{systemdunitdir}/system-update.target.wants/packagekit-offline-update.service
-
-%if %{with python}
-%py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
-%py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
-
-%py_postclean
-%endif
+ $RPM_BUILD_ROOT%{systemdunitdir}/system-update.target.wants/packagekit-offline-update.service
%find_lang %{name}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/PackageKit/PackageKit.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/PackageKit/Vendor.conf
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/packagekit-background
-/etc/dbus-1/system.d/org.freedesktop.PackageKit.conf
%dir %{_datadir}/PackageKit
%dir %{_datadir}/PackageKit/helpers
%attr(755,root,root) %{_datadir}/PackageKit/pk-upgrade-distro.sh
%{_datadir}/polkit-1/actions/org.freedesktop.packagekit.policy
%{_datadir}/polkit-1/rules.d/org.freedesktop.packagekit.rules
%{_datadir}/dbus-1/system-services/org.freedesktop.PackageKit.service
+%{_datadir}/dbus-1/system.d/org.freedesktop.PackageKit.conf
+%{_datadir}/metainfo/org.freedesktop.packagekit.metainfo.xml
%{_mandir}/man1/pkcon.1*
%{_mandir}/man1/pkmon.1*
%{systemdunitdir}/packagekit.service
%{_includedir}/PackageKit/packagekit-glib2
%{_datadir}/gir-1.0/PackageKitGlib-1.0.gir
+%if %{with static_libs}
%files static
%defattr(644,root,root,755)
%{_libdir}/libpackagekit-glib2.a
+%endif
%if %{with vala}
%files -n vala-packagekit
%{_datadir}/vala/vapi/packagekit-glib2.vapi
%endif
+%if %{with apidocs}
%files apidocs
%defattr(644,root,root,755)
%{_gtkdocdir}/PackageKit
+%endif
%if %{with alpm}
%files backend-alpm
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/PackageKit/alpm.d/groups.list
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/PackageKit/alpm.d/pacman.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/PackageKit/alpm.d/repos.list
+# FIXME: dirs should be owned by alpm?
+%dir %{_datadir}/libalpm
+%dir %{_datadir}/libalpm/hooks
+%{_datadir}/libalpm/hooks/90-packagekit-refresh.hook
%endif
%if %{with apt}
%files backend-dnf
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/packagekit-backend/libpk_backend_dnf.so
+%attr(755,root,root) %{_libexecdir}/packagekit-dnf-refresh-repo
+%{py3_sitescriptdir}/dnf-plugins/notify_packagekit.py
+%{py3_sitescriptdir}/dnf-plugins/__pycache__/notify_packagekit.cpython-*.py[co]
%endif
%if %{with entropy}
%attr(755,root,root) %{_libdir}/packagekit-backend/libpk_backend_nix.so
%endif
+%if %{with pisi}
+%files backend-pisi
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/packagekit-backend/libpk_backend_pisi.so
+%dir %{_datadir}/PackageKit/helpers/pisi
+%attr(755,root,root) %{_datadir}/PackageKit/helpers/pisi/pisiBackend.py
+%endif
+
%if %{with poldek}
%files backend-poldek
%defattr(644,root,root,755)
%{bash_compdir}/pkcon
%if %{with python}
-%files -n python-packagekit
+%files -n python3-packagekit
%defattr(644,root,root,755)
-%dir %{py_sitescriptdir}/packagekit
-%{py_sitescriptdir}/packagekit/*.py[co]
+%{py3_sitescriptdir}/packagekit
%endif