diff --git a/daemon/inspect_fs.ml b/daemon/inspect_fs.ml index 93a9f4732..f639bf3b9 100644 --- a/daemon/inspect_fs.ml +++ b/daemon/inspect_fs.ml @@ -253,6 +253,7 @@ and check_package_format { distro } = | Some DISTRO_MAGEIA | Some DISTRO_MANDRIVA | Some DISTRO_MEEGO + | Some DISTRO_NEOKYLIN | Some DISTRO_OPENSUSE | Some DISTRO_ORACLE_LINUX | Some DISTRO_REDHAT_BASED @@ -307,6 +308,12 @@ and check_package_management { distro; version } = (* Probably parsing the release file failed, see RHBZ#1332025. *) None + | Some DISTRO_NEOKYLIN -> + (* We don't have access to NeoKylin for testing, but it is + * supposed to be a Fedora derivative. + *) + Some PACKAGE_MANAGEMENT_DNF + | Some DISTRO_CENTOS | Some DISTRO_ORACLE_LINUX | Some DISTRO_REDHAT_BASED diff --git a/daemon/inspect_fs_unix.ml b/daemon/inspect_fs_unix.ml index ce48942bd..3b57899cc 100644 --- a/daemon/inspect_fs_unix.ml +++ b/daemon/inspect_fs_unix.ml @@ -53,6 +53,7 @@ let re_minix = PCRE.compile "^(\\d+)\\.(\\d+)(\\.(\\d+))?" let re_openbsd = PCRE.compile "^OpenBSD (\\d+|\\?)\\.(\\d+|\\?)" let re_frugalware = PCRE.compile "Frugalware (\\d+)\\.(\\d+)" let re_pldlinux = PCRE.compile "(\\d+)\\.(\\d+) PLD Linux" +let re_neokylin_version = PCRE.compile "^V(\\d+)Update(\\d+)$" let arch_binaries = [ "/bin/bash"; "/bin/ls"; "/bin/echo"; "/bin/rm"; "/bin/sh" ] @@ -94,7 +95,7 @@ let rec parse_os_release release_file data = else if key = "PRETTY_NAME" then data.product_name <- Some value else if key = "VERSION_ID" then - parse_version_from_major_minor value data + parse_os_release_version_id value data ) ) lines; @@ -124,6 +125,18 @@ let rec parse_os_release release_file data = | _ -> true ) +and parse_os_release_version_id value data = + (* NeoKylin uses a non-standard format in the VERSION_ID + * field (RHBZ#1476081). + *) + if PCRE.matches re_neokylin_version value then ( + let major = int_of_string (PCRE.sub 1) + and minor = int_of_string (PCRE.sub 2) in + data.version <- Some (major, minor) + ) + else + parse_version_from_major_minor value data + (* ID="fedora" => Some DISTRO_FEDORA *) and distro_of_os_release_id = function | "alpine" -> Some DISTRO_ALPINE_LINUX @@ -135,6 +148,7 @@ and distro_of_os_release_id = function | "fedora" -> Some DISTRO_FEDORA | "frugalware" -> Some DISTRO_FRUGALWARE | "mageia" -> Some DISTRO_MAGEIA + | "neokylin" -> Some DISTRO_NEOKYLIN | "opensuse" -> Some DISTRO_OPENSUSE | "pld" -> Some DISTRO_PLD_LINUX | "rhel" -> Some DISTRO_RHEL diff --git a/daemon/inspect_types.ml b/daemon/inspect_types.ml index a687ea08c..9851b7864 100644 --- a/daemon/inspect_types.ml +++ b/daemon/inspect_types.ml @@ -82,6 +82,7 @@ and distro = | DISTRO_MAGEIA | DISTRO_MANDRIVA | DISTRO_MEEGO + | DISTRO_NEOKYLIN | DISTRO_NETBSD | DISTRO_OPENBSD | DISTRO_OPENSUSE @@ -210,6 +211,7 @@ and string_of_distro = function | DISTRO_MAGEIA -> "mageia" | DISTRO_MANDRIVA -> "mandriva" | DISTRO_MEEGO -> "meego" + | DISTRO_NEOKYLIN -> "neokylin" | DISTRO_NETBSD -> "netbsd" | DISTRO_OPENBSD -> "openbsd" | DISTRO_OPENSUSE -> "opensuse" diff --git a/daemon/inspect_types.mli b/daemon/inspect_types.mli index 5c2151e14..d873df8c9 100644 --- a/daemon/inspect_types.mli +++ b/daemon/inspect_types.mli @@ -89,6 +89,7 @@ and distro = | DISTRO_MAGEIA | DISTRO_MANDRIVA | DISTRO_MEEGO + | DISTRO_NEOKYLIN | DISTRO_NETBSD | DISTRO_OPENBSD | DISTRO_OPENSUSE diff --git a/generator/actions_inspection.ml b/generator/actions_inspection.ml index d67d00833..675a7e2e2 100644 --- a/generator/actions_inspection.ml +++ b/generator/actions_inspection.ml @@ -226,6 +226,10 @@ Mandriva. MeeGo. +=item \"neokylin\" + +NeoKylin. + =item \"netbsd\" NetBSD. diff --git a/inspector/virt-inspector.rng b/inspector/virt-inspector.rng index 857a02766..314785202 100644 --- a/inspector/virt-inspector.rng +++ b/inspector/virt-inspector.rng @@ -90,6 +90,7 @@ mageia mandriva meego + neokylin netbsd openbsd opensuse