qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: qemu-devel@nongnu.org, Justin Terry <juterry@microsoft.com>
Cc: "Fam Zheng" <fam@euphon.net>, "Thomas Huth" <thuth@redhat.com>,
	"Daniel P . Berrangé" <berrange@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Stefan Weil" <sw@weilnetz.de>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Richard Henderson" <rth@twiddle.net>
Subject: [PATCH v2 2/3] tests/docker: Add fedora-win10sdk-cross image
Date: Fri, 20 Sep 2019 13:33:28 +0200	[thread overview]
Message-ID: <20190920113329.16787-3-philmd@redhat.com> (raw)
In-Reply-To: <20190920113329.16787-1-philmd@redhat.com>

To build WHPX (Windows Hypervisor) binaries, we need the WHPX
headers provided by the Windows SDK.

Add a script that fetches the required MSI/CAB files from the
latest SDK (currently 10.0.18362.1).

Headers are accessible under /opt/win10sdk/include.

Set the QEMU_CONFIGURE_OPTS environment variable accordingly,
enabling HAX and WHPX. Due to CPP warnings related to Microsoft
specific #pragmas, we also need to use the '--disable-werror'
configure flag.

Cc: Justin Terry <juterry@microsoft.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 tests/docker/Makefile.include                 |  2 ++
 .../dockerfiles/fedora-win10sdk-cross.docker  | 23 ++++++++++++++++
 tests/docker/dockerfiles/win10sdk-dl.sh       | 27 +++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 tests/docker/dockerfiles/fedora-win10sdk-cross.docker
 create mode 100755 tests/docker/dockerfiles/win10sdk-dl.sh

diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index 50a400b573..aa2e4e56dd 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -125,6 +125,8 @@ docker-image-debian-ppc64-cross: docker-image-debian10
 docker-image-debian-riscv64-cross: docker-image-debian10
 docker-image-debian-sh4-cross: docker-image-debian10
 docker-image-debian-sparc64-cross: docker-image-debian10
+docker-image-fedora-win10sdk-cross: docker-image-fedora
+docker-image-fedora-win10sdk-cross: EXTRA_FILES:=$(DOCKER_FILES_DIR)/win10sdk-dl.sh
 
 docker-image-travis: NOUSER=1
 
diff --git a/tests/docker/dockerfiles/fedora-win10sdk-cross.docker b/tests/docker/dockerfiles/fedora-win10sdk-cross.docker
new file mode 100644
index 0000000000..55ca933d40
--- /dev/null
+++ b/tests/docker/dockerfiles/fedora-win10sdk-cross.docker
@@ -0,0 +1,23 @@
+#
+# Docker MinGW64 cross-compiler target with WHPX header installed
+#
+# This docker target builds on the Fedora 30 base image.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+FROM qemu:fedora
+
+RUN dnf install -y \
+        cabextract \
+        msitools \
+        wget
+
+# Install WHPX headers from Windows Software Development Kit:
+# https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
+ADD win10sdk-dl.sh /usr/local/bin/win10sdk-dl.sh
+RUN /usr/local/bin/win10sdk-dl.sh
+
+ENV QEMU_CONFIGURE_OPTS ${QEMU_CONFIGURE_OPTS} \
+    --cross-prefix=x86_64-w64-mingw32- \
+    --extra-cflags=-I/opt/win10sdk/include --disable-werror \
+    --enable-hax --enable-whpx
diff --git a/tests/docker/dockerfiles/win10sdk-dl.sh b/tests/docker/dockerfiles/win10sdk-dl.sh
new file mode 100755
index 0000000000..1c35c2a252
--- /dev/null
+++ b/tests/docker/dockerfiles/win10sdk-dl.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+# Install WHPX headers from Windows Software Development Kit
+# https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+WINDIR=/opt/win10sdk
+mkdir -p ${WINDIR}
+pushd ${WINDIR}
+# Get the bundle base for Windows SDK v10.0.18362.1
+BASE_URL=$(curl --silent --include 'http://go.microsoft.com/fwlink/?prd=11966&pver=1.0&plcid=0x409&clcid=0x409&ar=Windows10&sar=SDK&o1=10.0.18362.1' | sed -nE 's_Location: (.*)/\r_\1_p')/Installers
+# Fetch the MSI containing the headers
+wget --no-verbose ${BASE_URL}/'Windows SDK Desktop Headers x86-x86_en-us.msi'
+while true; do
+    # Fetch all cabinets required by this MSI
+    CAB_NAME=$(msiextract Windows\ SDK\ Desktop\ Headers\ x86-x86_en-us.msi 3>&1 2>&3 3>&-| sed -nE "s_.*Error opening file $PWD/(.*): No such file or directory_\1_p")
+    test -z "${CAB_NAME}" && break
+    wget --no-verbose ${BASE_URL}/${CAB_NAME}
+done
+rm *.{cab,msi}
+mkdir /opt/win10sdk/include
+# Only keep the WHPX headers
+for inc in "${WINDIR}/Program Files/Windows Kits/10/Include/10.0.18362.0/um"/WinHv*; do
+    ln -s "${inc}" /opt/win10sdk/include
+done
+popd > /dev/null
-- 
2.20.1



  parent reply	other threads:[~2019-09-20 11:36 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-20 11:33 [PATCH v2 0/3] testing: Build WHPX enabled binaries Philippe Mathieu-Daudé
2019-09-20 11:33 ` [PATCH v2 1/3] target/i386: Fix broken build with WHPX enabled Philippe Mathieu-Daudé
2019-09-20 11:37   ` Paolo Bonzini
2019-09-20 11:33 ` Philippe Mathieu-Daudé [this message]
2019-09-20 11:33 ` [PATCH v2 3/3] .shippable.yml: Build WHPX enabled binaries Philippe Mathieu-Daudé
2019-09-20 15:17 ` [PATCH v2 0/3] testing: " Philippe Mathieu-Daudé
2019-09-20 16:53   ` Justin Terry (VM)
2020-05-20 10:26     ` Philippe Mathieu-Daudé
2020-05-20 10:26       ` [Bug 1879672] " Philippe Mathieu-Daudé
2020-07-31  8:33       ` Philippe Mathieu-Daudé
2020-07-31  8:33         ` [Bug 1879672] " Philippe Mathieu-Daudé
2020-07-31 23:31         ` [EXTERNAL] " Sunil Muthuswamy
2020-08-03 10:51           ` Philippe Mathieu-Daudé
2020-08-03 10:51             ` [Bug 1879672] " Philippe Mathieu-Daudé
2020-08-03 11:28             ` Stefan Weil
2020-08-03 20:25               ` Stefan Weil
2020-08-04  6:43                 ` Thomas Huth
2020-08-04  6:55                   ` Stefan Weil
2020-08-04  7:23                     ` Philippe Mathieu-Daudé
2020-08-04  7:23                       ` [Bug 1879672] " Philippe Mathieu-Daudé
2020-08-04  7:42                       ` Stefan Weil
2020-08-04  7:52                         ` Philippe Mathieu-Daudé
2020-08-04  7:52                           ` [Bug 1879672] " Philippe Mathieu-Daudé
2020-08-04  8:10                         ` Thomas Huth
2020-08-04  9:23                           ` Daniel P. Berrangé
2020-08-04  9:23                             ` [Bug 1879672] " Daniel Berrange
2020-08-18 21:20                         ` [EXTERNAL] " Sunil Muthuswamy
2020-08-19  3:36                           ` Philippe Mathieu-Daudé
2020-08-19  3:36                             ` [Bug 1879672] " Philippe Mathieu-Daudé
2019-09-21  6:34 ` no-reply
  -- strict thread matches above, loose matches on Subject: below --
2020-05-20 10:14 [Bug 1879672] [NEW] QEMU installer with WHPX support Philippe Mathieu-Daudé
2020-05-20 10:25 ` [Bug 1879672] " Daniel Berrange
2020-05-20 12:30 ` Stefan Weil
2020-06-08  7:18 ` Philippe Mathieu-Daudé
2020-11-04 20:01 ` John Snow
2020-11-04 23:12   ` Philippe Mathieu-Daudé
2020-11-04 23:12     ` Philippe Mathieu-Daudé
2021-05-09 15:38 ` Philippe Mathieu-Daudé
2021-05-09 18:33 ` Stefan Weil
2021-05-27  7:45 ` Philippe Mathieu-Daudé
2020-02-18 20:38 [PATCH] WHPX: Assigning maintainer for Windows Hypervisor Platform Sunil Muthuswamy
2020-02-18 20:51 ` Justin Terry (SF)
2020-02-19  8:31   ` Philippe Mathieu-Daudé
2020-02-19 15:50     ` [EXTERNAL] " Justin Terry (SF)
2020-02-21  7:54       ` Stefan Weil
2020-02-24 19:43         ` Sunil Muthuswamy
2020-05-20 10:29           ` Philippe Mathieu-Daudé
2020-05-20 10:29             ` [Bug 1879672] " Philippe Mathieu-Daudé
2020-05-19 21:59         ` Sunil Muthuswamy
2020-05-20 10:29           ` Philippe Mathieu-Daudé
2020-05-20 10:29             ` [Bug 1879672] " Philippe Mathieu-Daudé
2020-02-21 17:15 ` Paolo Bonzini
2019-11-07 19:48 [PATCH v2] WHPX: support for xcr0 Sunil Muthuswamy
2019-11-07 20:05 ` Stefan Weil
2019-11-07 22:52   ` Sunil Muthuswamy
2020-05-20 10:27     ` Philippe Mathieu-Daudé
2020-05-20 10:27       ` [Bug 1879672] " Philippe Mathieu-Daudé
2019-11-12 18:52 ` Sunil Muthuswamy
2019-11-13 14:56   ` Paolo Bonzini
2022-04-28  6:31 ` Paolo Bonzini
2019-09-19 10:59 [Qemu-devel] [PATCH 0/2] testing: Build WHPX enabled binaries Philippe Mathieu-Daudé
2019-09-19 10:59 ` [Qemu-devel] [PATCH 1/2] tests/docker: Add fedora-win10sdk-cross image Philippe Mathieu-Daudé
2019-09-19 11:28   ` Alex Bennée
2019-09-19 11:35     ` Philippe Mathieu-Daudé
2019-09-19 10:59 ` [Qemu-devel] [PATCH 2/2] .shippable.yml: Build WHPX enabled binaries Philippe Mathieu-Daudé
2019-09-19 11:02   ` Philippe Mathieu-Daudé
2019-09-19 11:09 ` [Qemu-devel] [PATCH 0/2] testing: " Thomas Huth
2019-09-19 11:21   ` Philippe Mathieu-Daudé
2019-09-19 11:18 ` Stefan Weil
2019-09-19 11:26   ` Philippe Mathieu-Daudé
2020-05-20 10:25     ` Philippe Mathieu-Daudé
2020-05-20 10:25       ` [Bug 1879672] " Philippe Mathieu-Daudé
2019-09-19 11:41   ` [Qemu-devel] " Daniel P. Berrangé
2019-09-19 11:54     ` Philippe Mathieu-Daudé
2019-09-19 13:25       ` Daniel P. Berrangé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190920113329.16787-3-philmd@redhat.com \
    --to=philmd@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=fam@euphon.net \
    --cc=juterry@microsoft.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=sw@weilnetz.de \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).