Blame SOURCES/0001-dnf-Load-all-the-repos-and-vars-directories.patch

ccbcd8
From fe460068335b4cfe89197b42b1b7e30b84e8ea07 Mon Sep 17 00:00:00 2001
ccbcd8
From: Neal Gompa <ngompa13@gmail.com>
ccbcd8
Date: Tue, 28 Apr 2020 22:00:04 -0400
ccbcd8
Subject: [PATCH] dnf: Load all the repos and vars directories
ccbcd8
ccbcd8
Historically, the backend has internally determined its setup with
ccbcd8
static values. However, we generally want PackageKit to load all
ccbcd8
repositories defined in all repository directories that DNF normally
ccbcd8
searches, since it is not guaranteed to be in /etc/yum.repos.d and
ccbcd8
DNF supports multiple repository configuration paths.
ccbcd8
ccbcd8
We also need the vars to be loaded so that repository definitions
ccbcd8
that rely on more than the built-in vars will work.
ccbcd8
ccbcd8
This bumps our dependency for libdnf to 0.43.1, as we're using APIs
ccbcd8
introduced in this release.
ccbcd8
ccbcd8
(Backport note: to avoid regenerating autofoo, the configure.ac change
ccbcd8
has been stripped.)
ccbcd8
ccbcd8
(cherry picked from commit ed73aa6317595d2c2f1bda7990cbd64efb133f84)
ccbcd8
---
ccbcd8
 backends/dnf/pk-backend-dnf.c | 27 ++++++++++++++++++++++++---
ccbcd8
 1 files changed, 24 insertions(+), 3 deletions(-)
ccbcd8
ccbcd8
diff --git a/backends/dnf/pk-backend-dnf.c b/backends/dnf/pk-backend-dnf.c
ccbcd8
index 779896c2d..7fcdaddbe 100644
ccbcd8
--- a/backends/dnf/pk-backend-dnf.c
ccbcd8
+++ b/backends/dnf/pk-backend-dnf.c
ccbcd8
@@ -137,11 +137,12 @@ pk_backend_context_invalidate_cb (DnfContext *context,
ccbcd8
 static gboolean
ccbcd8
 pk_backend_setup_dnf_context (DnfContext *context, GKeyFile *conf, const gchar *release_ver, GError **error)
ccbcd8
 {
ccbcd8
+	const gchar * const *repo_dirs;
ccbcd8
+	const gchar * const *var_dirs;
ccbcd8
 	gboolean keep_cache;
ccbcd8
 	g_autofree gchar *cache_dir = NULL;
ccbcd8
 	g_autofree gchar *destdir = NULL;
ccbcd8
 	g_autofree gchar *lock_dir = NULL;
ccbcd8
-	g_autofree gchar *repo_dir = NULL;
ccbcd8
 	g_autofree gchar *solv_dir = NULL;
ccbcd8
 
ccbcd8
 	destdir = g_key_file_get_string (conf, "Daemon", "DestDir", NULL);
ccbcd8
@@ -152,12 +153,32 @@ pk_backend_setup_dnf_context (DnfContext *context, GKeyFile *conf, const gchar *
ccbcd8
 	dnf_context_set_cache_dir (context, cache_dir);
ccbcd8
 	solv_dir = g_build_filename (destdir, "/var/cache/PackageKit", release_ver, "hawkey", NULL);
ccbcd8
 	dnf_context_set_solv_dir (context, solv_dir);
ccbcd8
-	repo_dir = g_build_filename (destdir, "/etc/yum.repos.d", NULL);
ccbcd8
-	dnf_context_set_repo_dir (context, repo_dir);
ccbcd8
 	lock_dir = g_build_filename (destdir, "/var/run", NULL);
ccbcd8
 	dnf_context_set_lock_dir (context, lock_dir);
ccbcd8
 	dnf_context_set_rpm_verbosity (context, "info");
ccbcd8
 
ccbcd8
+	/* Add prefix to repo directories */
ccbcd8
+	repo_dirs = dnf_context_get_repos_dir (context);
ccbcd8
+	if (repo_dirs != NULL && repo_dirs[0] != NULL) {
ccbcd8
+		g_auto(GStrv) full_repo_dirs = NULL;
ccbcd8
+		guint len = g_strv_length ((gchar **)repo_dirs);
ccbcd8
+		full_repo_dirs = g_new0 (gchar*, len + 1);
ccbcd8
+		for (guint i = 0; i < len; i++)
ccbcd8
+			full_repo_dirs[i] = g_build_filename (destdir, repo_dirs[i], NULL);
ccbcd8
+		dnf_context_set_repos_dir (context, (const gchar * const*)full_repo_dirs);
ccbcd8
+	}
ccbcd8
+
ccbcd8
+	/* Add prefix to var directories */
ccbcd8
+	var_dirs = dnf_context_get_vars_dir (context);
ccbcd8
+	if (var_dirs != NULL && var_dirs[0] != NULL) {
ccbcd8
+		g_auto(GStrv) full_var_dirs = NULL;
ccbcd8
+		guint len = g_strv_length ((gchar **)var_dirs);
ccbcd8
+		full_var_dirs = g_new0 (gchar*, len + 1);
ccbcd8
+		for (guint i = 0; i < len; i++)
ccbcd8
+			full_var_dirs[i] = g_build_filename (destdir, var_dirs[i], NULL);
ccbcd8
+		dnf_context_set_vars_dir (context, (const gchar * const*)full_var_dirs);
ccbcd8
+	}
ccbcd8
+
ccbcd8
 	/* use this initial data if repos are not present */
ccbcd8
 	dnf_context_set_vendor_cache_dir (context, "/usr/share/PackageKit/metadata");
ccbcd8
 	dnf_context_set_vendor_solv_dir (context, "/usr/share/PackageKit/hawkey");
ccbcd8
-- 
ccbcd8
2.32.0
ccbcd8