Thanks: Qingzheng Zhang
---
daemon/inspect_fs.ml | 7 +++++++
daemon/inspect_fs_unix.ml | 16 +++++++++++++++-
daemon/inspect_types.ml | 2 ++
daemon/inspect_types.mli | 1 +
generator/actions_inspection.ml | 4 ++++
inspector/virt-inspector.rng | 1 +
6 files changed, 30 insertions(+), 1 deletion(-)
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 1da41064d..333d2679a 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 @@
<value>mageia</value>
<value>mandriva</value>
<value>meego</value>
+ <value>neokylin</value>
<value>netbsd</value>
<value>openbsd</value>
<value>opensuse</value>
--
2.13.2