|
|
27e02e0 |
From 92d5d7e8c27088fa3fb8e5e6e9c5b8d3209053d6 Mon Sep 17 00:00:00 2001
|
|
|
27e02e0 |
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
|
27e02e0 |
Date: Tue, 30 May 2023 09:12:14 +0100
|
|
|
27e02e0 |
Subject: [PATCH 4/4] rpm: Detect dnf5 and omit missing options
|
|
|
27e02e0 |
|
|
|
27e02e0 |
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2209412
|
|
|
27e02e0 |
---
|
|
|
27e02e0 |
src/ph_rpm.ml | 23 +++++++++++++++++++++--
|
|
|
27e02e0 |
1 file changed, 21 insertions(+), 2 deletions(-)
|
|
|
27e02e0 |
|
|
|
27e02e0 |
diff --git a/src/ph_rpm.ml b/src/ph_rpm.ml
|
|
|
27e02e0 |
index 2c199c1..3e803c6 100644
|
|
|
27e02e0 |
--- a/src/ph_rpm.ml
|
|
|
27e02e0 |
+++ b/src/ph_rpm.ml
|
|
|
27e02e0 |
@@ -482,19 +482,38 @@ and download_all_packages_with_dnf pkgs dir tdir =
|
|
|
27e02e0 |
(* Old dnf didn't create the destdir directory, newer versions do. *)
|
|
|
27e02e0 |
mkdir tdir 0o700;
|
|
|
27e02e0 |
|
|
|
27e02e0 |
+ (* dnf5 lacks various options so we have to detect it:
|
|
|
27e02e0 |
+ * https://github.com/rpm-software-management/dnf5/issues/580
|
|
|
27e02e0 |
+ * https://github.com/rpm-software-management/dnf5/issues/581
|
|
|
27e02e0 |
+ *)
|
|
|
27e02e0 |
+ let is_dnf5 = is_dnf5 () in
|
|
|
27e02e0 |
+ let debug_quiet_option =
|
|
|
27e02e0 |
+ if !settings.debug < 1 then " -q"
|
|
|
27e02e0 |
+ else if not is_dnf5 then " -v"
|
|
|
27e02e0 |
+ else "" in
|
|
|
27e02e0 |
+
|
|
|
27e02e0 |
let rpms = pkgs_as_NA_rpms pkgs in
|
|
|
27e02e0 |
|
|
|
27e02e0 |
let cmd =
|
|
|
27e02e0 |
- sprintf "%s download%s%s --destdir=%s --disableexcludes=all %s"
|
|
|
27e02e0 |
+ sprintf "%s download%s%s%s --destdir=%s %s"
|
|
|
27e02e0 |
Config.dnf
|
|
|
27e02e0 |
- (if !settings.debug >= 1 then " -v" else " -q")
|
|
|
27e02e0 |
+ debug_quiet_option
|
|
|
27e02e0 |
(match !settings.packager_config with
|
|
|
27e02e0 |
| None -> ""
|
|
|
27e02e0 |
| Some filename -> sprintf " -c %s" (quote filename))
|
|
|
27e02e0 |
+ (if not is_dnf5 then " --disableexcludes=all" else "")
|
|
|
27e02e0 |
(quote tdir)
|
|
|
27e02e0 |
(quoted_list rpms) in
|
|
|
27e02e0 |
run_command cmd
|
|
|
27e02e0 |
|
|
|
27e02e0 |
+and is_dnf5 () =
|
|
|
27e02e0 |
+ let cmd = sprintf "%s --version" Config.dnf in
|
|
|
27e02e0 |
+ let lines = run_command_get_lines cmd in
|
|
|
27e02e0 |
+ match lines with
|
|
|
27e02e0 |
+ | [] -> error "rpm: no output from '%s' command" cmd
|
|
|
27e02e0 |
+ | line :: _ when find line "version 5" >= 0 -> true
|
|
|
27e02e0 |
+ | _ -> false
|
|
|
27e02e0 |
+
|
|
|
27e02e0 |
and pkgs_as_NA_rpms pkgs =
|
|
|
27e02e0 |
let rpms = List.map rpm_of_pkg (PackageSet.elements pkgs) in
|
|
|
27e02e0 |
List.map (
|
|
|
27e02e0 |
--
|
|
|
27e02e0 |
2.40.1
|
|
|
27e02e0 |
|