Message ID | 20200804170055.2851-12-thuth@redhat.com |
---|---|
State | New |
Headers | show |
Series | Run cross-compilation build tests in the gitlab-CI | expand |
On 8/4/20 7:00 PM, Thomas Huth wrote: > To compile-test the WHPX accelerator, we need to download these system > headers first (they are unfortunately not part of any released and > packaged MinGW toolchain yet). > > Idea taken from another patch by Stefan Weil. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > tests/docker/dockerfiles/debian-win64-cross.docker | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/tests/docker/dockerfiles/debian-win64-cross.docker b/tests/docker/dockerfiles/debian-win64-cross.docker > index 2fc9cfcbc6..4cc4a3f365 100644 > --- a/tests/docker/dockerfiles/debian-win64-cross.docker > +++ b/tests/docker/dockerfiles/debian-win64-cross.docker > @@ -32,7 +32,14 @@ RUN apt-get update && \ > mxe-$TARGET-w64-mingw32.shared-sdl2 \ > mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \ > mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \ > - mxe-$TARGET-w64-mingw32.shared-zlib > + mxe-$TARGET-w64-mingw32.shared-zlib \ > + curl && \ > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvEmulation.h \ > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvemulation.h?format=raw" && \ > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvPlatform.h \ > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatform.h?format=raw" && \ > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/winhvplatformdefs.h \ > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatformdefs.h?format=raw" Seems legally safer than my older approach =) https://www.mail-archive.com/qemu-devel@nongnu.org/msg645794.html > > # Specify the cross prefix for this image (see tests/docker/common.rc) > ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared- >
Am 04.08.20 um 19:00 schrieb Thomas Huth: > To compile-test the WHPX accelerator, we need to download these system > headers first (they are unfortunately not part of any released and > packaged MinGW toolchain yet). > > Idea taken from another patch by Stefan Weil. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > tests/docker/dockerfiles/debian-win64-cross.docker | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/tests/docker/dockerfiles/debian-win64-cross.docker b/tests/docker/dockerfiles/debian-win64-cross.docker > index 2fc9cfcbc6..4cc4a3f365 100644 > --- a/tests/docker/dockerfiles/debian-win64-cross.docker > +++ b/tests/docker/dockerfiles/debian-win64-cross.docker > @@ -32,7 +32,14 @@ RUN apt-get update && \ > mxe-$TARGET-w64-mingw32.shared-sdl2 \ > mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \ > mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \ > - mxe-$TARGET-w64-mingw32.shared-zlib > + mxe-$TARGET-w64-mingw32.shared-zlib \ > + curl && \ > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvEmulation.h \ > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvemulation.h?format=raw" && \ > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvPlatform.h \ > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatform.h?format=raw" && \ > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/winhvplatformdefs.h \ > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatformdefs.h?format=raw" > > # Specify the cross prefix for this image (see tests/docker/common.rc) > ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared- I expect a build failure: Mingw-w64 decided to use lower case filenames, and those header files include each other. We need both lower case filenames (for Mingw-w64) and camel case filenames (for QEMU). That's why I used additional symlinks. Regards Stefan
On 04/08/2020 20.32, Stefan Weil wrote: > Am 04.08.20 um 19:00 schrieb Thomas Huth: > >> To compile-test the WHPX accelerator, we need to download these system >> headers first (they are unfortunately not part of any released and >> packaged MinGW toolchain yet). >> >> Idea taken from another patch by Stefan Weil. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> tests/docker/dockerfiles/debian-win64-cross.docker | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/tests/docker/dockerfiles/debian-win64-cross.docker b/tests/docker/dockerfiles/debian-win64-cross.docker >> index 2fc9cfcbc6..4cc4a3f365 100644 >> --- a/tests/docker/dockerfiles/debian-win64-cross.docker >> +++ b/tests/docker/dockerfiles/debian-win64-cross.docker >> @@ -32,7 +32,14 @@ RUN apt-get update && \ >> mxe-$TARGET-w64-mingw32.shared-sdl2 \ >> mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \ >> mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \ >> - mxe-$TARGET-w64-mingw32.shared-zlib >> + mxe-$TARGET-w64-mingw32.shared-zlib \ >> + curl && \ >> + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvEmulation.h \ >> + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvemulation.h?format=raw" && \ >> + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvPlatform.h \ >> + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatform.h?format=raw" && \ >> + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/winhvplatformdefs.h \ >> + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatformdefs.h?format=raw" >> >> # Specify the cross prefix for this image (see tests/docker/common.rc) >> ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared- > > > I expect a build failure: Mingw-w64 decided to use lower case filenames, > and those header files include each other. The first two headers include the third header, that's why I've used lowercase for the third header (which is apparently not included by QEMU directly). But yes, all that CamelCase vs. lower-case stuff is very annoying. I think once there is a new MinGW release available in the major Linux distros that ships with these headers, we should change the QEMU source code to always use the lowercase headers, too. Thomas
On Tue, Aug 04, 2020 at 08:32:18PM +0200, Stefan Weil wrote: > Am 04.08.20 um 19:00 schrieb Thomas Huth: > > > To compile-test the WHPX accelerator, we need to download these system > > headers first (they are unfortunately not part of any released and > > packaged MinGW toolchain yet). > > > > Idea taken from another patch by Stefan Weil. > > > > Signed-off-by: Thomas Huth <thuth@redhat.com> > > --- > > tests/docker/dockerfiles/debian-win64-cross.docker | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/tests/docker/dockerfiles/debian-win64-cross.docker b/tests/docker/dockerfiles/debian-win64-cross.docker > > index 2fc9cfcbc6..4cc4a3f365 100644 > > --- a/tests/docker/dockerfiles/debian-win64-cross.docker > > +++ b/tests/docker/dockerfiles/debian-win64-cross.docker > > @@ -32,7 +32,14 @@ RUN apt-get update && \ > > mxe-$TARGET-w64-mingw32.shared-sdl2 \ > > mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \ > > mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \ > > - mxe-$TARGET-w64-mingw32.shared-zlib > > + mxe-$TARGET-w64-mingw32.shared-zlib \ > > + curl && \ > > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvEmulation.h \ > > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvemulation.h?format=raw" && \ > > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvPlatform.h \ > > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatform.h?format=raw" && \ > > + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/winhvplatformdefs.h \ > > + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatformdefs.h?format=raw" > > > > # Specify the cross prefix for this image (see tests/docker/common.rc) > > ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared- > > > I expect a build failure: Mingw-w64 decided to use lower case filenames, > and those header files include each other. > > We need both lower case filenames (for Mingw-w64) and camel case > filenames (for QEMU). That's why I used additional symlinks. Hmm, this feels wrong. Either QEMU or Mingw-w64 is broken here. Mingw-w64 needs to match whatever upper/lower case scheme that Windows has used for these headers. QEMU also needs to match whatever Windows used. Mingw originally commited the files with mixed case, and then later renamed then to lower case, but the commit doing the rename gives zero information about why it did that. The microsoft docs appear to show that camel case is required: https://docs.microsoft.com/en-us/virtualization/api/hypervisor-platform/hypervisor-platform so I think mingw just needs fixing to revert that broken commit the changed to lowercase. Regards, Daniel
Fixes in mingw seems not possible and would broken lots of things, the better way may change all include of Windows API headers to lowercase, On Wed, Aug 5, 2020 at 5:12 PM Daniel P. Berrangé <berrange@redhat.com> wrote: > On Tue, Aug 04, 2020 at 08:32:18PM +0200, Stefan Weil wrote: > > Am 04.08.20 um 19:00 schrieb Thomas Huth: > > > > > To compile-test the WHPX accelerator, we need to download these system > > > headers first (they are unfortunately not part of any released and > > > packaged MinGW toolchain yet). > > > > > > Idea taken from another patch by Stefan Weil. > > > > > > Signed-off-by: Thomas Huth <thuth@redhat.com> > > > --- > > > tests/docker/dockerfiles/debian-win64-cross.docker | 9 ++++++++- > > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > > > diff --git a/tests/docker/dockerfiles/debian-win64-cross.docker > b/tests/docker/dockerfiles/debian-win64-cross.docker > > > index 2fc9cfcbc6..4cc4a3f365 100644 > > > --- a/tests/docker/dockerfiles/debian-win64-cross.docker > > > +++ b/tests/docker/dockerfiles/debian-win64-cross.docker > > > @@ -32,7 +32,14 @@ RUN apt-get update && \ > > > mxe-$TARGET-w64-mingw32.shared-sdl2 \ > > > mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \ > > > mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \ > > > - mxe-$TARGET-w64-mingw32.shared-zlib > > > + mxe-$TARGET-w64-mingw32.shared-zlib \ > > > + curl && \ > > > + curl -s -S -o > /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvEmulation.h \ > > > + " > https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvemulation.h?format=raw" > && \ > > > + curl -s -S -o > /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvPlatform.h \ > > > + " > https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatform.h?format=raw" > && \ > > > + curl -s -S -o > /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/winhvplatformdefs.h \ > > > + " > https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatformdefs.h?format=raw > " > > > > > > # Specify the cross prefix for this image (see tests/docker/common.rc) > > > ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared- > > > > > > I expect a build failure: Mingw-w64 decided to use lower case filenames, > > and those header files include each other. > > > > We need both lower case filenames (for Mingw-w64) and camel case > > filenames (for QEMU). That's why I used additional symlinks. > > Hmm, this feels wrong. Either QEMU or Mingw-w64 is broken here. > > Mingw-w64 needs to match whatever upper/lower case scheme that Windows > has used for these headers. QEMU also needs to match whatever Windows > used. > > Mingw originally commited the files with mixed case, and then later > renamed then to lower case, but the commit doing the rename gives > zero information about why it did that. > > The microsoft docs appear to show that camel case is required: > > > https://docs.microsoft.com/en-us/virtualization/api/hypervisor-platform/hypervisor-platform > > so I think mingw just needs fixing to revert that broken commit > the changed to lowercase. > > Regards, > Daniel > -- > |: https://berrange.com -o- > https://www.flickr.com/photos/dberrange :| > |: https://libvirt.org -o- > https://fstop138.berrange.com :| > |: https://entangle-photo.org -o- > https://www.instagram.com/dberrange :| > > >
diff --git a/tests/docker/dockerfiles/debian-win64-cross.docker b/tests/docker/dockerfiles/debian-win64-cross.docker index 2fc9cfcbc6..4cc4a3f365 100644 --- a/tests/docker/dockerfiles/debian-win64-cross.docker +++ b/tests/docker/dockerfiles/debian-win64-cross.docker @@ -32,7 +32,14 @@ RUN apt-get update && \ mxe-$TARGET-w64-mingw32.shared-sdl2 \ mxe-$TARGET-w64-mingw32.shared-sdl2-mixer \ mxe-$TARGET-w64-mingw32.shared-sdl2-gfx \ - mxe-$TARGET-w64-mingw32.shared-zlib + mxe-$TARGET-w64-mingw32.shared-zlib \ + curl && \ + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvEmulation.h \ + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvemulation.h?format=raw" && \ + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/WinHvPlatform.h \ + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatform.h?format=raw" && \ + curl -s -S -o /usr/lib/mxe/usr/x86_64-w64-mingw32.shared/include/winhvplatformdefs.h \ + "https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/winhvplatformdefs.h?format=raw" # Specify the cross prefix for this image (see tests/docker/common.rc) ENV QEMU_CONFIGURE_OPTS --cross-prefix=x86_64-w64-mingw32.shared-
To compile-test the WHPX accelerator, we need to download these system headers first (they are unfortunately not part of any released and packaged MinGW toolchain yet). Idea taken from another patch by Stefan Weil. Signed-off-by: Thomas Huth <thuth@redhat.com> --- tests/docker/dockerfiles/debian-win64-cross.docker | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)