- Add PackageKit-mark-as-compulsory.patch: Prevent PackageKit from

user uninstallable for most desktops (bsc#1226269).

OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/PackageKit?expand=0&rev=455
This commit is contained in:
Dominique Leuenberger 2024-08-13 14:34:50 +00:00 committed by Git OBS Bridge
commit f57e3543a4
17 changed files with 5570 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

3
PackageKit-1.2.8.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d834250a0f121483027db2cfd93e8b2cba8dc48ff854395bfd88aa9511898be4
size 2790440

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEE0zo/DKFrCsxRpgc4SUyKX79N7OsFAmVL8fAACgkQSUyKX79N
7OuBgw/9HMzZHR28uRPBXsCFvuizNp/BNmJm0rsJp8bG7vUOydz1MlEjwf+GIxXy
SqEbfbVqT6ENjyWC1w1pPGS10uHsmdQVuI5Zsu6NjD+UjEpQxK210BvgS+Yl+QNA
E/oaE1gbNykHpKLmqR1X2NyTb2352x2BjPgFcy5rJAmJnss6vuFwWZu30EKOX4x0
wClHmmdMw5jgbkj+HsA5USvtZyEwKNFfo5E9a0CmbksTeO5iPACh7ZZ+h+ZsfLfi
K6+LtZ3GsDAyg2W+UdggUCVHALe4aHUCu7nor3om6D4tDQIn6FQqo5A5If6yF6l7
NEbr2EZJ8aafIZ+knmtjjvByDmtXbq+IZpEVjReyAT8EVsVhZa7Wb3Xpulm8eSyr
Qa4EKluSbTw+jOQtjMmYIjLNBQnPOGIF1LRS2OmrYpNUyFiINKDl2bTFvvGOVgQP
wp9mGOiKwwLD2RitQZbC89RmFK/jPlVvOKNpR6vBS0taDWnd6hyC2SbCZzUa4S/8
t1vG3kfmk1etCcVX+1BHSTk2HwthVeTrUsqBaN8Fa7Ti2IhZIIJCWslvd7yc57vQ
njzaWgU9sA/XIoE2I2WMkmCpA94//b3X8o3MtwVHHJ5AwVEFg8qn32/2gxhhgcdQ
XPhzuVtWJxUOGJZJoiZifaQ5KzWCa3SXeZ7Be8XzhzzuS230bis=
=0749
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,29 @@
From 819847a0f585e9e950f63c65fa5dead5cdf0027c Mon Sep 17 00:00:00 2001
From: Neal Gompa <ngompa13@gmail.com>
Date: Sat, 31 Aug 2019 22:45:04 -0400
Subject: [PATCH] dnf: Add support for AppStream repodata basenames used by
Open Build Service
For no particularly clear reason, it appears that the Open Build Service
appends AppStream repodata to repositories with the 'appdata' basename
instead of the default 'appstream' basename.
Support downloading this variant as well, as it should (hopefully)
be mutually exclusive.
---
backends/dnf/pk-backend-dnf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: PackageKit-1.2.8/backends/dnf/pk-backend-dnf-common.c
===================================================================
--- PackageKit-1.2.8.orig/backends/dnf/pk-backend-dnf-common.c
+++ PackageKit-1.2.8/backends/dnf/pk-backend-dnf-common.c
@@ -89,7 +89,7 @@ pk_backend_setup_dnf_context (DnfContext
gboolean
dnf_utils_refresh_repo_appstream (DnfRepo *repo, GError **error)
{
- const gchar *as_basenames[] = { "appstream", "appstream-icons", NULL };
+ const gchar *as_basenames[] = { "appstream", "appstream-icons", "appdata", "appdata-icons", NULL };
for (guint i = 0; as_basenames[i] != NULL; i++) {
const gchar *tmp = dnf_repo_get_filename_md (repo, as_basenames[i]);
if (tmp == NULL)

View File

@ -0,0 +1,12 @@
Index: PackageKit-1.2.8/src/meson.build
===================================================================
--- PackageKit-1.2.8.orig/src/meson.build
+++ PackageKit-1.2.8/src/meson.build
@@ -51,6 +51,7 @@ packagekit_direct_exec = executable(
],
install: true,
install_dir: get_option('libexecdir'),
+ export_dynamic: true,
c_args: [
'-DG_LOG_DOMAIN="PackageKit"',
'-DLIBDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('libdir'))),

View File

@ -0,0 +1,12 @@
diff --unified --recursive --text --new-file --color PackageKit-1.2.8.old/backends/dnf/meson.build PackageKit-1.2.8.new/backends/dnf/meson.build
--- PackageKit-1.2.8.old/backends/dnf/meson.build 2023-11-09 04:35:41.000000000 +0800
+++ PackageKit-1.2.8.new/backends/dnf/meson.build 2024-01-02 16:12:35.600072285 +0800
@@ -8,7 +8,7 @@
endif
python = import('python')
-python_exec = python.find_installation()
+python_exec = python.find_installation('python3.6')
python_package_dir = get_option('pythonpackagedir')
if python_package_dir == ''
python_package_dir = python_exec.get_install_dir()

View File

@ -0,0 +1,27 @@
From 30b22c0f06970c934b3e6f6ea0328c589548850c Mon Sep 17 00:00:00 2001
From: Richard Hughes <richard@hughsie.com>
Date: Thu, 29 Oct 2020 15:40:00 +0000
Subject: [PATCH] Do not crash when calling pk_dbus_get_uid() before D-Bus is
setup
Fixes https://github.com/hughsie/PackageKit/issues/436
---
src/pk-dbus.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/pk-dbus.c b/src/pk-dbus.c
index ddd04d4e6..af275eb2a 100644
--- a/src/pk-dbus.c
+++ b/src/pk-dbus.c
@@ -64,6 +64,10 @@ pk_dbus_get_uid (PkDbus *dbus, const gchar *sender)
g_return_val_if_fail (PK_IS_DBUS (dbus), G_MAXUINT);
g_return_val_if_fail (sender != NULL, G_MAXUINT);
+ /* no connection to DBus */
+ if (dbus->priv->proxy_uid == NULL)
+ return G_MAXUINT;
+
/* set in the test suite */
if (g_strcmp0 (sender, ":org.freedesktop.PackageKit") == 0) {
g_debug ("using self-check shortcut");

View File

@ -0,0 +1,17 @@
From 47b7f97bc9ef22b9c1c6c0a738ff49c876d8122a Mon Sep 17 00:00:00 2001
From: Matthias Klumpp <matthias@tenstral.net>
Date: Thu, 17 Feb 2022 21:19:50 +0100
Subject: [PATCH] trivial: Drop unnecessary x permission
Lintian complained about it.
---
contrib/pkcon | 0
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100755 => 100644 contrib/pkcon
diff --git a/contrib/pkcon b/contrib/pkcon
old mode 100755
new mode 100644
--
2.39.2

View File

@ -0,0 +1,35 @@
From d8f84f7e0a017e0b4df1e08a2a6be832c9fb3611 Mon Sep 17 00:00:00 2001
From: Matthias Klumpp <matthias@tenstral.net>
Date: Tue, 21 May 2024 02:33:55 +0200
Subject: [PATCH] metainfo: Mark PK as compulsory for most desktops
Ideally, AppStream needs a way to just mark a component as critical for
the system to function and prevent its removal. But this is okay as a
temporary fix.
Resolves: #759
---
data/org.freedesktop.packagekit.metainfo.xml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/data/org.freedesktop.packagekit.metainfo.xml b/data/org.freedesktop.packagekit.metainfo.xml
index 13b7a316d..ce47582a8 100644
--- a/data/org.freedesktop.packagekit.metainfo.xml
+++ b/data/org.freedesktop.packagekit.metainfo.xml
@@ -27,6 +27,16 @@
<url type="homepage">https://www.freedesktop.org/software/PackageKit</url>
<launchable type="service">packagekit.service</launchable>
+
+ <compulsory_for_desktop>Cinnamon</compulsory_for_desktop>
+ <compulsory_for_desktop>GNOME</compulsory_for_desktop>
+ <compulsory_for_desktop>KDE</compulsory_for_desktop>
+ <compulsory_for_desktop>LXQt</compulsory_for_desktop>
+ <compulsory_for_desktop>MATE</compulsory_for_desktop>
+ <compulsory_for_desktop>Pantheon</compulsory_for_desktop>
+ <compulsory_for_desktop>Unity</compulsory_for_desktop>
+ <compulsory_for_desktop>XFCE</compulsory_for_desktop>
+
<categories>
<category>System</category>
</categories>

View File

@ -0,0 +1,9 @@
diff -rup PackageKit-1.2.1/policy/meson.build PackageKit-1.2.1-rm-polkitrules/policy/meson.build
--- PackageKit-1.2.1/policy/meson.build 2020-09-07 05:14:48.879003300 -0400
+++ PackageKit-1.2.1-rm-polkitrules/policy/meson.build 2020-09-07 10:12:34.746741536 -0400
@@ -1,5 +1,3 @@
-install_data('org.freedesktop.packagekit.rules',
- install_dir : join_paths(get_option('datadir'), 'polkit-1', 'rules.d'))
i18n.merge_file(
input: 'org.freedesktop.packagekit.policy.in',
output: 'org.freedesktop.packagekit.policy',

View File

@ -0,0 +1,166 @@
diff -rupN PackageKit-1.2.1/data/meson.build PackageKit-1.2.1-systemd-timers/data/meson.build
--- PackageKit-1.2.1/data/meson.build 2020-09-07 05:14:48.836002600 -0400
+++ PackageKit-1.2.1-systemd-timers/data/meson.build 2020-09-07 10:26:55.514657134 -0400
@@ -6,6 +6,7 @@ install_data(
dbus_config_data = configuration_data()
dbus_config_data.set('PACKAGEKIT_USER', get_option('packagekit_user'))
dbus_config_data.set('libexecdir', join_paths(get_option('prefix'), get_option('libexecdir')))
+dbus_config_data.set('datadir', join_paths(get_option('prefix'), get_option('datadir')))
dbus_sys_dir = get_option('dbus_sys')
if dbus_sys_dir == ''
@@ -43,6 +44,24 @@ if get_option('systemd')
install_dir: systemd_system_unit_dir,
)
+ configure_file(
+ input: 'packagekit-background.service.in',
+ output: 'packagekit-background.service',
+ configuration: dbus_config_data,
+ install: true,
+ install_dir: systemd_system_unit_dir,
+ )
+
+ install_data(
+ 'packagekit-background.timer',
+ install_dir: systemd_system_unit_dir,
+ )
+
+ install_data(
+ 'packagekit-background.sh',
+ install_dir: join_paths(get_option('datadir'), 'PackageKit'),
+ )
+
if get_option('offline_update')
configure_file(
input: 'packagekit-offline-update.service.in',
diff -rupN PackageKit-1.2.1/data/packagekit-background.service.in PackageKit-1.2.1-systemd-timers/data/packagekit-background.service.in
--- PackageKit-1.2.1/data/packagekit-background.service.in 1969-12-31 19:00:00.000000000 -0500
+++ PackageKit-1.2.1-systemd-timers/data/packagekit-background.service.in 2020-09-07 10:27:07.897771008 -0400
@@ -0,0 +1,5 @@
+[Unit]
+Description=Script to update the system with PackageKit
+
+[Service]
+ExecStart=@datadir@/PackageKit/packagekit-background.sh
diff -rupN PackageKit-1.2.1/data/packagekit-background.sh PackageKit-1.2.1-systemd-timers/data/packagekit-background.sh
--- PackageKit-1.2.1/data/packagekit-background.sh 1969-12-31 19:00:00.000000000 -0500
+++ PackageKit-1.2.1-systemd-timers/data/packagekit-background.sh 2020-09-07 10:17:37.609526652 -0400
@@ -0,0 +1,102 @@
+#!/bin/bash
+# Copyright (C) 2008 Richard Hughes <richard@hughsie.com>
+#
+# Some material taken from yum-cron, Copyright 2007 Alec Habig <ahabig@umn.edu>
+#
+# Licensed under the GNU General Public License Version 2
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+## Type: yesno
+## Default: no
+#
+# Run the cron job.
+#
+ENABLED=no
+
+## Type: yesno
+## Default: no
+#
+# Check if updates are available, instead of installing.
+#
+CHECK_ONLY=no
+
+## Type: yesno
+## Default: no
+#
+# Trigger updates, so they will be installed on reboot.
+#
+UPDATE_OFFLINE=no
+
+## Type: string
+## Default: ""
+#
+# If MAILTO is set, the mail command is used to deliver PackageKit output.
+# By default MAILTO is unset, so crond mails the output by itself.
+#
+MAILTO=""
+
+## Type: string
+## Default: ""
+#
+# You may set SYSTEM_NAME if you want your PackageKit emails tagged differently.
+# Default is output of hostname command.
+#
+SYSTEM_NAME=""
+
+## Type: integer
+## Default: 3600
+#
+# Update checks will sleep random time before contacting the servers to
+# avoid hammering them with thousands of request at the same time - this
+# is the maximum sleep time (in seconds) for the random wait period.
+#
+SLEEP_MAX=3600
+
+# are we disabled?
+if [ "$ENABLED" = "no" ]; then
+ exit 0
+fi
+
+# set default for SYSTEM_NAME
+[ -z "$SYSTEM_NAME" ] && SYSTEM_NAME=$(hostname)
+
+PKTMP=$(mktemp /var/run/packagekit-cron.XXXXXX)
+PKCON_OPTIONS="--background --noninteractive --plain"
+if [ "$UPDATE_OFFLINE" = "yes" ]; then
+ ONLY_DOWNLOAD="--only-download"
+else
+ ONLY_DOWNLOAD=""
+fi
+
+# wait a random amount of time to avoid hammering the servers
+[ -z "$SLEEP_MAX" ] && SLEEP_MAX=$RANDOM
+sleep $(( $RANDOM % $SLEEP_MAX + 1 ))
+
+# do action
+if [ "$CHECK_ONLY" = "yes" ]; then
+ pkcon $PKCON_OPTIONS get-updates &> $PKTMP
+ PKCON_RETVAL=$?
+else
+ pkcon $PKCON_OPTIONS $ONLY_DOWNLOAD update &> $PKTMP
+ PKCON_RETVAL=$?
+ if [ $PKCON_RETVAL -eq 0 -a "$UPDATE_OFFLINE" = "yes" ]; then
+ pkcon $PKCON_OPTIONS offline-trigger &> $PKTMP
+ fi
+fi
+
+# this is when seomthing useful was done
+if [ $PKCON_RETVAL -ne 5 ]; then
+ # send email
+ if [ -n "$MAILTO" ]; then
+ mail -Ssendwait -s "System updates available: $SYSTEM_NAME" $MAILTO < $PKTMP
+ else
+ # default behavior is to use cron's internal mailing of output from cron-script
+ cat $PKTMP
+ fi
+fi
+
+rm -f $PKTMP
+
diff -rupN PackageKit-1.2.1/data/packagekit-background.timer PackageKit-1.2.1-systemd-timers/data/packagekit-background.timer
--- PackageKit-1.2.1/data/packagekit-background.timer 1969-12-31 19:00:00.000000000 -0500
+++ PackageKit-1.2.1-systemd-timers/data/packagekit-background.timer 2020-09-07 10:17:37.609526652 -0400
@@ -0,0 +1,11 @@
+[Unit]
+Description=Systemd timer to update the system daily with PackageKit
+
+[Timer]
+OnCalendar=daily
+AccuracySec=12h
+Persistent=true
+Unit=packagekit-background.service
+
+[Install]
+WantedBy=timers.target

View File

@ -0,0 +1,30 @@
From 01ae2ceee2688b308553b0ed0c5f9c1b6f27ad78 Mon Sep 17 00:00:00 2001
From: Jonathan Kang <jonathankang@gnome.org>
Date: Wed, 27 Jul 2022 17:15:31 +0800
Subject: [PATCH] zypp: Disable upgrade-system support in SLE
---
backends/zypp/pk-backend-zypp.cpp | 13 +++++++++++++
1 file changed, 13 insertions(+)
Index: PackageKit-1.2.8/backends/zypp/pk-backend-zypp.cpp
===================================================================
--- PackageKit-1.2.8.orig/backends/zypp/pk-backend-zypp.cpp
+++ PackageKit-1.2.8/backends/zypp/pk-backend-zypp.cpp
@@ -3572,6 +3572,16 @@ pk_backend_upgrade_system_thread (PkBack
return;
}
+ release_name = pk_get_distro_name (&error);
+ if (release_name == NULL)
+ g_error ("Failed to parse os-release: %s", error->message);
+ if (g_str_has_prefix (release_name, "SLE")) {
+ pk_backend_job_error_code (job, PK_ERROR_ENUM_NOT_SUPPORTED,
+ "upgrade-system is not supported in SLE.");
+
+ return;
+ }
+
ResPool pool = zypp_build_pool (zypp, TRUE);
PkRestartEnum restart = PK_RESTART_ENUM_NONE;
PoolStatusSaver saver;

4475
PackageKit.changes Normal file

File diff suppressed because it is too large Load Diff

220
PackageKit.keyring Normal file
View File

@ -0,0 +1,220 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
L3QE
=7l2s
-----END PGP PUBLIC KEY BLOCK-----

492
PackageKit.spec Normal file
View File

@ -0,0 +1,492 @@
#
# spec file for package PackageKit
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%if 0%{?sle_version} && 0%{?sle_version} < 160000
%bcond_with offline_updates
%else
%bcond_without offline_updates
%endif
# Only make DNF backend available openSUSE Leap 15.1+
%if 0%{?sle_version} >= 150100 || 0%{?suse_version} >= 1550
%bcond_without dnf
%bcond_with cnf
%else
%bcond_with dnf
%bcond_with cnf
%endif
Name: PackageKit
Version: 1.2.8
Release: 0
Summary: Simple software installation management software
License: GPL-2.0-or-later
Group: System/Daemons
URL: https://www.freedesktop.org/software/PackageKit
Source0: %{url}/releases/%{name}-%{version}.tar.xz
Source1: %{url}/releases/%{name}-%{version}.tar.xz.asc
Source3: PackageKit.tmpfiles
Source99: PackageKit.keyring
# PATCH-FEATURE-OPENSUSE PackageKit-systemd-timers.patch bsc#1115410 sckang@suse.com -- Migrate from cron to systemd timers
Patch1: PackageKit-systemd-timers.patch
# PATCH-FIX-OPENSUSE PackageKit-remove-polkit-rules.patch bsc#1125434 sckang@suse.com -- Remove polkit rules file
Patch2: PackageKit-remove-polkit-rules.patch
# PATCH-FIX-OPENSUSE PackageKit-dnf-Add-support-for-AppStream-repodata-basenames-use.patch ngompa13@gmail.com -- Band-aid to deal with OBS producing differently named appstream repodata files
Patch3: PackageKit-dnf-Add-support-for-AppStream-repodata-basenames-use.patch
# PATCH-FIX-UPSTREAM PackageKit-fix-crash-pre-dbus.patch gh#hughsie/PackageKit!436 -- Do not crash when calling pk_dbus_get_uid() before D-Bus is setup
Patch4: PackageKit-fix-crash-pre-dbus.patch
# PATCH-FIX-UPSTREAM PackageKit-zypp-disable-upgrade-system-in-sle.patch gh#PackageKit/PackageKit/commit/0fcd820c2 sckang@suse.com -- zypp: Disable upgrade-system support in SLE
Patch7: PackageKit-zypp-disable-upgrade-system-in-sle.patch
# PATCH-FIX-UPSTREAM PackageKit-fix-pkcon-permission.patch gh#PackageKit/PackageKit/commit/47b7f97bc, bsc#1209138 sckang@suse.com -- trivial: Drop unnecessary x permission
Patch15: PackageKit-fix-pkcon-permission.patch
# PATCH-FIX-UPSTREAM PackageKit-dynamic-export.patch boo#1213309 dimstar@opensuse.org -- Fix loading modules when built with glib 2.70
Patch16: PackageKit-dynamic-export.patch
# PATCH-FIX-UPSTREAM PackageKit-mark-as-compulsory.patch bsc#1226269 alynx.zhou@suse.com -- Prevent PackageKit from user uninstallable
Patch17: PackageKit-mark-as-compulsory.patch
# PATCH-FIX-SLE PackageKit-find-python-3-6.patch alynx.zhou@suse.com -- Build PackageKit with Python 3.6
Patch1001: PackageKit-find-python-3-6.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: gobject-introspection-devel
BuildRequires: gstreamer-devel
BuildRequires: gstreamer-plugins-base-devel
BuildRequires: gtk-doc
BuildRequires: gtk3-devel
BuildRequires: intltool
BuildRequires: libarchive-devel
BuildRequires: libcppunit-devel
%if %{with dnf}
BuildRequires: appstream-glib-devel
BuildRequires: libdnf-devel >= 0.43.1
BuildRequires: pkgconfig(appstream)
%endif
BuildRequires: libgudev-1_0-devel
BuildRequires: libtool
BuildRequires: meson >= 0.50
BuildRequires: mozilla-nspr-devel >= 4.8
BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: polkit-devel >= 0.98
# We need the %%mime_database_* macros
BuildRequires: shared-mime-info
BuildRequires: sqlite-devel
BuildRequires: vala
BuildRequires: pkgconfig(bash-completion) >= 2.0
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(systemd)
# We really want a working backend (likely zypp)
Requires: %{name}-backend
Requires: %{name}-branding = %{version}
Suggests: %{name}-backend-zypp
# doc package only contained the website, and got removed in 0.7.4
Obsoletes: %{name}-doc < 0.7.4
# gtk+ 2 module was removed in 0.7.0
Obsoletes: %{name}-gtk-module < 0.7.0
# ruck was removed in 0.6.4, make sure it gets removed
Obsoletes: ruck <= 0.6.3
# the browser-plugin was dropped with version 1.1.0
Obsoletes: %{name}-browser-plugin < 1.1.0
%{?systemd_ordering}
%description
PackageKit is a system designed to make installing and updating
software on your computer easier. The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.
%package backend-zypp
Summary: Zypp backend for the PackageKit installation management software
License: GPL-2.0-or-later
Group: System/Daemons
BuildRequires: libzypp-devel >= 17.31.0
Requires: %{name} = %{version}
Requires: libzypp >= 17.31.0
Provides: %{name}-backend = %{version}
Conflicts: %{name}-backend
Supplements: (%{name} and libzypp)
%description backend-zypp
PackageKit is a system designed to make installing and updating
software on your computer easier. The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.
%if %{with dnf}
%package backend-dnf
Summary: DNF backend for the PackageKit installation management software
License: GPL-2.0-or-later
Group: System/Daemons
Requires: %{name} = %{version}
Provides: %{name}-backend = %{version}
Conflicts: %{name}-backend
Supplements: (%{name} and dnf-data)
Recommends: rpm-repos-openSUSE
Suggests: PackageKit-command-not-found
# Stricter dependency to keep things sane
%requires_ge %(rpm -qf "$(readlink -f %{_libdir}/libdnf.so)")
%description backend-dnf
PackageKit is a system designed to make installing and updating
software on your computer easier. The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.
%endif
%if %{with cnf}
%package command-not-found
Summary: Command Not Found using PackageKit
License: GPL-2.0-or-later
Group: System/Daemons
Obsoletes: command-not-found
Provides: command-not-found
Conflicts: command-not-found
# zypp backend lacks full functionality for this to make sense
Conflicts: %{name}-backend-zypp
%description command-not-found
The improved Command Not Found utility from the PackageKit utilities
suit, making it easier to install the software you need when you
need it.
%endif
%package gstreamer-plugin
Summary: Install GStreamer codecs using PackageKit
License: GPL-2.0-or-later
Group: Productivity/Multimedia/Other
Requires(post): update-alternatives
Requires(postun): update-alternatives
Recommends: %{name} = %{version}
Supplements: (%{name} and gstreamer-plugins-base)
%description gstreamer-plugin
The PackageKit GStreamer plugin allows any Gstreamer application to install
codecs from configured repositories using PackageKit.
%package gtk3-module
Summary: Install fonts automatically using PackageKit
License: GPL-2.0-or-later
Group: System/Libraries
Recommends: %{name} = %{version}
Supplements: (%{name} and gtk3)
%glib2_gsettings_schema_requires
%description gtk3-module
The PackageKit GTK3+ module allows any Pango application to install
fonts from configured repositories using PackageKit.
%package devel
Summary: Header files for development with PackageKit
License: GPL-2.0-or-later
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
Requires: libpackagekit-glib2-devel = %{version}-%{release}
%description devel
This package contains all necessary include files, libraries,
configuration files and development tools (with manual pages) needed to
compile and link applications using PackageKit.
%package -n libpackagekit-glib2-18
Summary: GLib integration of PackageKit
License: LGPL-2.1-or-later
Group: System/Libraries
Recommends: %{name}
Conflicts: %{name} < %{version}
Provides: libpackagekit-glib12 = %{version}
Obsoletes: libpackagekit-glib12 < %{version}
%description -n libpackagekit-glib2-18
PackageKit is a system designed to make installing and updating
software on your computer easier. The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.
%package -n typelib-1_0-PackageKitGlib-1_0
Summary: Introspection bindings for PackageKit's GLib integration
License: LGPL-2.1-or-later
Group: System/Libraries
%description -n typelib-1_0-PackageKitGlib-1_0
PackageKit is a system designed to make installing and updating
software on your computer easier. The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.
This package provides the GObject Introspection bindings for the
PackageKit client library.
%package -n libpackagekit-glib2-devel
Summary: GLib integration of PackageKit
License: LGPL-2.1-or-later
Group: Development/Libraries/GNOME
Requires: libpackagekit-glib2-18 = %{version}
Requires: typelib-1_0-PackageKitGlib-1_0 = %{version}
Provides: libpackagekit-glib12-devel = %{version}
Obsoletes: libpackagekit-glib12-devel < %{version}
%description -n libpackagekit-glib2-devel
PackageKit is a system designed to make installing and updating
software on your computer easier. The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.
%package branding-upstream
Summary: Upstream configuration for the PackageKit installation management software
License: GPL-2.0-or-later
Group: System/Daemons
Requires: %{name} = %{version}
Supplements: (%{name} and branding-upstream)
Conflicts: %{name}-branding
Provides: %{name}-branding = %{version}
BuildArch: noarch
#BRAND: Provide configuration files -
#BRAND: /etc/PackageKit/*
%description branding-upstream
PackageKit is a system designed to make installing and updating
software on your computer easier. The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.
This package provides the upstream default configuration for PackageKit.
%lang_package
%prep
%setup -q
%patch -P 1 -p1
%patch -P 2 -p1
%patch -P 3 -p1
%patch -P 4 -p1
%patch -P 7 -p1
%patch -P 15 -p1
%patch -P 16 -p1
%patch -P 17 -p1
%if 0%{?sle_version} && 0%{?sle_version} < 160000
%patch -P 1001 -p1
%endif
%build
%meson \
-Dgtk_doc=true \
-Dpython_backend=false \
-Dpackaging_backend=%{?with_dnf:dnf,}zypp \
%{?with_dnf:-Ddnf_vendor=opensuse} \
%{!?with_cnf:-Dbash_command_not_found=false} \
%{!?with_offline_updates:-Doffline_update=false} \
-Dcron=false \
-Dlocal_checkout=false \
-Ddbus_sys=%{_datadir}/dbus-1/system.d
%meson_build
%install
%meson_install
%if %{with offline_updates}
# enable packagekit-offline-updates.service here for now, till we
# decide how to do it upstream after the meson conversion:
# https://github.com/hughsie/PackageKit/issues/401
# https://bugzilla.redhat.com/show_bug.cgi?id=1833176
mkdir -p %{buildroot}%{_unitdir}/system-update.target.wants/
ln -sf ../packagekit-offline-update.service %{buildroot}%{_unitdir}/system-update.target.wants/packagekit-offline-update.service
%endif
# Prepare for update-alternatives
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
ln -s -f %{_sysconfdir}/alternatives/gst-install-plugins-helper %{buildroot}/%{_libexecdir}/gst-install-plugins-helper
# Add rcFOO symlinks
mkdir -p %{buildroot}%{_sbindir}
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rcpackagekit
%if %{with offline_updates}
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rcpackagekit-offline-update
%endif
# install transactions.db to another directory so that we can use tmpfiles.d to create a link to it under /var/lib/PackageKit
install -m 0644 %{buildroot}%{_localstatedir}/lib/PackageKit/transactions.db %{buildroot}%{_datadir}/PackageKit/transactions.db
rm %{buildroot}%{_localstatedir}/lib/PackageKit/transactions.db
# install PackageKit.conf in tempfiles.d
install -d -m 0755 %{buildroot}%{_prefix}/lib/tmpfiles.d/
install -m 0644 %{SOURCE3} %{buildroot}%{_prefix}/lib/tmpfiles.d/%{name}.conf
%find_lang %{name} %{?no_lang_C}
%fdupes %{buildroot}/%{_prefix}
%pre
%service_add_pre packagekit.service
%service_add_pre packagekit-background.service packagekit-background.timer
%if %{with offline_updates}
%service_add_pre packagekit-offline-update.service
%endif
%post
%mime_database_post
%service_add_post packagekit.service
%service_add_post packagekit-background.service packagekit-background.timer
%if %{with offline_updates}
%service_add_post packagekit-offline-update.service
%else
if [ -L system-update ]; then
rm system-update
fi
if [ -f var/lib/PackageKit/prepared-update ]; then
rm var/lib/PackageKit/prepared-update
fi
%endif
%tmpfiles_create %_tmpfilesdir/%{name}.conf
%preun
%service_del_preun packagekit.service
%service_del_preun packagekit-background.service packagekit-background.timer
%if %{with offline_updates}
%service_del_preun packagekit-offline-update.service
%endif
%postun
%mime_database_postun
# Do not restart PackageKit on upgrade - it kills the transaction
%service_del_postun_without_restart packagekit.service
%service_del_postun_without_restart packagekit-background.service packagekit-background.timer
%if %{with offline_updates}
%service_del_postun_without_restart packagekit-offline-update.service
%endif
%post gstreamer-plugin
update-alternatives --install %{_libexecdir}/gst-install-plugins-helper gst-install-plugins-helper %{_libexecdir}/pk-gstreamer-install 10
%postun gstreamer-plugin
# Note: we don't use "$1 -eq 0", to avoid issues if the package gets renamed
if [ ! -f %{_libexecdir}/pk-gstreamer-install ]; then
update-alternatives --remove gst-install-plugins-helper %{_libexecdir}/pk-gstreamer-install
fi
%post -n libpackagekit-glib2-18 -p /sbin/ldconfig
%postun -n libpackagekit-glib2-18 -p /sbin/ldconfig
%files lang -f %{name}.lang
%files
%license COPYING
%doc AUTHORS HACKING NEWS README policy/org.freedesktop.packagekit.rules
%dir %{_sysconfdir}/PackageKit
%dir %{_datadir}/PackageKit
%dir %{_datadir}/PackageKit/helpers
%dir %{_libdir}/packagekit-backend
%dir %{_usr}/lib/tmpfiles.d
%{_datadir}/bash-completion/completions/pkcon
%{_datadir}/dbus-1/system.d/org.freedesktop.PackageKit.conf
%{_bindir}/pkcon
%{_bindir}/pkmon
%{_libdir}/packagekit-backend/libpk_backend_dummy.so
%{_libexecdir}/packagekitd
%{_libexecdir}/packagekit-direct
%{_datadir}/dbus-1/interfaces/org.freedesktop.PackageKit.Transaction.xml
%{_datadir}/dbus-1/interfaces/org.freedesktop.PackageKit.xml
%{_datadir}/PackageKit/pk-upgrade-distro.sh
%{_datadir}/PackageKit/packagekit-background.sh
%verify(not md5 size mtime) %{_datadir}/PackageKit/transactions.db
%{_datadir}/polkit-1/actions/org.freedesktop.packagekit.policy
%{_datadir}/dbus-1/system-services/*
%{_datadir}/metainfo/org.freedesktop.packagekit.metainfo.xml
%{_unitdir}/packagekit.service
%{_unitdir}/packagekit-background.service
%{_unitdir}/packagekit-background.timer
%{_sbindir}/rcpackagekit
%{_mandir}/man?/*%{ext_man}
%{_tmpfilesdir}/PackageKit.conf
%if %{with offline_updates}
%{_libexecdir}/pk-offline-update
%{_unitdir}/packagekit-offline-update.service
%dir %{_unitdir}/system-update.target.wants
%{_unitdir}/system-update.target.wants/packagekit-offline-update.service
%{_sbindir}/rcpackagekit-offline-update
%endif
%ghost %dir %{_localstatedir}/lib/PackageKit
%ghost %dir %{_localstatedir}/cache/PackageKit
%ghost %{_localstatedir}/lib/PackageKit/transactions.db
%files backend-zypp
%{_libdir}/packagekit-backend/libpk_backend_zypp.so
%if %{with dnf}
%files backend-dnf
%{_libdir}/packagekit-backend/libpk_backend_dnf.so
%{_libexecdir}/packagekit-dnf-refresh-repo
%{python3_sitelib}/dnf-plugins/
%endif
%if %{with cnf}
%files command-not-found
%{_sysconfdir}/profile.d/PackageKit.sh
%{_libexecdir}/pk-command-not-found
%config(noreplace) %{_sysconfdir}/PackageKit/CommandNotFound.conf
%endif
%files gstreamer-plugin
%ghost %{_sysconfdir}/alternatives/gst-install-plugins-helper
%{_libexecdir}/gst-install-plugins-helper
%{_libexecdir}/pk-gstreamer-install
%files gtk3-module
%dir %{_libdir}/gnome-settings-daemon-3.0
%dir %{_libdir}/gnome-settings-daemon-3.0/gtk-modules
%{_libdir}/gnome-settings-daemon-3.0/gtk-modules/pk-gtk-module.desktop
%{_libdir}/gtk-3.0/modules/*
%files devel
%doc %{_datadir}/gtk-doc/html/PackageKit
%dir %{_includedir}/PackageKit
# Test backends are not useful, except for developers
%{_libdir}/packagekit-backend/libpk_backend_test_fail.so
%{_libdir}/packagekit-backend/libpk_backend_test_nop.so
%{_libdir}/packagekit-backend/libpk_backend_test_spawn.so
%{_libdir}/packagekit-backend/libpk_backend_test_succeed.so
%{_libdir}/packagekit-backend/libpk_backend_test_thread.so
%dir %{_datadir}/PackageKit/helpers/test_spawn
%{_datadir}/PackageKit/helpers/test_spawn/search-name.sh
%files -n libpackagekit-glib2-18
%license lib/packagekit-glib2/COPYING
%{_libdir}/libpackagekit-glib2.so.*
%files -n typelib-1_0-PackageKitGlib-1_0
%{_libdir}/girepository-1.0/PackageKitGlib-1.0.typelib
%files -n libpackagekit-glib2-devel
%{_libdir}/libpackagekit-glib2.so
%{_libdir}/pkgconfig/packagekit-glib2.pc
%dir %{_includedir}/PackageKit
%{_includedir}/PackageKit/packagekit-glib2/
%{_datadir}/gir-1.0/PackageKitGlib-1.0.gir
%dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/packagekit-glib2.vapi
%{_datadir}/vala/vapi/packagekit-glib2.deps
%files branding-upstream
%config(noreplace) %{_sysconfdir}/PackageKit/PackageKit.conf
# This file should not be touched by users/admins, so we can replace it
%{_sysconfdir}/PackageKit/Vendor.conf
%changelog

3
PackageKit.tmpfiles Normal file
View File

@ -0,0 +1,3 @@
d /var/cache/PackageKit 0755 root root -
d /var/lib/PackageKit/ 0755 root root -
L+ /var/lib/PackageKit/transactions.db - - - - ../../../usr/share/PackageKit/transactions.db