[Libguestfs] [PATCH 2/2] Use os-release to detect the distro
Cedric Bosdonnat
cbosdonnat at suse.com
Wed Aug 31 13:21:23 UTC 2016
On Wed, 2016-08-31 at 15:05 +0200, Pino Toscano wrote:
> Check the ID field in /etc/os-release on the current system, before
> checking for the other old-style release-/version-like files in /etc.
> Some distributions (openSUSE Thumbleweed) are starting to remove them,
> breaking the supermin detection.
> ---
> src/dpkg.ml | 3 ++-
> src/pacman.ml | 5 +++--
> src/rpm.ml | 15 +++++++++------
> 3 files changed, 14 insertions(+), 9 deletions(-)
>
> diff --git a/src/dpkg.ml b/src/dpkg.ml
> index 70acfa2..1e785de 100644
> --- a/src/dpkg.ml
> +++ b/src/dpkg.ml
> @@ -28,7 +28,8 @@ let dpkg_detect () =
> Config.dpkg_query <> "no" &&
> Config.dpkg_divert <> "no" &&
> Config.apt_get <> "no" &&
> - try (stat "/etc/debian_version").st_kind = S_REG with Unix_error _ -> false
> + (List.mem (Os_release.get_id ()) [ "debian"; "ubuntu" ] ||
> + try (stat "/etc/debian_version").st_kind = S_REG with Unix_error _ -> false)
>
> let dpkg_primary_arch = ref ""
> let settings = ref no_settings
> diff --git a/src/pacman.ml b/src/pacman.ml
> index 3340fa6..c35668a 100644
> --- a/src/pacman.ml
> +++ b/src/pacman.ml
> @@ -24,8 +24,9 @@ open Package_handler
>
> let pacman_detect () =
> Config.pacman <> "no" && Config.fakeroot <> "no" &&
> - (stat "/etc/arch-release").st_kind = S_REG &&
> - Config.pacman_g2 = "no" (* not Frugalware with pacman-g2 *)
> + (Os_release.get_id () = "arch" ||
> + ((stat "/etc/arch-release").st_kind = S_REG &&
> + Config.pacman_g2 = "no")) (* not Frugalware with pacman-g2 *)
>
> let settings = ref no_settings
>
> diff --git a/src/rpm.ml b/src/rpm.ml
> index a5dc67a..e409e37 100644
> --- a/src/rpm.ml
> +++ b/src/rpm.ml
> @@ -31,21 +31,24 @@ let stringset_of_list pkgs =
> let fedora_detect () =
> Config.rpm <> "no" && Config.rpm2cpio <> "no" && rpm_is_available () &&
> (Config.yumdownloader <> "no" || Config.dnf <> "no") &&
> - try
> - (stat "/etc/redhat-release").st_kind = S_REG ||
> - (stat "/etc/fedora-release").st_kind = S_REG
> - with Unix_error _ -> false
> + (List.mem (Os_release.get_id ()) [ "fedora"; "rhel"; "centos" ] ||
> + try
> + (stat "/etc/redhat-release").st_kind = S_REG ||
> + (stat "/etc/fedora-release").st_kind = S_REG
> + with Unix_error _ -> false)
>
> let opensuse_detect () =
> Config.rpm <> "no" && Config.rpm2cpio <> "no" && rpm_is_available () &&
> Config.zypper <> "no" &&
> - try (stat "/etc/SuSE-release").st_kind = S_REG with Unix_error _ -> false
> + (List.mem (Os_release.get_id ()) [ "opensuse"; "sled"; "sles" ] ||
> + try (stat "/etc/SuSE-release").st_kind = S_REG with Unix_error _ -> false)
>
> let mageia_detect () =
> Config.rpm <> "no" && Config.rpm2cpio <> "no" && rpm_is_available () &&
> Config.urpmi <> "no" &&
> Config.fakeroot <> "no" &&
> - try (stat "/etc/mageia-release").st_kind = S_REG with Unix_error _ -> false
> + (Os_release.get_id () = "mageia" ||
> + try (stat "/etc/mageia-release").st_kind = S_REG with Unix_error _ -> false)
>
> let ibm_powerkvm_detect () =
> Config.rpm <> "no" && Config.rpm2cpio <> "no" && rpm_is_available () &&
Looks good to me, at least for the openSUSE / SLE parts.
--
Cedric
More information about the Libguestfs
mailing list