From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Fam Zheng" <fam@euphon.net>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
f4bug@amsat.org, "Justin Terry" <juterry@microsoft.com>,
jsnow@redhat.com, "Alex Bennée" <alex.bennee@linaro.org>
Subject: [PATCH v3 25/33] tests/docker: Add fedora-win10sdk-cross image
Date: Tue, 24 Sep 2019 22:00:58 +0100 [thread overview]
Message-ID: <20190924210106.27117-26-alex.bennee@linaro.org> (raw)
In-Reply-To: <20190924210106.27117-1-alex.bennee@linaro.org>
From: Philippe Mathieu-Daudé <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>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20190920113329.16787-3-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 3fc7a863e51..e85e73025ba 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 00000000000..55ca933d40d
--- /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 00000000000..1c35c2a2524
--- /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
next prev parent reply other threads:[~2019-09-24 22:48 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-24 21:00 [PATCH v3 00/33] testing/next (docker,tcg, alpha ;-) Alex Bennée
2019-09-24 21:00 ` [PATCH v3 01/33] target/alpha: Use array for FPCR_DYN conversion Alex Bennée
2019-09-25 22:35 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 02/33] target/alpha: Fix SWCR_MAP_UMZ Alex Bennée
2019-09-24 21:00 ` [PATCH v3 03/33] target/alpha: Fix SWCR_TRAP_ENABLE_MASK Alex Bennée
2019-09-25 22:35 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 04/33] target/alpha: Handle SWCR_MAP_DMZ earlier Alex Bennée
2019-09-24 21:00 ` [PATCH v3 05/33] target/alpha: Write to fpcr_flush_to_zero once Alex Bennée
2019-09-24 21:00 ` [PATCH v3 06/33] target/alpha: Mask IOV exception with INV for user-only Alex Bennée
2019-09-24 21:00 ` [PATCH v3 07/33] target/alpha: Tidy helper_fp_exc_raise_s Alex Bennée
2019-09-25 22:30 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 08/33] tests/migration: Fail on unexpected migration states Alex Bennée
2019-09-25 22:30 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 09/33] tests/migration/postcopy: trim migration bandwidth Alex Bennée
2019-09-24 21:00 ` [PATCH v3 10/33] migration/postcopy: Recognise the recovery states as 'in_postcopy' Alex Bennée
2019-09-24 21:00 ` [PATCH v3 11/33] target/ppc: fix signal delivery for ppc64abi32 Alex Bennée
2019-09-24 21:00 ` [PATCH v3 12/33] tests/docker: add sanitizers back to clang build Alex Bennée
2019-09-24 21:00 ` [PATCH v3 13/33] tests/docker: fix DOCKER_PARTIAL_IMAGES Alex Bennée
2019-09-24 21:00 ` [PATCH v3 14/33] tests/docker: remove python2.7 from debian9-mxe Alex Bennée
2019-09-25 22:27 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 15/33] tests/docker: reduce scary warnings by cleaning up clean up Alex Bennée
2019-09-25 18:55 ` Richard Henderson
2019-09-24 21:00 ` [PATCH v3 16/33] podman: fix command invocation Alex Bennée
2019-09-25 12:36 ` Thomas Huth
2019-09-24 21:00 ` [PATCH v3 17/33] tests/tcg: clean-up some comments after the de-tangling Alex Bennée
2019-09-25 22:07 ` Philippe Mathieu-Daudé
2019-09-25 22:10 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 18/33] tests/tcg: re-enable linux-test for ppc64abi32 Alex Bennée
2019-09-25 18:54 ` Richard Henderson
2019-09-25 22:13 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 19/33] tests/tcg: add float_madds test to multiarch Alex Bennée
2019-09-25 22:17 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 20/33] tests/tcg: add generic version of float_convs Alex Bennée
2019-09-25 22:26 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 21/33] tests/tcg: add simple record/replay smoke test for aarch64 Alex Bennée
2019-09-25 22:20 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 22/33] configure: preserve PKG_CONFIG for subdir builds Alex Bennée
2019-09-25 22:25 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 23/33] docs/devel: add "check-tcg" to testing.rst Alex Bennée
2019-09-25 18:58 ` Richard Henderson
2019-09-25 22:16 ` Philippe Mathieu-Daudé
2019-09-24 21:00 ` [PATCH v3 24/33] target/i386: Fix broken build with WHPX enabled Alex Bennée
2019-09-24 21:00 ` Alex Bennée [this message]
2019-09-25 20:27 ` [PATCH v3 25/33] tests/docker: Add fedora-win10sdk-cross image Philippe Mathieu-Daudé
2019-09-25 21:08 ` Alex Bennée
2019-09-24 21:00 ` [PATCH v3 26/33] .shippable.yml: Build WHPX enabled binaries Alex Bennée
2019-09-24 21:01 ` [PATCH v3 27/33] docker: remove debian8-mxe definitions Alex Bennée
2019-09-24 21:01 ` [PATCH v3 28/33] docker: removed unused debian8 partial image Alex Bennée
2019-09-25 12:43 ` Philippe Mathieu-Daudé
2019-09-24 21:01 ` [PATCH v3 29/33] docker: remove 'deprecated' image definitions Alex Bennée
2019-09-25 22:23 ` Philippe Mathieu-Daudé
2019-09-25 23:34 ` Alex Bennée
2019-09-26 4:28 ` Philippe Mathieu-Daudé
2019-09-26 16:04 ` Alex Bennée
2019-09-26 16:08 ` Philippe Mathieu-Daudé
2019-09-26 17:38 ` John Snow
2019-09-24 21:01 ` [PATCH v3 30/33] docker: remove unused debian-ports Alex Bennée
2019-09-25 22:23 ` Philippe Mathieu-Daudé
2019-09-24 21:01 ` [PATCH v3 31/33] docker: remove unused debian-sid Alex Bennée
2019-09-25 22:22 ` Philippe Mathieu-Daudé
2019-09-24 21:01 ` [PATCH v3 32/33] docker: move tests from python2 to python3 Alex Bennée
2019-09-25 22:22 ` Philippe Mathieu-Daudé
2019-09-24 21:01 ` [PATCH v3 33/33] tests/docker: remove debian-powerpc-user-cross Alex Bennée
2019-09-25 18:57 ` Richard Henderson
2019-09-25 22:21 ` Philippe Mathieu-Daudé
2019-09-27 12:08 ` [PATCH v3 00/33] testing/next (docker,tcg, alpha ;-) no-reply
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=20190924210106.27117-26-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--cc=f4bug@amsat.org \
--cc=fam@euphon.net \
--cc=jsnow@redhat.com \
--cc=juterry@microsoft.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).