Index: supermin-5.1.18/src/os_release.ml =================================================================== --- supermin-5.1.18.orig/src/os_release.ml +++ supermin-5.1.18/src/os_release.ml @@ -29,6 +29,7 @@ let split sep str = type os_release = { id : string; + id_like : string list; } let data = ref None @@ -52,6 +53,7 @@ and parse () = let lines = List.filter (fun s -> s.[0] <> '#') lines in let id = ref "" in + let id_like = ref [] in List.iter ( fun line -> @@ -65,10 +67,11 @@ and parse () = else value in match field with | "ID" -> id := value + | "ID_LIKE" -> id_like := string_split " " value | _ -> () ) lines; - Some { id = !id; } + Some { id = !id; id_like = !id_like } ) else None @@ -76,3 +79,8 @@ let get_id () = match get_data () with | None -> "" | Some d -> d.id + +let get_id_like () = + match get_data () with + | None -> [] + | Some d -> d.id_like Index: supermin-5.1.18/src/os_release.mli =================================================================== --- supermin-5.1.18.orig/src/os_release.mli +++ supermin-5.1.18/src/os_release.mli @@ -24,3 +24,10 @@ val get_id : unit -> string An empty string is returned if the file does not exist or cannot be read. *) + +val get_id_like : unit -> string list +(** Get the value of the "ID_LIKE" field from the /etc/os-release file + on the current system. + + An empty list is returned if the file does not exist, cannot + be read or the ID_LIKE field is not defined. *) Index: supermin-5.1.18/src/ph_rpm.ml =================================================================== --- supermin-5.1.18.orig/src/ph_rpm.ml +++ supermin-5.1.18/src/ph_rpm.ml @@ -41,6 +41,7 @@ let opensuse_detect () = Config.rpm <> "no" && Config.rpm2cpio <> "no" && rpm_is_available () && Config.zypper <> "no" && (List.mem (Os_release.get_id ()) [ "opensuse"; "sled"; "sles" ] || + List.mem "suse" (Os_release.get_id_like ()) || try (stat "/etc/SuSE-release").st_kind = S_REG with Unix_error _ -> false) let mageia_detect () =