| |
@@ -0,0 +1,104 @@
|
| |
+ From 4cef9aa4fb40f39b2b3a0d4a1f3ee87aaef9e10c Mon Sep 17 00:00:00 2001
|
| |
+ From: Neal Gompa <ngompa13@gmail.com>
|
| |
+ Date: Tue, 28 Apr 2020 22:00:04 -0400
|
| |
+ Subject: [PATCH] dnf: Load all the repos and vars directories
|
| |
+
|
| |
+ Historically, the backend has internally determined its setup with
|
| |
+ static values. However, we generally want PackageKit to load all
|
| |
+ repositories defined in all repository directories that DNF normally
|
| |
+ searches, since it is not guaranteed to be in /etc/yum.repos.d and
|
| |
+ DNF supports multiple repository configuration paths.
|
| |
+
|
| |
+ We also need the vars to be loaded so that repository definitions
|
| |
+ that rely on more than the built-in vars will work.
|
| |
+
|
| |
+ This bumps our dependency for libdnf to 0.43.1, as we're using APIs
|
| |
+ introduced in this release. This required bumping the CI environment
|
| |
+ to Fedora 31.
|
| |
+
|
| |
+ (cherry picked from commit ed73aa6317595d2c2f1bda7990cbd64efb133f84)
|
| |
+ ---
|
| |
+ backends/dnf/pk-backend-dnf.c | 27 ++++++++++++++++++++++++---
|
| |
+ configure.ac | 2 +-
|
| |
+ tests/ci/Dockerfile-fedora | 2 +-
|
| |
+ 3 files changed, 26 insertions(+), 5 deletions(-)
|
| |
+
|
| |
+ diff --git a/backends/dnf/pk-backend-dnf.c b/backends/dnf/pk-backend-dnf.c
|
| |
+ index 503a6eb0a..6ce204c24 100644
|
| |
+ --- a/backends/dnf/pk-backend-dnf.c
|
| |
+ +++ b/backends/dnf/pk-backend-dnf.c
|
| |
+ @@ -137,11 +137,12 @@ pk_backend_context_invalidate_cb (DnfContext *context,
|
| |
+ static gboolean
|
| |
+ pk_backend_setup_dnf_context (DnfContext *context, GKeyFile *conf, const gchar *release_ver, GError **error)
|
| |
+ {
|
| |
+ + const gchar * const *repo_dirs;
|
| |
+ + const gchar * const *var_dirs;
|
| |
+ gboolean keep_cache;
|
| |
+ g_autofree gchar *cache_dir = NULL;
|
| |
+ g_autofree gchar *destdir = NULL;
|
| |
+ g_autofree gchar *lock_dir = NULL;
|
| |
+ - g_autofree gchar *repo_dir = NULL;
|
| |
+ g_autofree gchar *solv_dir = NULL;
|
| |
+
|
| |
+ destdir = g_key_file_get_string (conf, "Daemon", "DestDir", NULL);
|
| |
+ @@ -152,12 +153,32 @@ pk_backend_setup_dnf_context (DnfContext *context, GKeyFile *conf, const gchar *
|
| |
+ dnf_context_set_cache_dir (context, cache_dir);
|
| |
+ solv_dir = g_build_filename (destdir, "/var/cache/PackageKit", release_ver, "hawkey", NULL);
|
| |
+ dnf_context_set_solv_dir (context, solv_dir);
|
| |
+ - repo_dir = g_build_filename (destdir, "/etc/yum.repos.d", NULL);
|
| |
+ - dnf_context_set_repo_dir (context, repo_dir);
|
| |
+ lock_dir = g_build_filename (destdir, "/var/run", NULL);
|
| |
+ dnf_context_set_lock_dir (context, lock_dir);
|
| |
+ dnf_context_set_rpm_verbosity (context, "info");
|
| |
+
|
| |
+ + /* Add prefix to repo directories */
|
| |
+ + repo_dirs = dnf_context_get_repos_dir (context);
|
| |
+ + if (repo_dirs != NULL && repo_dirs[0] != NULL) {
|
| |
+ + g_auto(GStrv) full_repo_dirs = NULL;
|
| |
+ + guint len = g_strv_length ((gchar **)repo_dirs);
|
| |
+ + full_repo_dirs = g_new0 (gchar*, len + 1);
|
| |
+ + for (guint i = 0; i < len; i++)
|
| |
+ + full_repo_dirs[i] = g_build_filename (destdir, repo_dirs[i], NULL);
|
| |
+ + dnf_context_set_repos_dir (context, (const gchar * const*)full_repo_dirs);
|
| |
+ + }
|
| |
+ +
|
| |
+ + /* Add prefix to var directories */
|
| |
+ + var_dirs = dnf_context_get_vars_dir (context);
|
| |
+ + if (var_dirs != NULL && var_dirs[0] != NULL) {
|
| |
+ + g_auto(GStrv) full_var_dirs = NULL;
|
| |
+ + guint len = g_strv_length ((gchar **)var_dirs);
|
| |
+ + full_var_dirs = g_new0 (gchar*, len + 1);
|
| |
+ + for (guint i = 0; i < len; i++)
|
| |
+ + full_var_dirs[i] = g_build_filename (destdir, var_dirs[i], NULL);
|
| |
+ + dnf_context_set_vars_dir (context, (const gchar * const*)full_var_dirs);
|
| |
+ + }
|
| |
+ +
|
| |
+ /* use this initial data if repos are not present */
|
| |
+ dnf_context_set_vendor_cache_dir (context, "/usr/share/PackageKit/metadata");
|
| |
+ dnf_context_set_vendor_solv_dir (context, "/usr/share/PackageKit/hawkey");
|
| |
+ diff --git a/configure.ac b/configure.ac
|
| |
+ index 3da547561..f0696864a 100644
|
| |
+ --- a/configure.ac
|
| |
+ +++ b/configure.ac
|
| |
+ @@ -424,7 +424,7 @@ AC_SUBST(DBUS_SYS_DIR)
|
| |
+ AC_SUBST(DBUS_SERVICES_DIR)
|
| |
+
|
| |
+ if test x$enable_dnf = xyes; then
|
| |
+ - PKG_CHECK_MODULES(DNF, appstream-glib libdnf >= 0.22.0 rpm)
|
| |
+ + PKG_CHECK_MODULES(DNF, appstream-glib libdnf >= 0.43.1 rpm)
|
| |
+ AC_ARG_WITH(dnf-vendor,
|
| |
+ [AS_HELP_STRING([--with-dnf-vendor=<vendor>],[select a vendor configuration (fedora, mageia, openmandriva, rosa; default is fedora)])])
|
| |
+ if test "$with_dnf_vendor" = "fedora" -o "$with_dnf_vendor" = "mageia" -o "$with_dnf_vendor" = "openmandriva" -o "$with_dnf_vendor" = "rosa"; then
|
| |
+ diff --git a/tests/ci/Dockerfile-fedora b/tests/ci/Dockerfile-fedora
|
| |
+ index c45a11217..112790e58 100644
|
| |
+ --- a/tests/ci/Dockerfile-fedora
|
| |
+ +++ b/tests/ci/Dockerfile-fedora
|
| |
+ @@ -1,4 +1,4 @@
|
| |
+ -FROM fedora:29
|
| |
+ +FROM fedora:31
|
| |
+
|
| |
+ RUN dnf -y update
|
| |
+ RUN dnf -y install dnf-plugins-core libdnf-devel redhat-rpm-config autoconf-archive gcc make
|
| |
+ --
|
| |
+ 2.26.2
|
| |
+
|
| |
Resolves: rhbz#1847124