On Saturday, 26 January 2019 13:19:59 CET Tomáš Golembiovský wrote:
diff --git a/v2v/windows_virtio.ml b/v2v/windows_virtio.ml index 94c4774b7..cc33d9502 100644 --- a/v2v/windows_virtio.ml +++ b/v2v/windows_virtio.ml @@ -186,14 +186,18 @@ let rec install_drivers ((g, _) as reg) inspect rcaps = and install_linux_tools g inspect = let os = match inspect.i_distro with - | "fedora" -> Some "fc28" + | "fedora" -> Some [ + (sprintf "fedora%d" inspect.i_major_version); "fedora"; "fc28"] | "rhel" | "centos" | "scientificlinux" | "redhat-based" - | "oraclelinux" -> - (match inspect.i_major_version with - | 6 -> Some "el6" - | 7 -> Some "el7" - | _ -> None) - | "sles" | "suse-based" | "opensuse" -> Some "lp151" + | "oraclelinux" -> Some ( + [(sprintf "rhel%d" inspect.i_major_version)] + @ (match inspect.i_major_version with + | 6 -> ["el6"] + | 7 -> ["el7"] + | _ -> []) + @ ["rhel"]) + | "sles" | "suse-based" | "opensuse" -> Some [ + (sprintf "fedora%d" inspect.i_major_version); "suse"; "lp151"]
"fedoraN" for SUSE?
| _ -> None in
match os with
The code continues as: match os with | None -> warning (f_"don't know how to install guest tools on %s-%d") inspect.i_distro inspect.i_major_version You need to extend it so "Some []" errors out like None does. It should not happen, so it is mostly a safety check. Another option could be to switch from string list option to string list, with an empty value to indicate no known directories for a distro.
@@ -201,15 +205,15 @@ and install_linux_tools g inspect = warning (f_"don't know how to install guest tools on %s-%d") inspect.i_distro inspect.i_major_version | Some os ->
os -> oses (since it is no more just one).
+ * Note that the call may succeed whithout copying any file at all. This may + * happen when the source subdirectory exists but is empty or when [filter] + * function is too strict to allow any of the files.
Not sure why copy_from_virtio_win should allow an empty list as srcdirs. IMHO it seems better to have it error out on an empty list.
- let srcdir = vio_root ^ "/" ^ srcdir in - if not (g2#is_dir srcdir) then missing () - else ( + let srcdirs = List.map ((//) vio_root) srcdirs in
Note that (//) in this case it is not correct: (//) concatenates using the path separator of the platform virt-v2v is built on, while these paths are appliance paths (so / is always assumed). -- Pino Toscano