Richard W.M. Jones
2016-Mar-04 10:26 UTC
[Libguestfs] [PATCH v2 0/2] v2v: Copy *.dll files since they can be part of the driver (RHBZ#1311373).
Since v1: - Fix a bug in the calculation of lc_basename. By luck this doesn't affect anything given the contents of the current ISO. - Don't copy the WdfCoInstaller*.dll files. Rich.
Richard W.M. Jones
2016-Mar-04 10:26 UTC
[Libguestfs] [PATCH v2 1/2] v2v: Fix incorrect calculation of lc_basename.
We should be using the lowercase path. Prior to this patch lc_basename was not actually lowercase. Fixes commit f7249a0bccc43d5b5e11703ff432b0361b03292b. --- v2v/windows_virtio.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v2v/windows_virtio.ml b/v2v/windows_virtio.ml index d78bb0c..e63f39e 100644 --- a/v2v/windows_virtio.ml +++ b/v2v/windows_virtio.ml @@ -417,7 +417,7 @@ and virtio_iso_path_matches_guest_os path inspect * elements. *) let lc_path = String.lowercase_ascii path in - let lc_basename = Filename.basename path in + let lc_basename = Filename.basename lc_path in let extension match last_part_of lc_basename '.' with -- 2.5.0
Richard W.M. Jones
2016-Mar-04 10:26 UTC
[Libguestfs] [PATCH v2 2/2] v2v: Copy *.dll files since they can be part of the driver (RHBZ#1311373).
Commit 47b5f245bec908f803f0a89c3b1e3166cfe33aad originally introduced the filtering of files by extension. For the QXL driver at least, there is a qxldd.dll file which is part of the driver, so that must be copied to the guest as well. Do not copy 'WdfCoInstaller*.dll' files to the guest. Thanks: Vadim Rozenfeld, Tingting Zheng. --- v2v/v2v_unit_tests.ml | 74 +++++++++++++++++++++++++-------------------------- v2v/windows_virtio.ml | 6 ++++- 2 files changed, 42 insertions(+), 38 deletions(-) diff --git a/v2v/v2v_unit_tests.ml b/v2v/v2v_unit_tests.ml index 0b1b589..4da2f8a 100644 --- a/v2v/v2v_unit_tests.ml +++ b/v2v/v2v_unit_tests.ml @@ -266,13 +266,13 @@ let test_virtio_iso_path_matches_guest_os ctx "NetKVM/2k12/amd64/netkvm.inf", Some win2k12_64; "NetKVM/2k12/amd64/netkvm.pdb", Some win2k12_64; "NetKVM/2k12/amd64/netkvm.sys", Some win2k12_64; - "NetKVM/2k12/amd64/netkvmco.dll", None; + "NetKVM/2k12/amd64/netkvmco.dll", Some win2k12_64; "NetKVM/2k12/amd64/readme.doc", None; "NetKVM/2k12R2/amd64/netkvm.cat", Some win2k12r2_64; "NetKVM/2k12R2/amd64/netkvm.inf", Some win2k12r2_64; "NetKVM/2k12R2/amd64/netkvm.pdb", Some win2k12r2_64; "NetKVM/2k12R2/amd64/netkvm.sys", Some win2k12r2_64; - "NetKVM/2k12R2/amd64/netkvmco.dll", None; + "NetKVM/2k12R2/amd64/netkvmco.dll", Some win2k12r2_64; "NetKVM/2k12R2/amd64/readme.doc", None; "NetKVM/2k3/amd64/netkvm.cat", Some win2k3_64; "NetKVM/2k3/amd64/netkvm.inf", Some win2k3_64; @@ -286,55 +286,55 @@ let test_virtio_iso_path_matches_guest_os ctx "NetKVM/2k8/amd64/netkvm.inf", Some win2k8_64; "NetKVM/2k8/amd64/netkvm.pdb", Some win2k8_64; "NetKVM/2k8/amd64/netkvm.sys", Some win2k8_64; - "NetKVM/2k8/amd64/netkvmco.dll", None; + "NetKVM/2k8/amd64/netkvmco.dll", Some win2k8_64; "NetKVM/2k8/amd64/readme.doc", None; "NetKVM/2k8/x86/netkvm.cat", Some win2k8_32; "NetKVM/2k8/x86/netkvm.inf", Some win2k8_32; "NetKVM/2k8/x86/netkvm.pdb", Some win2k8_32; "NetKVM/2k8/x86/netkvm.sys", Some win2k8_32; - "NetKVM/2k8/x86/netkvmco.dll", None; + "NetKVM/2k8/x86/netkvmco.dll", Some win2k8_32; "NetKVM/2k8/x86/readme.doc", None; "NetKVM/2k8R2/amd64/netkvm.cat", Some win2k8r2_64; "NetKVM/2k8R2/amd64/netkvm.inf", Some win2k8r2_64; "NetKVM/2k8R2/amd64/netkvm.pdb", Some win2k8r2_64; "NetKVM/2k8R2/amd64/netkvm.sys", Some win2k8r2_64; - "NetKVM/2k8R2/amd64/netkvmco.dll", None; + "NetKVM/2k8R2/amd64/netkvmco.dll", Some win2k8r2_64; "NetKVM/2k8R2/amd64/readme.doc", None; "NetKVM/w7/amd64/netkvm.cat", Some win7_64; "NetKVM/w7/amd64/netkvm.inf", Some win7_64; "NetKVM/w7/amd64/netkvm.pdb", Some win7_64; "NetKVM/w7/amd64/netkvm.sys", Some win7_64; - "NetKVM/w7/amd64/netkvmco.dll", None; + "NetKVM/w7/amd64/netkvmco.dll", Some win7_64; "NetKVM/w7/amd64/readme.doc", None; "NetKVM/w7/x86/netkvm.cat", Some win7_32; "NetKVM/w7/x86/netkvm.inf", Some win7_32; "NetKVM/w7/x86/netkvm.pdb", Some win7_32; "NetKVM/w7/x86/netkvm.sys", Some win7_32; - "NetKVM/w7/x86/netkvmco.dll", None; + "NetKVM/w7/x86/netkvmco.dll", Some win7_32; "NetKVM/w7/x86/readme.doc", None; "NetKVM/w8.1/amd64/netkvm.cat", Some win8_1_64; "NetKVM/w8.1/amd64/netkvm.inf", Some win8_1_64; "NetKVM/w8.1/amd64/netkvm.pdb", Some win8_1_64; "NetKVM/w8.1/amd64/netkvm.sys", Some win8_1_64; - "NetKVM/w8.1/amd64/netkvmco.dll", None; + "NetKVM/w8.1/amd64/netkvmco.dll", Some win8_1_64; "NetKVM/w8.1/amd64/readme.doc", None; "NetKVM/w8.1/x86/netkvm.cat", Some win8_1_32; "NetKVM/w8.1/x86/netkvm.inf", Some win8_1_32; "NetKVM/w8.1/x86/netkvm.pdb", Some win8_1_32; "NetKVM/w8.1/x86/netkvm.sys", Some win8_1_32; - "NetKVM/w8.1/x86/netkvmco.dll", None; + "NetKVM/w8.1/x86/netkvmco.dll", Some win8_1_32; "NetKVM/w8.1/x86/readme.doc", None; "NetKVM/w8/amd64/netkvm.cat", Some win8_64; "NetKVM/w8/amd64/netkvm.inf", Some win8_64; "NetKVM/w8/amd64/netkvm.pdb", Some win8_64; "NetKVM/w8/amd64/netkvm.sys", Some win8_64; - "NetKVM/w8/amd64/netkvmco.dll", None; + "NetKVM/w8/amd64/netkvmco.dll", Some win8_64; "NetKVM/w8/amd64/readme.doc", None; "NetKVM/w8/x86/netkvm.cat", Some win8_32; "NetKVM/w8/x86/netkvm.inf", Some win8_32; "NetKVM/w8/x86/netkvm.pdb", Some win8_32; "NetKVM/w8/x86/netkvm.sys", Some win8_32; - "NetKVM/w8/x86/netkvmco.dll", None; + "NetKVM/w8/x86/netkvmco.dll", Some win8_32; "NetKVM/w8/x86/readme.doc", None; "NetKVM/xp/x86/netkvm.cat", Some winxp_32; "NetKVM/xp/x86/netkvm.inf", Some winxp_32; @@ -348,78 +348,78 @@ let test_virtio_iso_path_matches_guest_os ctx "viorng/2k12/amd64/viorng.inf", Some win2k12_64; "viorng/2k12/amd64/viorng.pdb", Some win2k12_64; "viorng/2k12/amd64/viorng.sys", Some win2k12_64; - "viorng/2k12/amd64/viorngci.dll", None; - "viorng/2k12/amd64/viorngum.dll", None; + "viorng/2k12/amd64/viorngci.dll", Some win2k12_64; + "viorng/2k12/amd64/viorngum.dll", Some win2k12_64; "viorng/2k12R2/amd64/WdfCoInstaller01011.dll", None; "viorng/2k12R2/amd64/viorng.cat", Some win2k12r2_64; "viorng/2k12R2/amd64/viorng.inf", Some win2k12r2_64; "viorng/2k12R2/amd64/viorng.pdb", Some win2k12r2_64; "viorng/2k12R2/amd64/viorng.sys", Some win2k12r2_64; - "viorng/2k12R2/amd64/viorngci.dll", None; - "viorng/2k12R2/amd64/viorngum.dll", None; + "viorng/2k12R2/amd64/viorngci.dll", Some win2k12r2_64; + "viorng/2k12R2/amd64/viorngum.dll", Some win2k12r2_64; "viorng/2k8/amd64/WdfCoInstaller01009.dll", None; "viorng/2k8/amd64/viorng.cat", Some win2k8_64; "viorng/2k8/amd64/viorng.inf", Some win2k8_64; "viorng/2k8/amd64/viorng.pdb", Some win2k8_64; "viorng/2k8/amd64/viorng.sys", Some win2k8_64; - "viorng/2k8/amd64/viorngci.dll", None; - "viorng/2k8/amd64/viorngum.dll", None; + "viorng/2k8/amd64/viorngci.dll", Some win2k8_64; + "viorng/2k8/amd64/viorngum.dll", Some win2k8_64; "viorng/2k8/x86/WdfCoInstaller01009.dll", None; "viorng/2k8/x86/viorng.cat", Some win2k8_32; "viorng/2k8/x86/viorng.inf", Some win2k8_32; "viorng/2k8/x86/viorng.pdb", Some win2k8_32; "viorng/2k8/x86/viorng.sys", Some win2k8_32; - "viorng/2k8/x86/viorngci.dll", None; - "viorng/2k8/x86/viorngum.dll", None; + "viorng/2k8/x86/viorngci.dll", Some win2k8_32; + "viorng/2k8/x86/viorngum.dll", Some win2k8_32; "viorng/2k8R2/amd64/WdfCoInstaller01009.dll", None; "viorng/2k8R2/amd64/viorng.cat", Some win2k8r2_64; "viorng/2k8R2/amd64/viorng.inf", Some win2k8r2_64; "viorng/2k8R2/amd64/viorng.pdb", Some win2k8r2_64; "viorng/2k8R2/amd64/viorng.sys", Some win2k8r2_64; - "viorng/2k8R2/amd64/viorngci.dll", None; - "viorng/2k8R2/amd64/viorngum.dll", None; + "viorng/2k8R2/amd64/viorngci.dll", Some win2k8r2_64; + "viorng/2k8R2/amd64/viorngum.dll", Some win2k8r2_64; "viorng/w7/amd64/WdfCoInstaller01009.dll", None; "viorng/w7/amd64/viorng.cat", Some win7_64; "viorng/w7/amd64/viorng.inf", Some win7_64; "viorng/w7/amd64/viorng.pdb", Some win7_64; "viorng/w7/amd64/viorng.sys", Some win7_64; - "viorng/w7/amd64/viorngci.dll", None; - "viorng/w7/amd64/viorngum.dll", None; + "viorng/w7/amd64/viorngci.dll", Some win7_64; + "viorng/w7/amd64/viorngum.dll", Some win7_64; "viorng/w7/x86/WdfCoInstaller01009.dll", None; "viorng/w7/x86/viorng.cat", Some win7_32; "viorng/w7/x86/viorng.inf", Some win7_32; "viorng/w7/x86/viorng.pdb", Some win7_32; "viorng/w7/x86/viorng.sys", Some win7_32; - "viorng/w7/x86/viorngci.dll", None; - "viorng/w7/x86/viorngum.dll", None; + "viorng/w7/x86/viorngci.dll", Some win7_32; + "viorng/w7/x86/viorngum.dll", Some win7_32; "viorng/w8.1/amd64/WdfCoInstaller01011.dll", None; "viorng/w8.1/amd64/viorng.cat", Some win8_1_64; "viorng/w8.1/amd64/viorng.inf", Some win8_1_64; "viorng/w8.1/amd64/viorng.pdb", Some win8_1_64; "viorng/w8.1/amd64/viorng.sys", Some win8_1_64; - "viorng/w8.1/amd64/viorngci.dll", None; - "viorng/w8.1/amd64/viorngum.dll", None; + "viorng/w8.1/amd64/viorngci.dll", Some win8_1_64; + "viorng/w8.1/amd64/viorngum.dll", Some win8_1_64; "viorng/w8.1/x86/WdfCoInstaller01011.dll", None; "viorng/w8.1/x86/viorng.cat", Some win8_1_32; "viorng/w8.1/x86/viorng.inf", Some win8_1_32; "viorng/w8.1/x86/viorng.pdb", Some win8_1_32; "viorng/w8.1/x86/viorng.sys", Some win8_1_32; - "viorng/w8.1/x86/viorngci.dll", None; - "viorng/w8.1/x86/viorngum.dll", None; + "viorng/w8.1/x86/viorngci.dll", Some win8_1_32; + "viorng/w8.1/x86/viorngum.dll", Some win8_1_32; "viorng/w8/amd64/WdfCoInstaller01011.dll", None; "viorng/w8/amd64/viorng.cat", Some win8_64; "viorng/w8/amd64/viorng.inf", Some win8_64; "viorng/w8/amd64/viorng.pdb", Some win8_64; "viorng/w8/amd64/viorng.sys", Some win8_64; - "viorng/w8/amd64/viorngci.dll", None; - "viorng/w8/amd64/viorngum.dll", None; + "viorng/w8/amd64/viorngci.dll", Some win8_64; + "viorng/w8/amd64/viorngum.dll", Some win8_64; "viorng/w8/x86/WdfCoInstaller01011.dll", None; "viorng/w8/x86/viorng.cat", Some win8_32; "viorng/w8/x86/viorng.inf", Some win8_32; "viorng/w8/x86/viorng.pdb", Some win8_32; "viorng/w8/x86/viorng.sys", Some win8_32; - "viorng/w8/x86/viorngci.dll", None; - "viorng/w8/x86/viorngum.dll", None; + "viorng/w8/x86/viorngci.dll", Some win8_32; + "viorng/w8/x86/viorngum.dll", Some win8_32; "vioscsi/2k12/amd64/vioscsi.cat", Some win2k12_64; "vioscsi/2k12/amd64/vioscsi.inf", Some win2k12_64; "vioscsi/2k12/amd64/vioscsi.pdb", Some win2k12_64; @@ -619,7 +619,7 @@ let test_virtio_iso_path_matches_guest_os ctx "drivers/i386/Win2008/vioscsi.inf", Some win2k8_32; "drivers/i386/Win7/viostor.inf", Some win7_32; "drivers/i386/Win7/viostor.sys", Some win7_32; - "drivers/i386/Win7/qxldd.dll", None; + "drivers/i386/Win7/qxldd.dll", Some win7_32; "drivers/i386/Win7/qxl.sys", Some win7_32; "drivers/i386/Win7/vioscsi.cat", Some win7_32; "drivers/i386/Win7/netkvm.inf", Some win7_32; @@ -647,7 +647,7 @@ let test_virtio_iso_path_matches_guest_os ctx "drivers/i386/Win8/vioscsi.inf", Some win8_32; "drivers/i386/WinXP/viostor.inf", Some winxp_32; "drivers/i386/WinXP/viostor.sys", Some winxp_32; - "drivers/i386/WinXP/qxldd.dll", None; + "drivers/i386/WinXP/qxldd.dll", Some winxp_32; "drivers/i386/WinXP/qxl.sys", Some winxp_32; "drivers/i386/WinXP/netkvm.inf", Some winxp_32; "drivers/i386/WinXP/netkvm.sys", Some winxp_32; @@ -675,7 +675,7 @@ let test_virtio_iso_path_matches_guest_os ctx "drivers/amd64/Win2008/vioscsi.inf", Some win2k8_64; "drivers/amd64/Win7/viostor.inf", Some win7_64; "drivers/amd64/Win7/viostor.sys", Some win7_64; - "drivers/amd64/Win7/qxldd.dll", None; + "drivers/amd64/Win7/qxldd.dll", Some win7_64; "drivers/amd64/Win7/qxl.sys", Some win7_64; "drivers/amd64/Win7/vioscsi.cat", Some win7_64; "drivers/amd64/Win7/netkvm.inf", Some win7_64; @@ -712,7 +712,7 @@ let test_virtio_iso_path_matches_guest_os ctx "drivers/amd64/Win2012/vioscsi.inf", Some win2k12_64; "drivers/amd64/Win2008R2/viostor.inf", Some win2k8r2_64; "drivers/amd64/Win2008R2/viostor.sys", Some win2k8r2_64; - "drivers/amd64/Win2008R2/qxldd.dll", None; + "drivers/amd64/Win2008R2/qxldd.dll", Some win2k8r2_64; "drivers/amd64/Win2008R2/qxl.sys", Some win2k8r2_64; "drivers/amd64/Win2008R2/vioscsi.cat", Some win2k8r2_64; "drivers/amd64/Win2008R2/netkvm.inf", Some win2k8r2_64; diff --git a/v2v/windows_virtio.ml b/v2v/windows_virtio.ml index e63f39e..fd13578 100644 --- a/v2v/windows_virtio.ml +++ b/v2v/windows_virtio.ml @@ -426,9 +426,13 @@ and virtio_iso_path_matches_guest_os path inspect in (* Skip files without specific extensions. *) - let extensions = ["cat"; "inf"; "pdb"; "sys"] in + let extensions = ["cat"; "dll"; "inf"; "pdb"; "sys"] in if not (List.mem extension extensions) then raise Not_found; + (* Skip WdfCoInstaller*.dll files - these should not be copied. *) + if String.is_prefix lc_basename "wdfcoinstaller" && extension = "dll" then + raise Not_found; + (* Using the full path, work out what version of Windows * this driver is for. Paths can be things like: * "NetKVM/2k12R2/amd64/netkvm.sys" or -- 2.5.0
Apparently Analagous Threads
- [PATCH v3 0/2] v2v: Copy *.dll files since they can be part of the
- [PATCH 0/3] v2v: windows: Use '*.inf' files to control how Windows drivers are installed.
- [PATCH v2] v2v: copy all driver files into guest
- [PATCH 3/3] v2v: windows: Use '*.inf' files to control how Windows drivers are installed.
- [PATCH 0/4] Provide better fake virtio-* test data for virt-v2v.