From f7e46bb5a99a28e5b8615f2fe54cc1cc1b181b68 Mon Sep 17 00:00:00 2001 From: Kate Date: Thu, 2 Sep 2021 12:07:02 +0100 Subject: [PATCH] Fallback on dnf if yum does not exist on RHEL-based systems --- src/state/opamSysInteract.ml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/state/opamSysInteract.ml b/src/state/opamSysInteract.ml index d3ed408a504..8c1c6666251 100644 --- a/src/state/opamSysInteract.ml +++ b/src/state/opamSysInteract.ml @@ -130,6 +130,14 @@ let family = ) in fun () -> Lazy.force family +let yum_cmd = lazy begin + if OpamSystem.resolve_command "yum" <> None then + "yum" + else if OpamSystem.resolve_command "dnf" <> None then + "dnf" + else + failwith "Could not find either yum or dnf to install external dependencies" +end let packages_status packages = let (+++) pkg set = OpamSysPkg.Set.add (OpamSysPkg.of_string pkg) set in @@ -632,11 +640,11 @@ let install_packages_commands_t sys_packages = let epel_release = "epel-release" in let install_epel rest = if List.mem epel_release packages then - ["yum", "install"::yes ["-y"] [epel_release]] @ rest + [Lazy.force yum_cmd, "install"::yes ["-y"] [epel_release]] @ rest else rest in install_epel - ["yum", "install"::yes ["-y"] + [Lazy.force yum_cmd, "install"::yes ["-y"] (OpamStd.String.Set.of_list packages |> OpamStd.String.Set.remove epel_release |> OpamStd.String.Set.elements); @@ -701,7 +709,7 @@ let update () = match family () with | Alpine -> Some ("apk", ["update"]) | Arch -> Some ("pacman", ["-Sy"]) - | Centos -> Some ("yum", ["makecache"]) + | Centos -> Some (Lazy.force yum_cmd, ["makecache"]) | Debian -> Some ("apt-get", ["update"]) | Gentoo -> Some ("emerge", ["--sync"]) | Homebrew -> Some ("brew", ["update"])