packages/packagekit/0001-alpm-add-compatibility-with-libalpm-14.patch

75 lines
2.6 KiB
Diff

From 40728db86389fa1254258ae60b462a9f8acf2786 Mon Sep 17 00:00:00 2001
From: Jelle van der Waa <jelle@archlinux.org>
Date: Fri, 8 Mar 2024 18:06:46 +0100
Subject: [PATCH] alpm: add compatibility with libalpm 14
In libalpm alpm_conflict_t package struct members are now of type
alpm_pkg_t instead of char*.
Don't crash on the new directive CacheServer.
---
backends/alpm/meson.build | 2 +-
backends/alpm/pk-alpm-config.c | 5 +++++
backends/alpm/pk-alpm-transaction.c | 15 +++++++++------
3 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/backends/alpm/meson.build b/backends/alpm/meson.build
index eb4d5b373..50301466a 100644
--- a/backends/alpm/meson.build
+++ b/backends/alpm/meson.build
@@ -1,4 +1,4 @@
-alpm_dep = dependency('libalpm', version: '>=13.0.0')
+alpm_dep = dependency('libalpm', version: '>=14.0.0')
shared_module(
'pk_backend_alpm',
diff --git a/backends/alpm/pk-alpm-config.c b/backends/alpm/pk-alpm-config.c
index c96b4e167..3954a45fb 100644
--- a/backends/alpm/pk-alpm-config.c
+++ b/backends/alpm/pk-alpm-config.c
@@ -615,6 +615,11 @@ pk_alpm_config_parse (PkAlpmConfig *config, const gchar *filename,
continue;
}
+ if (g_strcmp0 (key, "CacheServer") == 0 && str != NULL) {
+ /* Ignore "CacheServer" key instead of crashing */
+ continue;
+ }
+
/* report errors from above */
g_set_error (&e, PK_ALPM_ERROR, PK_ALPM_ERR_CONFIG_INVALID,
"unrecognised directive '%s'", key);
diff --git a/backends/alpm/pk-alpm-transaction.c b/backends/alpm/pk-alpm-transaction.c
index 58f996067..bc1273375 100644
--- a/backends/alpm/pk-alpm-transaction.c
+++ b/backends/alpm/pk-alpm-transaction.c
@@ -865,16 +865,19 @@ pk_alpm_conflict_build_list (const alpm_list_t *i)
alpm_conflict_t *conflict = (alpm_conflict_t *) i->data;
alpm_depend_t *depend = conflict->reason;
- if (g_strcmp0 (conflict->package1, depend->name) == 0 ||
- g_strcmp0 (conflict->package2, depend->name) == 0) {
+ const char *package_name1 = alpm_pkg_get_name (conflict->package1);
+ const char *package_name2 = alpm_pkg_get_name (conflict->package2);
+
+ if (g_strcmp0 (package_name1, depend->name) == 0 ||
+ g_strcmp0 (package_name2, depend->name) == 0) {
g_string_append_printf (list, "%s <-> %s, ",
- conflict->package1,
- conflict->package2);
+ package_name1,
+ package_name2);
} else {
char *reason = alpm_dep_compute_string (depend);
g_string_append_printf (list, "%s <-> %s (%s), ",
- conflict->package1,
- conflict->package2, reason);
+ package_name1,
+ package_name2, reason);
free (reason);
}
}
--
2.44.0