diff mbox series

[3/6] ci: Install msys2 in a proper way refer to https://github.com/cirruslabs/cirrus-ci-docs/issues/699 Enable msys2 ci in cirrus

Message ID 20200902170054.810-4-luoyonggang@gmail.com (mailing list archive)
State New, archived
Headers show
Series Green the msys2 CI make | expand

Commit Message

Yonggang Luo Sept. 2, 2020, 5 p.m. UTC
---
 .cirrus.yml                         | 23 ++++++++++++++++
 scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
 scripts/ci/windows/msys2_install.sh | 41 +++++++++++++++++++++++++++++
 3 files changed, 99 insertions(+)
 create mode 100644 scripts/ci/windows/msys2_build.sh
 create mode 100644 scripts/ci/windows/msys2_install.sh

Comments

Philippe Mathieu-Daudé Sept. 2, 2020, 5:30 p.m. UTC | #1
On 9/2/20 7:00 PM, Yonggang Luo wrote:
> ---
>  .cirrus.yml                         | 23 ++++++++++++++++
>  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
>  scripts/ci/windows/msys2_install.sh | 41 +++++++++++++++++++++++++++++
>  3 files changed, 99 insertions(+)
>  create mode 100644 scripts/ci/windows/msys2_build.sh
>  create mode 100644 scripts/ci/windows/msys2_install.sh
> 
> diff --git a/.cirrus.yml b/.cirrus.yml
> index f287d23c5b..d377c28412 100644
> --- a/.cirrus.yml
> +++ b/.cirrus.yml
> @@ -40,3 +40,26 @@ macos_xcode_task:
>      - ../configure --cc=clang || { cat config.log; exit 1; }
>      - gmake -j$(sysctl -n hw.ncpu)
>      - gmake check
> +
> +windows_msys2_task:
> +  windows_container:
> +    image: cirrusci/windowsservercore:cmake
> +    os_version: 2019
> +    cpu: 8
> +    memory: 8G
> +  env:
> +    MSYS: winsymlinks:nativestrict
> +    MSYSTEM: MINGW64
> +    CHERE_INVOKING: 1
> +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
> +  install_script:
> +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
> +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"
> +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman -U --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
> +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy --noconfirm"
> +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime"
> +    - taskkill /F /IM gpg-agent.exe
> +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Su"
> +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh scripts/ci/windows/msys2_install.sh"
> +  script:
> +    C:\tools\msys64\usr\bin\bash.exe -lc "sh scripts/ci/windows/msys2_build.sh"
> diff --git a/scripts/ci/windows/msys2_build.sh b/scripts/ci/windows/msys2_build.sh
> new file mode 100644
> index 0000000000..0363ef402a
> --- /dev/null
> +++ b/scripts/ci/windows/msys2_build.sh
> @@ -0,0 +1,35 @@
> +export QEMU_DIR=$PWD
> +mkdir ../qemu-build
> +cd ../qemu-build
> +$QEMU_DIR/configure \
> +  --python=python3 \
> +  --cross-prefix=x86_64-w64-mingw32- \

Isn't the prefix 'x86_64-w64-mingw32-gcc-'?

> +  --enable-gtk --enable-sdl \
> +  --enable-capstone=git \
> +  --enable-stack-protector \
> +  --ninja=ninja \
> +  --enable-gnutls \
> +  --enable-nettle \
> +  --enable-vnc \
> +  --enable-vnc-sasl \
> +  --enable-vnc-jpeg \
> +  --enable-vnc-png \
> +  --enable-membarrier \
> +  --enable-slirp=git \
> +  --disable-kvm \
> +  --enable-hax \
> +  --enable-whpx \
> +  --disable-spice \
> +  --enable-lzo \
> +  --enable-snappy \
> +  --enable-bzip2 \
> +  --enable-vdi \
> +  --enable-qcow1 \
> +  --enable-tools \
> +  --enable-libusb \
> +  --enable-usb-redir \
> +  --disable-libnfs \
> +  --enable-libssh \
> +  --disable-pie
> +make -j$NUMBER_OF_PROCESSORS
> +# make -j$NUMBER_OF_PROCESSORS check
> diff --git a/scripts/ci/windows/msys2_install.sh b/scripts/ci/windows/msys2_install.sh
> new file mode 100644
> index 0000000000..3a5392cd99
> --- /dev/null
> +++ b/scripts/ci/windows/msys2_install.sh
> @@ -0,0 +1,41 @@
> +pacman --noconfirm -S --needed \
> +base-devel \
> +git \
> +mingw-w64-x86_64-python \
> +mingw-w64-x86_64-python-setuptools \
> +mingw-w64-x86_64-toolchain \
> +mingw-w64-x86_64-SDL2 \
> +mingw-w64-x86_64-SDL2_image \
> +mingw-w64-x86_64-gtk3 \
> +mingw-w64-x86_64-ninja \
> +mingw-w64-x86_64-make \
> +mingw-w64-x86_64-lzo2 \
> +mingw-w64-x86_64-libjpeg-turbo \
> +mingw-w64-x86_64-pixman \
> +mingw-w64-x86_64-libgcrypt \
> +mingw-w64-x86_64-capstone \
> +mingw-w64-x86_64-libpng \
> +mingw-w64-x86_64-libssh \
> +mingw-w64-x86_64-libxml2 \
> +mingw-w64-x86_64-snappy \
> +mingw-w64-x86_64-libusb \
> +mingw-w64-x86_64-usbredir \
> +mingw-w64-x86_64-libtasn1 \
> +mingw-w64-x86_64-libnfs \
> +mingw-w64-x86_64-nettle \
> +mingw-w64-x86_64-cyrus-sasl \
> +mingw-w64-x86_64-curl \
> +mingw-w64-x86_64-gnutls \
> +mingw-w64-x86_64-zstd \
> +mingw-w64-x86_64-glib2
> +
> +cd /mingw64/bin
> +cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
> +cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
> +cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
> +cp windres.exe x86_64-w64-mingw32-windres.exe
> +cp strip.exe x86_64-w64-mingw32-strip.exe
> +cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
> +cp ld x86_64-w64-mingw32-ld.exe
> +cp as x86_64-w64-mingw32-as.exe
> +cp sdl2-config x86_64-w64-mingw32-sdl2-config

Why is that needed?

Thanks,

Phil.
Yonggang Luo Sept. 2, 2020, 5:42 p.m. UTC | #2
On Thu, Sep 3, 2020 at 1:30 AM Philippe Mathieu-Daudé <f4bug@amsat.org>
wrote:

> On 9/2/20 7:00 PM, Yonggang Luo wrote:
> > ---
> >  .cirrus.yml                         | 23 ++++++++++++++++
> >  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
> >  scripts/ci/windows/msys2_install.sh | 41 +++++++++++++++++++++++++++++
> >  3 files changed, 99 insertions(+)
> >  create mode 100644 scripts/ci/windows/msys2_build.sh
> >  create mode 100644 scripts/ci/windows/msys2_install.sh
> >
> > diff --git a/.cirrus.yml b/.cirrus.yml
> > index f287d23c5b..d377c28412 100644
> > --- a/.cirrus.yml
> > +++ b/.cirrus.yml
> > @@ -40,3 +40,26 @@ macos_xcode_task:
> >      - ../configure --cc=clang || { cat config.log; exit 1; }
> >      - gmake -j$(sysctl -n hw.ncpu)
> >      - gmake check
> > +
> > +windows_msys2_task:
> > +  windows_container:
> > +    image: cirrusci/windowsservercore:cmake
> > +    os_version: 2019
> > +    cpu: 8
> > +    memory: 8G
> > +  env:
> > +    MSYS: winsymlinks:nativestrict
> > +    MSYSTEM: MINGW64
> > +    CHERE_INVOKING: 1
> > +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
> > +  install_script:
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
> http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
> "
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
> http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
> "
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman -U
> --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy --noconfirm"
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed --noconfirm
> -S bash pacman pacman-mirrors msys2-runtime"
> > +    - taskkill /F /IM gpg-agent.exe
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Su"
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh
> scripts/ci/windows/msys2_install.sh"
> > +  script:
> > +    C:\tools\msys64\usr\bin\bash.exe -lc "sh
> scripts/ci/windows/msys2_build.sh"
> > diff --git a/scripts/ci/windows/msys2_build.sh
> b/scripts/ci/windows/msys2_build.sh
> > new file mode 100644
> > index 0000000000..0363ef402a
> > --- /dev/null
> > +++ b/scripts/ci/windows/msys2_build.sh
> > @@ -0,0 +1,35 @@
> > +export QEMU_DIR=$PWD
> > +mkdir ../qemu-build
> > +cd ../qemu-build
> > +$QEMU_DIR/configure \
> > +  --python=python3 \
> > +  --cross-prefix=x86_64-w64-mingw32- \
>
> Isn't the prefix 'x86_64-w64-mingw32-gcc-'?
>
No, because of this:
```
C:\CI-Tools\msys64\mingw64\bin>dir x86_64-w64-mingw32*
 驱动器 C 中的卷是 系统
 卷的序列号是 CAD5-8E95

 C:\CI-Tools\msys64\mingw64\bin 的目录

2018/01/17  16:54            36,022 x86_64-w64-mingw32-agrep.exe
2020/09/02  05:06            67,861 x86_64-w64-mingw32-ar.exe
2020/09/02  05:06         2,872,225 x86_64-w64-mingw32-as.exe
2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-c++.exe
2020/02/17  19:50           489,984 x86_64-w64-mingw32-captoinfo.exe
2020/02/17  19:50           348,160 x86_64-w64-mingw32-clear.exe
2020/06/26  17:21            64,176 x86_64-w64-mingw32-deflatehd.exe
2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-g++.exe
2020/07/24  15:41         2,205,454 x86_64-w64-mingw32-gcc-10.2.0.exe
2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-ar.exe
2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-nm.exe
2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-ranlib.exe
2020/07/24  15:41         2,205,454 x86_64-w64-mingw32-gcc.exe
2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-gfortran.exe
2020/06/26  17:21            59,734 x86_64-w64-mingw32-inflatehd.exe
2020/02/17  19:50           462,848 x86_64-w64-mingw32-infocmp.exe
2020/02/17  19:50           489,984 x86_64-w64-mingw32-infotocap.exe
2020/09/02  05:06         2,773,229 x86_64-w64-mingw32-ld.exe
2020/09/02  05:06            67,861 x86_64-w64-mingw32-nm.exe
2020/09/02  05:06         2,367,282 x86_64-w64-mingw32-objcopy.exe
2017/03/22  14:58           669,355 x86_64-w64-mingw32-pkg-config.exe
2020/09/02  05:06            67,861 x86_64-w64-mingw32-ranlib.exe
2020/02/17  19:50           356,352 x86_64-w64-mingw32-reset.exe
2020/09/02  05:06             1,444 x86_64-w64-mingw32-sdl2-config
2020/09/02  05:06         2,367,282 x86_64-w64-mingw32-strip.exe
2020/02/17  19:50           348,160 x86_64-w64-mingw32-tabs.exe
2020/02/17  19:50           489,984 x86_64-w64-mingw32-tic.exe
2020/02/17  19:50           409,600 x86_64-w64-mingw32-toe.exe
2020/02/17  19:50           355,328 x86_64-w64-mingw32-tput.exe
2020/02/17  19:50           356,352 x86_64-w64-mingw32-tset.exe
2020/09/02  05:06         2,344,638 x86_64-w64-mingw32-windres.exe
              31 个文件     29,104,255 字节
               0 个目录 203,338,362,880 可用字节
```

>
> > +  --enable-gtk --enable-sdl \
> > +  --enable-capstone=git \
> > +  --enable-stack-protector \
> > +  --ninja=ninja \
> > +  --enable-gnutls \
> > +  --enable-nettle \
> > +  --enable-vnc \
> > +  --enable-vnc-sasl \
> > +  --enable-vnc-jpeg \
> > +  --enable-vnc-png \
> > +  --enable-membarrier \
> > +  --enable-slirp=git \
> > +  --disable-kvm \
> > +  --enable-hax \
> > +  --enable-whpx \
> > +  --disable-spice \
> > +  --enable-lzo \
> > +  --enable-snappy \
> > +  --enable-bzip2 \
> > +  --enable-vdi \
> > +  --enable-qcow1 \
> > +  --enable-tools \
> > +  --enable-libusb \
> > +  --enable-usb-redir \
> > +  --disable-libnfs \
> > +  --enable-libssh \
> > +  --disable-pie
> > +make -j$NUMBER_OF_PROCESSORS
> > +# make -j$NUMBER_OF_PROCESSORS check
> > diff --git a/scripts/ci/windows/msys2_install.sh
> b/scripts/ci/windows/msys2_install.sh
> > new file mode 100644
> > index 0000000000..3a5392cd99
> > --- /dev/null
> > +++ b/scripts/ci/windows/msys2_install.sh
> > @@ -0,0 +1,41 @@
> > +pacman --noconfirm -S --needed \
> > +base-devel \
> > +git \
> > +mingw-w64-x86_64-python \
> > +mingw-w64-x86_64-python-setuptools \
> > +mingw-w64-x86_64-toolchain \
> > +mingw-w64-x86_64-SDL2 \
> > +mingw-w64-x86_64-SDL2_image \
> > +mingw-w64-x86_64-gtk3 \
> > +mingw-w64-x86_64-ninja \
> > +mingw-w64-x86_64-make \
> > +mingw-w64-x86_64-lzo2 \
> > +mingw-w64-x86_64-libjpeg-turbo \
> > +mingw-w64-x86_64-pixman \
> > +mingw-w64-x86_64-libgcrypt \
> > +mingw-w64-x86_64-capstone \
> > +mingw-w64-x86_64-libpng \
> > +mingw-w64-x86_64-libssh \
> > +mingw-w64-x86_64-libxml2 \
> > +mingw-w64-x86_64-snappy \
> > +mingw-w64-x86_64-libusb \
> > +mingw-w64-x86_64-usbredir \
> > +mingw-w64-x86_64-libtasn1 \
> > +mingw-w64-x86_64-libnfs \
> > +mingw-w64-x86_64-nettle \
> > +mingw-w64-x86_64-cyrus-sasl \
> > +mingw-w64-x86_64-curl \
> > +mingw-w64-x86_64-gnutls \
> > +mingw-w64-x86_64-zstd \
> > +mingw-w64-x86_64-glib2
> > +
> > +cd /mingw64/bin
> > +cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
> > +cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
> > +cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
> > +cp windres.exe x86_64-w64-mingw32-windres.exe
> > +cp strip.exe x86_64-w64-mingw32-strip.exe
> > +cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
> > +cp ld x86_64-w64-mingw32-ld.exe
> > +cp as x86_64-w64-mingw32-as.exe
> > +cp sdl2-config x86_64-w64-mingw32-sdl2-config
>
> Why is that needed?
>
> Comes from configure
```

ar="${AR-${cross_prefix}ar}"
as="${AS-${cross_prefix}as}"
ccas="${CCAS-$cc}"
cpp="${CPP-$cc -E}"
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
ld="${LD-${cross_prefix}ld}"
ranlib="${RANLIB-${cross_prefix}ranlib}"
nm="${NM-${cross_prefix}nm}"
strip="${STRIP-${cross_prefix}strip}"
windres="${WINDRES-${cross_prefix}windres}"
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
query_pkg_config() {
    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
}
pkg_config=query_pkg_config
sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"

# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
ARFLAGS="${ARFLAGS-rv}"
```
>
> Thanks,
>
> Phil.
>
Yonggang Luo Sept. 2, 2020, 5:50 p.m. UTC | #3
On Thu, Sep 3, 2020 at 1:30 AM Philippe Mathieu-Daudé <f4bug@amsat.org>
wrote:

> On 9/2/20 7:00 PM, Yonggang Luo wrote:
> > ---
> >  .cirrus.yml                         | 23 ++++++++++++++++
> >  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
> >  scripts/ci/windows/msys2_install.sh | 41 +++++++++++++++++++++++++++++
> >  3 files changed, 99 insertions(+)
> >  create mode 100644 scripts/ci/windows/msys2_build.sh
> >  create mode 100644 scripts/ci/windows/msys2_install.sh
> >
> > diff --git a/.cirrus.yml b/.cirrus.yml
> > index f287d23c5b..d377c28412 100644
> > --- a/.cirrus.yml
> > +++ b/.cirrus.yml
> > @@ -40,3 +40,26 @@ macos_xcode_task:
> >      - ../configure --cc=clang || { cat config.log; exit 1; }
> >      - gmake -j$(sysctl -n hw.ncpu)
> >      - gmake check
> > +
> > +windows_msys2_task:
> > +  windows_container:
> > +    image: cirrusci/windowsservercore:cmake
> > +    os_version: 2019
> > +    cpu: 8
> > +    memory: 8G
> > +  env:
> > +    MSYS: winsymlinks:nativestrict
> > +    MSYSTEM: MINGW64
> > +    CHERE_INVOKING: 1
> > +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
> > +  install_script:
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
> http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
> "
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
> http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
> "
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman -U
> --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy --noconfirm"
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed --noconfirm
> -S bash pacman pacman-mirrors msys2-runtime"
> > +    - taskkill /F /IM gpg-agent.exe
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Su"
> > +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh
> scripts/ci/windows/msys2_install.sh"
> > +  script:
> > +    C:\tools\msys64\usr\bin\bash.exe -lc "sh
> scripts/ci/windows/msys2_build.sh"
> > diff --git a/scripts/ci/windows/msys2_build.sh
> b/scripts/ci/windows/msys2_build.sh
> > new file mode 100644
> > index 0000000000..0363ef402a
> > --- /dev/null
> > +++ b/scripts/ci/windows/msys2_build.sh
> > @@ -0,0 +1,35 @@
> > +export QEMU_DIR=$PWD
> > +mkdir ../qemu-build
> > +cd ../qemu-build
> > +$QEMU_DIR/configure \
> > +  --python=python3 \
> > +  --cross-prefix=x86_64-w64-mingw32- \
>
> Isn't the prefix 'x86_64-w64-mingw32-gcc-'?
>
> > +  --enable-gtk --enable-sdl \
> > +  --enable-capstone=git \
> > +  --enable-stack-protector \
> > +  --ninja=ninja \
> > +  --enable-gnutls \
> > +  --enable-nettle \
> > +  --enable-vnc \
> > +  --enable-vnc-sasl \
> > +  --enable-vnc-jpeg \
> > +  --enable-vnc-png \
> > +  --enable-membarrier \
> > +  --enable-slirp=git \
> > +  --disable-kvm \
> > +  --enable-hax \
> > +  --enable-whpx \
> > +  --disable-spice \
> > +  --enable-lzo \
> > +  --enable-snappy \
> > +  --enable-bzip2 \
> > +  --enable-vdi \
> > +  --enable-qcow1 \
> > +  --enable-tools \
> > +  --enable-libusb \
> > +  --enable-usb-redir \
> > +  --disable-libnfs \
> > +  --enable-libssh \
> > +  --disable-pie
> > +make -j$NUMBER_OF_PROCESSORS
> > +# make -j$NUMBER_OF_PROCESSORS check
> > diff --git a/scripts/ci/windows/msys2_install.sh
> b/scripts/ci/windows/msys2_install.sh
> > new file mode 100644
> > index 0000000000..3a5392cd99
> > --- /dev/null
> > +++ b/scripts/ci/windows/msys2_install.sh
> > @@ -0,0 +1,41 @@
> > +pacman --noconfirm -S --needed \
> > +base-devel \
> > +git \
> > +mingw-w64-x86_64-python \
> > +mingw-w64-x86_64-python-setuptools \
> > +mingw-w64-x86_64-toolchain \
> > +mingw-w64-x86_64-SDL2 \
> > +mingw-w64-x86_64-SDL2_image \
> > +mingw-w64-x86_64-gtk3 \
> > +mingw-w64-x86_64-ninja \
> > +mingw-w64-x86_64-make \
> > +mingw-w64-x86_64-lzo2 \
> > +mingw-w64-x86_64-libjpeg-turbo \
> > +mingw-w64-x86_64-pixman \
> > +mingw-w64-x86_64-libgcrypt \
> > +mingw-w64-x86_64-capstone \
> > +mingw-w64-x86_64-libpng \
> > +mingw-w64-x86_64-libssh \
> > +mingw-w64-x86_64-libxml2 \
> > +mingw-w64-x86_64-snappy \
> > +mingw-w64-x86_64-libusb \
> > +mingw-w64-x86_64-usbredir \
> > +mingw-w64-x86_64-libtasn1 \
> > +mingw-w64-x86_64-libnfs \
> > +mingw-w64-x86_64-nettle \
> > +mingw-w64-x86_64-cyrus-sasl \
> > +mingw-w64-x86_64-curl \
> > +mingw-w64-x86_64-gnutls \
> > +mingw-w64-x86_64-zstd \
> > +mingw-w64-x86_64-glib2
> > +
> > +cd /mingw64/bin
> > +cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
> > +cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
> > +cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
> > +cp windres.exe x86_64-w64-mingw32-windres.exe
> > +cp strip.exe x86_64-w64-mingw32-strip.exe
> > +cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
> > +cp ld x86_64-w64-mingw32-ld.exe
> > +cp as x86_64-w64-mingw32-as.exe
> > +cp sdl2-config x86_64-w64-mingw32-sdl2-config
>
> Why is that needed?
>
> Thanks,
>
> Phil.
>
Hi, I am looking for suggestion for building  with msys2, this is comes
from wiki, if you have better idea, then tell me.

https://wiki.qemu.org/Hosts/W32#Native_builds_with_MSYS2
Mark Cave-Ayland Sept. 2, 2020, 6:50 p.m. UTC | #4
On 02/09/2020 18:30, Philippe Mathieu-Daudé wrote:

> On 9/2/20 7:00 PM, Yonggang Luo wrote:
>> ---
>>  .cirrus.yml                         | 23 ++++++++++++++++
>>  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
>>  scripts/ci/windows/msys2_install.sh | 41 +++++++++++++++++++++++++++++
>>  3 files changed, 99 insertions(+)
>>  create mode 100644 scripts/ci/windows/msys2_build.sh
>>  create mode 100644 scripts/ci/windows/msys2_install.sh
>>
>> diff --git a/.cirrus.yml b/.cirrus.yml
>> index f287d23c5b..d377c28412 100644
>> --- a/.cirrus.yml
>> +++ b/.cirrus.yml
>> @@ -40,3 +40,26 @@ macos_xcode_task:
>>      - ../configure --cc=clang || { cat config.log; exit 1; }
>>      - gmake -j$(sysctl -n hw.ncpu)
>>      - gmake check
>> +
>> +windows_msys2_task:
>> +  windows_container:
>> +    image: cirrusci/windowsservercore:cmake
>> +    os_version: 2019
>> +    cpu: 8
>> +    memory: 8G
>> +  env:
>> +    MSYS: winsymlinks:nativestrict
>> +    MSYSTEM: MINGW64
>> +    CHERE_INVOKING: 1
>> +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
>> +  install_script:
>> +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
>> +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"
>> +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman -U --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
>> +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy --noconfirm"
>> +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime"
>> +    - taskkill /F /IM gpg-agent.exe
>> +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Su"
>> +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh scripts/ci/windows/msys2_install.sh"
>> +  script:
>> +    C:\tools\msys64\usr\bin\bash.exe -lc "sh scripts/ci/windows/msys2_build.sh"
>> diff --git a/scripts/ci/windows/msys2_build.sh b/scripts/ci/windows/msys2_build.sh
>> new file mode 100644
>> index 0000000000..0363ef402a
>> --- /dev/null
>> +++ b/scripts/ci/windows/msys2_build.sh
>> @@ -0,0 +1,35 @@
>> +export QEMU_DIR=$PWD
>> +mkdir ../qemu-build
>> +cd ../qemu-build
>> +$QEMU_DIR/configure \
>> +  --python=python3 \
>> +  --cross-prefix=x86_64-w64-mingw32- \
> 
> Isn't the prefix 'x86_64-w64-mingw32-gcc-'?
> 
>> +  --enable-gtk --enable-sdl \
>> +  --enable-capstone=git \
>> +  --enable-stack-protector \
>> +  --ninja=ninja \
>> +  --enable-gnutls \
>> +  --enable-nettle \
>> +  --enable-vnc \
>> +  --enable-vnc-sasl \
>> +  --enable-vnc-jpeg \
>> +  --enable-vnc-png \
>> +  --enable-membarrier \
>> +  --enable-slirp=git \
>> +  --disable-kvm \
>> +  --enable-hax \
>> +  --enable-whpx \
>> +  --disable-spice \
>> +  --enable-lzo \
>> +  --enable-snappy \
>> +  --enable-bzip2 \
>> +  --enable-vdi \
>> +  --enable-qcow1 \
>> +  --enable-tools \
>> +  --enable-libusb \
>> +  --enable-usb-redir \
>> +  --disable-libnfs \
>> +  --enable-libssh \
>> +  --disable-pie
>> +make -j$NUMBER_OF_PROCESSORS
>> +# make -j$NUMBER_OF_PROCESSORS check
>> diff --git a/scripts/ci/windows/msys2_install.sh b/scripts/ci/windows/msys2_install.sh
>> new file mode 100644
>> index 0000000000..3a5392cd99
>> --- /dev/null
>> +++ b/scripts/ci/windows/msys2_install.sh
>> @@ -0,0 +1,41 @@
>> +pacman --noconfirm -S --needed \
>> +base-devel \
>> +git \
>> +mingw-w64-x86_64-python \
>> +mingw-w64-x86_64-python-setuptools \
>> +mingw-w64-x86_64-toolchain \
>> +mingw-w64-x86_64-SDL2 \
>> +mingw-w64-x86_64-SDL2_image \
>> +mingw-w64-x86_64-gtk3 \
>> +mingw-w64-x86_64-ninja \
>> +mingw-w64-x86_64-make \
>> +mingw-w64-x86_64-lzo2 \
>> +mingw-w64-x86_64-libjpeg-turbo \
>> +mingw-w64-x86_64-pixman \
>> +mingw-w64-x86_64-libgcrypt \
>> +mingw-w64-x86_64-capstone \
>> +mingw-w64-x86_64-libpng \
>> +mingw-w64-x86_64-libssh \
>> +mingw-w64-x86_64-libxml2 \
>> +mingw-w64-x86_64-snappy \
>> +mingw-w64-x86_64-libusb \
>> +mingw-w64-x86_64-usbredir \
>> +mingw-w64-x86_64-libtasn1 \
>> +mingw-w64-x86_64-libnfs \
>> +mingw-w64-x86_64-nettle \
>> +mingw-w64-x86_64-cyrus-sasl \
>> +mingw-w64-x86_64-curl \
>> +mingw-w64-x86_64-gnutls \
>> +mingw-w64-x86_64-zstd \
>> +mingw-w64-x86_64-glib2

Great work! Having a CI for msys2/mingw-w64 is fantastic :)


ATB,

Mark.
Mark Cave-Ayland Sept. 2, 2020, 6:54 p.m. UTC | #5
On 02/09/2020 18:50, 罗勇刚(Yonggang Luo) wrote:

> On Thu, Sep 3, 2020 at 1:30 AM Philippe Mathieu-Daudé <f4bug@amsat.org
> <mailto:f4bug@amsat.org>> wrote:
> 
>     On 9/2/20 7:00 PM, Yonggang Luo wrote:
>     > ---
>     >  .cirrus.yml                         | 23 ++++++++++++++++
>     >  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
>     >  scripts/ci/windows/msys2_install.sh | 41 +++++++++++++++++++++++++++++
>     >  3 files changed, 99 insertions(+)
>     >  create mode 100644 scripts/ci/windows/msys2_build.sh
>     >  create mode 100644 scripts/ci/windows/msys2_install.sh
>     >
>     > diff --git a/.cirrus.yml b/.cirrus.yml
>     > index f287d23c5b..d377c28412 100644
>     > --- a/.cirrus.yml
>     > +++ b/.cirrus.yml
>     > @@ -40,3 +40,26 @@ macos_xcode_task:
>     >      - ../configure --cc=clang || { cat config.log; exit 1; }
>     >      - gmake -j$(sysctl -n hw.ncpu)
>     >      - gmake check
>     > +
>     > +windows_msys2_task:
>     > +  windows_container:
>     > +    image: cirrusci/windowsservercore:cmake
>     > +    os_version: 2019
>     > +    cpu: 8
>     > +    memory: 8G
>     > +  env:
>     > +    MSYS: winsymlinks:nativestrict
>     > +    MSYSTEM: MINGW64
>     > +    CHERE_INVOKING: 1
>     > +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
>     > +  install_script:
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
>     http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
>     http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman -U
>     --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy --noconfirm"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed --noconfirm -S
>     bash pacman pacman-mirrors msys2-runtime"
>     > +    - taskkill /F /IM gpg-agent.exe
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Su"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh
>     scripts/ci/windows/msys2_install.sh"
>     > +  script:
>     > +    C:\tools\msys64\usr\bin\bash.exe -lc "sh scripts/ci/windows/msys2_build.sh"
>     > diff --git a/scripts/ci/windows/msys2_build.sh b/scripts/ci/windows/msys2_build.sh
>     > new file mode 100644
>     > index 0000000000..0363ef402a
>     > --- /dev/null
>     > +++ b/scripts/ci/windows/msys2_build.sh
>     > @@ -0,0 +1,35 @@
>     > +export QEMU_DIR=$PWD
>     > +mkdir ../qemu-build
>     > +cd ../qemu-build
>     > +$QEMU_DIR/configure \
>     > +  --python=python3 \
>     > +  --cross-prefix=x86_64-w64-mingw32- \
> 
>     Isn't the prefix 'x86_64-w64-mingw32-gcc-'?
> 
>     > +  --enable-gtk --enable-sdl \
>     > +  --enable-capstone=git \
>     > +  --enable-stack-protector \
>     > +  --ninja=ninja \
>     > +  --enable-gnutls \
>     > +  --enable-nettle \
>     > +  --enable-vnc \
>     > +  --enable-vnc-sasl \
>     > +  --enable-vnc-jpeg \
>     > +  --enable-vnc-png \
>     > +  --enable-membarrier \
>     > +  --enable-slirp=git \
>     > +  --disable-kvm \
>     > +  --enable-hax \
>     > +  --enable-whpx \
>     > +  --disable-spice \
>     > +  --enable-lzo \
>     > +  --enable-snappy \
>     > +  --enable-bzip2 \
>     > +  --enable-vdi \
>     > +  --enable-qcow1 \
>     > +  --enable-tools \
>     > +  --enable-libusb \
>     > +  --enable-usb-redir \
>     > +  --disable-libnfs \
>     > +  --enable-libssh \
>     > +  --disable-pie
>     > +make -j$NUMBER_OF_PROCESSORS
>     > +# make -j$NUMBER_OF_PROCESSORS check
>     > diff --git a/scripts/ci/windows/msys2_install.sh
>     b/scripts/ci/windows/msys2_install.sh
>     > new file mode 100644
>     > index 0000000000..3a5392cd99
>     > --- /dev/null
>     > +++ b/scripts/ci/windows/msys2_install.sh
>     > @@ -0,0 +1,41 @@
>     > +pacman --noconfirm -S --needed \
>     > +base-devel \
>     > +git \
>     > +mingw-w64-x86_64-python \
>     > +mingw-w64-x86_64-python-setuptools \
>     > +mingw-w64-x86_64-toolchain \
>     > +mingw-w64-x86_64-SDL2 \
>     > +mingw-w64-x86_64-SDL2_image \
>     > +mingw-w64-x86_64-gtk3 \
>     > +mingw-w64-x86_64-ninja \
>     > +mingw-w64-x86_64-make \
>     > +mingw-w64-x86_64-lzo2 \
>     > +mingw-w64-x86_64-libjpeg-turbo \
>     > +mingw-w64-x86_64-pixman \
>     > +mingw-w64-x86_64-libgcrypt \
>     > +mingw-w64-x86_64-capstone \
>     > +mingw-w64-x86_64-libpng \
>     > +mingw-w64-x86_64-libssh \
>     > +mingw-w64-x86_64-libxml2 \
>     > +mingw-w64-x86_64-snappy \
>     > +mingw-w64-x86_64-libusb \
>     > +mingw-w64-x86_64-usbredir \
>     > +mingw-w64-x86_64-libtasn1 \
>     > +mingw-w64-x86_64-libnfs \
>     > +mingw-w64-x86_64-nettle \
>     > +mingw-w64-x86_64-cyrus-sasl \
>     > +mingw-w64-x86_64-curl \
>     > +mingw-w64-x86_64-gnutls \
>     > +mingw-w64-x86_64-zstd \
>     > +mingw-w64-x86_64-glib2
>     > +
>     > +cd /mingw64/bin
>     > +cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
>     > +cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
>     > +cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
>     > +cp windres.exe x86_64-w64-mingw32-windres.exe
>     > +cp strip.exe x86_64-w64-mingw32-strip.exe
>     > +cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
>     > +cp ld x86_64-w64-mingw32-ld.exe
>     > +cp as x86_64-w64-mingw32-as.exe
>     > +cp sdl2-config x86_64-w64-mingw32-sdl2-config
> 
>     Why is that needed?
> 
>     Thanks,
> 
>     Phil.
> 
> Hi, I am looking for suggestion for building  with msys2, this is comes from wiki, if
> you have better idea, then tell me.
> 
> https://wiki.qemu.org/Hosts/W32#Native_builds_with_MSYS2 

FWIW I did a clean install of MSYS2 after the meson changes were merged and it seems
to make things a bit simpler for Windows. Once Paolo's latest PR has been applied you
should be able to do the following (from my notes for PPC builds):

# As per https://www.msys2.org/
pacman -Syu
pacman -Su

# QEMU build environment
pacman -S \
  base-devel \
  mingw-w64-x86_64-toolchain \
  git \
  mingw64/mingw-w64-x86_64-python3 \
  mingw64/mingw-w64-x86_64-python-setuptools \
  mingw64/mingw-w64-x86_64-ninja

# Basic GTK/SDL build
pacman -S \
  mingw-w64-x86_64-glib2 \
  mingw64/mingw-w64-x86_64-gtk3 \
  mingw64/mingw-w64-x86_64-SDL2

# Build
./configure --target-list="ppc-softmmu" --ninja=ninja
make -j6

That should be enough to get a basic working Windows build with GTK/SDL2 UI, although
I see you've added a lot more options.


ATB,

Mark.
Yonggang Luo Sept. 2, 2020, 6:56 p.m. UTC | #6
On Thu, Sep 3, 2020 at 2:55 AM Mark Cave-Ayland <
mark.cave-ayland@ilande.co.uk> wrote:

> On 02/09/2020 18:50, 罗勇刚(Yonggang Luo) wrote:
>
> > On Thu, Sep 3, 2020 at 1:30 AM Philippe Mathieu-Daudé <f4bug@amsat.org
> > <mailto:f4bug@amsat.org>> wrote:
> >
> >     On 9/2/20 7:00 PM, Yonggang Luo wrote:
> >     > ---
> >     >  .cirrus.yml                         | 23 ++++++++++++++++
> >     >  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
> >     >  scripts/ci/windows/msys2_install.sh | 41
> +++++++++++++++++++++++++++++
> >     >  3 files changed, 99 insertions(+)
> >     >  create mode 100644 scripts/ci/windows/msys2_build.sh
> >     >  create mode 100644 scripts/ci/windows/msys2_install.sh
> >     >
> >     > diff --git a/.cirrus.yml b/.cirrus.yml
> >     > index f287d23c5b..d377c28412 100644
> >     > --- a/.cirrus.yml
> >     > +++ b/.cirrus.yml
> >     > @@ -40,3 +40,26 @@ macos_xcode_task:
> >     >      - ../configure --cc=clang || { cat config.log; exit 1; }
> >     >      - gmake -j$(sysctl -n hw.ncpu)
> >     >      - gmake check
> >     > +
> >     > +windows_msys2_task:
> >     > +  windows_container:
> >     > +    image: cirrusci/windowsservercore:cmake
> >     > +    os_version: 2019
> >     > +    cpu: 8
> >     > +    memory: 8G
> >     > +  env:
> >     > +    MSYS: winsymlinks:nativestrict
> >     > +    MSYSTEM: MINGW64
> >     > +    CHERE_INVOKING: 1
> >     > +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
> >     > +  install_script:
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
> >
> http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
> "
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
> >
> http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
> "
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman
> -U
> >     --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy
> --noconfirm"
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed
> --noconfirm -S
> >     bash pacman pacman-mirrors msys2-runtime"
> >     > +    - taskkill /F /IM gpg-agent.exe
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm
> -Su"
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh
> >     scripts/ci/windows/msys2_install.sh"
> >     > +  script:
> >     > +    C:\tools\msys64\usr\bin\bash.exe -lc "sh
> scripts/ci/windows/msys2_build.sh"
> >     > diff --git a/scripts/ci/windows/msys2_build.sh
> b/scripts/ci/windows/msys2_build.sh
> >     > new file mode 100644
> >     > index 0000000000..0363ef402a
> >     > --- /dev/null
> >     > +++ b/scripts/ci/windows/msys2_build.sh
> >     > @@ -0,0 +1,35 @@
> >     > +export QEMU_DIR=$PWD
> >     > +mkdir ../qemu-build
> >     > +cd ../qemu-build
> >     > +$QEMU_DIR/configure \
> >     > +  --python=python3 \
> >     > +  --cross-prefix=x86_64-w64-mingw32- \
> >
> >     Isn't the prefix 'x86_64-w64-mingw32-gcc-'?
> >
> >     > +  --enable-gtk --enable-sdl \
> >     > +  --enable-capstone=git \
> >     > +  --enable-stack-protector \
> >     > +  --ninja=ninja \
> >     > +  --enable-gnutls \
> >     > +  --enable-nettle \
> >     > +  --enable-vnc \
> >     > +  --enable-vnc-sasl \
> >     > +  --enable-vnc-jpeg \
> >     > +  --enable-vnc-png \
> >     > +  --enable-membarrier \
> >     > +  --enable-slirp=git \
> >     > +  --disable-kvm \
> >     > +  --enable-hax \
> >     > +  --enable-whpx \
> >     > +  --disable-spice \
> >     > +  --enable-lzo \
> >     > +  --enable-snappy \
> >     > +  --enable-bzip2 \
> >     > +  --enable-vdi \
> >     > +  --enable-qcow1 \
> >     > +  --enable-tools \
> >     > +  --enable-libusb \
> >     > +  --enable-usb-redir \
> >     > +  --disable-libnfs \
> >     > +  --enable-libssh \
> >     > +  --disable-pie
> >     > +make -j$NUMBER_OF_PROCESSORS
> >     > +# make -j$NUMBER_OF_PROCESSORS check
> >     > diff --git a/scripts/ci/windows/msys2_install.sh
> >     b/scripts/ci/windows/msys2_install.sh
> >     > new file mode 100644
> >     > index 0000000000..3a5392cd99
> >     > --- /dev/null
> >     > +++ b/scripts/ci/windows/msys2_install.sh
> >     > @@ -0,0 +1,41 @@
> >     > +pacman --noconfirm -S --needed \
> >     > +base-devel \
> >     > +git \
> >     > +mingw-w64-x86_64-python \
> >     > +mingw-w64-x86_64-python-setuptools \
> >     > +mingw-w64-x86_64-toolchain \
> >     > +mingw-w64-x86_64-SDL2 \
> >     > +mingw-w64-x86_64-SDL2_image \
> >     > +mingw-w64-x86_64-gtk3 \
> >     > +mingw-w64-x86_64-ninja \
> >     > +mingw-w64-x86_64-make \
> >     > +mingw-w64-x86_64-lzo2 \
> >     > +mingw-w64-x86_64-libjpeg-turbo \
> >     > +mingw-w64-x86_64-pixman \
> >     > +mingw-w64-x86_64-libgcrypt \
> >     > +mingw-w64-x86_64-capstone \
> >     > +mingw-w64-x86_64-libpng \
> >     > +mingw-w64-x86_64-libssh \
> >     > +mingw-w64-x86_64-libxml2 \
> >     > +mingw-w64-x86_64-snappy \
> >     > +mingw-w64-x86_64-libusb \
> >     > +mingw-w64-x86_64-usbredir \
> >     > +mingw-w64-x86_64-libtasn1 \
> >     > +mingw-w64-x86_64-libnfs \
> >     > +mingw-w64-x86_64-nettle \
> >     > +mingw-w64-x86_64-cyrus-sasl \
> >     > +mingw-w64-x86_64-curl \
> >     > +mingw-w64-x86_64-gnutls \
> >     > +mingw-w64-x86_64-zstd \
> >     > +mingw-w64-x86_64-glib2
> >     > +
> >     > +cd /mingw64/bin
> >     > +cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
> >     > +cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
> >     > +cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
> >     > +cp windres.exe x86_64-w64-mingw32-windres.exe
> >     > +cp strip.exe x86_64-w64-mingw32-strip.exe
> >     > +cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
> >     > +cp ld x86_64-w64-mingw32-ld.exe
> >     > +cp as x86_64-w64-mingw32-as.exe
> >     > +cp sdl2-config x86_64-w64-mingw32-sdl2-config
> >
> >     Why is that needed?
> >
> >     Thanks,
> >
> >     Phil.
> >
> > Hi, I am looking for suggestion for building  with msys2, this is comes
> from wiki, if
> > you have better idea, then tell me.
> >
> > https://wiki.qemu.org/Hosts/W32#Native_builds_with_MSYS2
>
> FWIW I did a clean install of MSYS2 after the meson changes were merged
> and it seems
> to make things a bit simpler for Windows. Once Paolo's latest PR has been
> applied you
> should be able to do the following (from my notes for PPC builds):
>
> # As per https://www.msys2.org/
> pacman -Syu
> pacman -Su
>
> # QEMU build environment
> pacman -S \
>   base-devel \
>   mingw-w64-x86_64-toolchain \
>   git \
>   mingw64/mingw-w64-x86_64-python3 \
>   mingw64/mingw-w64-x86_64-python-setuptools \
>   mingw64/mingw-w64-x86_64-ninja
>
> # Basic GTK/SDL build
> pacman -S \
>   mingw-w64-x86_64-glib2 \
>   mingw64/mingw-w64-x86_64-gtk3 \
>   mingw64/mingw-w64-x86_64-SDL2
>
> # Build
> ./configure --target-list="ppc-softmmu" --ninja=ninja
> make -j6
>
> That should be enough to get a basic working Windows build with GTK/SDL2
> UI, although
> I see you've added a lot more options.

I am trying to enable all possible feature on the CI for monitoring the
regression, at least from the compiling points of view

>


>
> ATB,
>
> Mark.
>
Mark Cave-Ayland Sept. 2, 2020, 7 p.m. UTC | #7
On 02/09/2020 19:56, 罗勇刚(Yonggang Luo) wrote:

> On Thu, Sep 3, 2020 at 2:55 AM Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk
> <mailto:mark.cave-ayland@ilande.co.uk>> wrote:
> 
>     On 02/09/2020 18:50, 罗勇刚(Yonggang Luo) wrote:
> 
>     > On Thu, Sep 3, 2020 at 1:30 AM Philippe Mathieu-Daudé <f4bug@amsat.org
>     <mailto:f4bug@amsat.org>
>     > <mailto:f4bug@amsat.org <mailto:f4bug@amsat.org>>> wrote:
>     >
>     >     On 9/2/20 7:00 PM, Yonggang Luo wrote:
>     >     > ---
>     >     >  .cirrus.yml                         | 23 ++++++++++++++++
>     >     >  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
>     >     >  scripts/ci/windows/msys2_install.sh | 41 +++++++++++++++++++++++++++++
>     >     >  3 files changed, 99 insertions(+)
>     >     >  create mode 100644 scripts/ci/windows/msys2_build.sh
>     >     >  create mode 100644 scripts/ci/windows/msys2_install.sh
>     >     >
>     >     > diff --git a/.cirrus.yml b/.cirrus.yml
>     >     > index f287d23c5b..d377c28412 100644
>     >     > --- a/.cirrus.yml
>     >     > +++ b/.cirrus.yml
>     >     > @@ -40,3 +40,26 @@ macos_xcode_task:
>     >     >      - ../configure --cc=clang || { cat config.log; exit 1; }
>     >     >      - gmake -j$(sysctl -n hw.ncpu)
>     >     >      - gmake check
>     >     > +
>     >     > +windows_msys2_task:
>     >     > +  windows_container:
>     >     > +    image: cirrusci/windowsservercore:cmake
>     >     > +    os_version: 2019
>     >     > +    cpu: 8
>     >     > +    memory: 8G
>     >     > +  env:
>     >     > +    MSYS: winsymlinks:nativestrict
>     >     > +    MSYSTEM: MINGW64
>     >     > +    CHERE_INVOKING: 1
>     >     > +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
>     >     > +  install_script:
>     >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
>     >     http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
>     >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O
>     >   
>      http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"
>     >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman -U
>     >     --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
>     >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy --noconfirm"
>     >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed --noconfirm -S
>     >     bash pacman pacman-mirrors msys2-runtime"
>     >     > +    - taskkill /F /IM gpg-agent.exe
>     >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Su"
>     >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh
>     >     scripts/ci/windows/msys2_install.sh"
>     >     > +  script:
>     >     > +    C:\tools\msys64\usr\bin\bash.exe -lc "sh
>     scripts/ci/windows/msys2_build.sh"
>     >     > diff --git a/scripts/ci/windows/msys2_build.sh
>     b/scripts/ci/windows/msys2_build.sh
>     >     > new file mode 100644
>     >     > index 0000000000..0363ef402a
>     >     > --- /dev/null
>     >     > +++ b/scripts/ci/windows/msys2_build.sh
>     >     > @@ -0,0 +1,35 @@
>     >     > +export QEMU_DIR=$PWD
>     >     > +mkdir ../qemu-build
>     >     > +cd ../qemu-build
>     >     > +$QEMU_DIR/configure \
>     >     > +  --python=python3 \
>     >     > +  --cross-prefix=x86_64-w64-mingw32- \
>     >
>     >     Isn't the prefix 'x86_64-w64-mingw32-gcc-'?
>     >
>     >     > +  --enable-gtk --enable-sdl \
>     >     > +  --enable-capstone=git \
>     >     > +  --enable-stack-protector \
>     >     > +  --ninja=ninja \
>     >     > +  --enable-gnutls \
>     >     > +  --enable-nettle \
>     >     > +  --enable-vnc \
>     >     > +  --enable-vnc-sasl \
>     >     > +  --enable-vnc-jpeg \
>     >     > +  --enable-vnc-png \
>     >     > +  --enable-membarrier \
>     >     > +  --enable-slirp=git \
>     >     > +  --disable-kvm \
>     >     > +  --enable-hax \
>     >     > +  --enable-whpx \
>     >     > +  --disable-spice \
>     >     > +  --enable-lzo \
>     >     > +  --enable-snappy \
>     >     > +  --enable-bzip2 \
>     >     > +  --enable-vdi \
>     >     > +  --enable-qcow1 \
>     >     > +  --enable-tools \
>     >     > +  --enable-libusb \
>     >     > +  --enable-usb-redir \
>     >     > +  --disable-libnfs \
>     >     > +  --enable-libssh \
>     >     > +  --disable-pie
>     >     > +make -j$NUMBER_OF_PROCESSORS
>     >     > +# make -j$NUMBER_OF_PROCESSORS check
>     >     > diff --git a/scripts/ci/windows/msys2_install.sh
>     >     b/scripts/ci/windows/msys2_install.sh
>     >     > new file mode 100644
>     >     > index 0000000000..3a5392cd99
>     >     > --- /dev/null
>     >     > +++ b/scripts/ci/windows/msys2_install.sh
>     >     > @@ -0,0 +1,41 @@
>     >     > +pacman --noconfirm -S --needed \
>     >     > +base-devel \
>     >     > +git \
>     >     > +mingw-w64-x86_64-python \
>     >     > +mingw-w64-x86_64-python-setuptools \
>     >     > +mingw-w64-x86_64-toolchain \
>     >     > +mingw-w64-x86_64-SDL2 \
>     >     > +mingw-w64-x86_64-SDL2_image \
>     >     > +mingw-w64-x86_64-gtk3 \
>     >     > +mingw-w64-x86_64-ninja \
>     >     > +mingw-w64-x86_64-make \
>     >     > +mingw-w64-x86_64-lzo2 \
>     >     > +mingw-w64-x86_64-libjpeg-turbo \
>     >     > +mingw-w64-x86_64-pixman \
>     >     > +mingw-w64-x86_64-libgcrypt \
>     >     > +mingw-w64-x86_64-capstone \
>     >     > +mingw-w64-x86_64-libpng \
>     >     > +mingw-w64-x86_64-libssh \
>     >     > +mingw-w64-x86_64-libxml2 \
>     >     > +mingw-w64-x86_64-snappy \
>     >     > +mingw-w64-x86_64-libusb \
>     >     > +mingw-w64-x86_64-usbredir \
>     >     > +mingw-w64-x86_64-libtasn1 \
>     >     > +mingw-w64-x86_64-libnfs \
>     >     > +mingw-w64-x86_64-nettle \
>     >     > +mingw-w64-x86_64-cyrus-sasl \
>     >     > +mingw-w64-x86_64-curl \
>     >     > +mingw-w64-x86_64-gnutls \
>     >     > +mingw-w64-x86_64-zstd \
>     >     > +mingw-w64-x86_64-glib2
>     >     > +
>     >     > +cd /mingw64/bin
>     >     > +cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
>     >     > +cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
>     >     > +cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
>     >     > +cp windres.exe x86_64-w64-mingw32-windres.exe
>     >     > +cp strip.exe x86_64-w64-mingw32-strip.exe
>     >     > +cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
>     >     > +cp ld x86_64-w64-mingw32-ld.exe
>     >     > +cp as x86_64-w64-mingw32-as.exe
>     >     > +cp sdl2-config x86_64-w64-mingw32-sdl2-config
>     >
>     >     Why is that needed?
>     >
>     >     Thanks,
>     >
>     >     Phil.
>     >
>     > Hi, I am looking for suggestion for building  with msys2, this is comes from
>     wiki, if
>     > you have better idea, then tell me.
>     >
>     > https://wiki.qemu.org/Hosts/W32#Native_builds_with_MSYS2 
> 
>     FWIW I did a clean install of MSYS2 after the meson changes were merged and it seems
>     to make things a bit simpler for Windows. Once Paolo's latest PR has been applied you
>     should be able to do the following (from my notes for PPC builds):
> 
>     # As per https://www.msys2.org/
>     pacman -Syu
>     pacman -Su
> 
>     # QEMU build environment
>     pacman -S \
>       base-devel \
>       mingw-w64-x86_64-toolchain \
>       git \
>       mingw64/mingw-w64-x86_64-python3 \
>       mingw64/mingw-w64-x86_64-python-setuptools \
>       mingw64/mingw-w64-x86_64-ninja
> 
>     # Basic GTK/SDL build
>     pacman -S \
>       mingw-w64-x86_64-glib2 \
>       mingw64/mingw-w64-x86_64-gtk3 \
>       mingw64/mingw-w64-x86_64-SDL2
> 
>     # Build
>     ./configure --target-list="ppc-softmmu" --ninja=ninja
>     make -j6
> 
>     That should be enough to get a basic working Windows build with GTK/SDL2 UI, although
>     I see you've added a lot more options.
> 
> I am trying to enable all possible feature on the CI for monitoring the regression,
> at least from the compiling points of view 

Yes indeed, it looks like a very comprehensive build :)  Note that with the meson
build I no longer have to copy/rename toolchain exes compared to your .cirrus.yml
file so maybe that issue is now fixed?


ATB,

Mark.
Yonggang Luo Sept. 2, 2020, 7:01 p.m. UTC | #8
>
>
> Yes indeed, it looks like a very comprehensive build :)  Note that with
> the meson
> build I no longer have to copy/rename toolchain exes compared to your
> .cirrus.yml
> file so maybe that issue is now fixed?
>
> That's not fixed, I am building a full build, so I will use any possible
toolchain, and you may not use it at all.

>
> ATB,
>
> Mark.
>
Mark Cave-Ayland Sept. 2, 2020, 7:13 p.m. UTC | #9
On 02/09/2020 20:01, 罗勇刚(Yonggang Luo) wrote:

>     Yes indeed, it looks like a very comprehensive build :)  Note that with the meson
>     build I no longer have to copy/rename toolchain exes compared to your .cirrus.yml
>     file so maybe that issue is now fixed?
> 
> That's not fixed, I am building a full build, so I will use any possible toolchain,
> and you may not use it at all. 

Hmmm. I'd expect meson to detect the toolchain once and use it throughout the build,
so perhaps this is still using some Makefile logic? I think Paolo's latest PR should
help improve this.


ATB,

Mark.
Yonggang Luo Sept. 2, 2020, 7:15 p.m. UTC | #10
On Thu, Sep 3, 2020 at 3:13 AM Mark Cave-Ayland <
mark.cave-ayland@ilande.co.uk> wrote:

> On 02/09/2020 20:01, 罗勇刚(Yonggang Luo) wrote:
>
> >     Yes indeed, it looks like a very comprehensive build :)  Note that
> with the meson
> >     build I no longer have to copy/rename toolchain exes compared to
> your .cirrus.yml
> >     file so maybe that issue is now fixed?
> >
> > That's not fixed, I am building a full build, so I will use any possible
> toolchain,
> > and you may not use it at all.
>
> Hmmm. I'd expect meson to detect the toolchain once and use it throughout
> the build,
> so perhaps this is still using some Makefile logic? I think Paolo's latest
> PR should
> help improve this.
>
> Yeap, improved but not done, I think once configure are gone, then the
tricky are gone

>
> ATB,
>
> Mark.
>
Philippe Mathieu-Daudé Sept. 2, 2020, 7:31 p.m. UTC | #11
On 9/2/20 7:42 PM, 罗勇刚(Yonggang Luo) wrote:
> 
> 
> On Thu, Sep 3, 2020 at 1:30 AM Philippe Mathieu-Daudé <f4bug@amsat.org
> <mailto:f4bug@amsat.org>> wrote:
> 
>     On 9/2/20 7:00 PM, Yonggang Luo wrote:
>     > ---
>     >  .cirrus.yml                         | 23 ++++++++++++++++
>     >  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
>     >  scripts/ci/windows/msys2_install.sh | 41
>     +++++++++++++++++++++++++++++
>     >  3 files changed, 99 insertions(+)
>     >  create mode 100644 scripts/ci/windows/msys2_build.sh
>     >  create mode 100644 scripts/ci/windows/msys2_install.sh
>     >
>     > diff --git a/.cirrus.yml b/.cirrus.yml
>     > index f287d23c5b..d377c28412 100644
>     > --- a/.cirrus.yml
>     > +++ b/.cirrus.yml
>     > @@ -40,3 +40,26 @@ macos_xcode_task:
>     >      - ../configure --cc=clang || { cat config.log; exit 1; }
>     >      - gmake -j$(sysctl -n hw.ncpu)
>     >      - gmake check
>     > +
>     > +windows_msys2_task:
>     > +  windows_container:
>     > +    image: cirrusci/windowsservercore:cmake
>     > +    os_version: 2019
>     > +    cpu: 8
>     > +    memory: 8G
>     > +  env:
>     > +    MSYS: winsymlinks:nativestrict
>     > +    MSYSTEM: MINGW64
>     > +    CHERE_INVOKING: 1
>     > +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
>     > +  install_script:
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl
>     -O
>     http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl
>     -O
>     http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman
>     -U --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy --noconfirm"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed
>     --noconfirm -S bash pacman pacman-mirrors msys2-runtime"
>     > +    - taskkill /F /IM gpg-agent.exe
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Su"
>     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh
>     scripts/ci/windows/msys2_install.sh"
>     > +  script:
>     > +    C:\tools\msys64\usr\bin\bash.exe -lc "sh
>     scripts/ci/windows/msys2_build.sh"
>     > diff --git a/scripts/ci/windows/msys2_build.sh
>     b/scripts/ci/windows/msys2_build.sh
>     > new file mode 100644
>     > index 0000000000..0363ef402a
>     > --- /dev/null
>     > +++ b/scripts/ci/windows/msys2_build.sh
>     > @@ -0,0 +1,35 @@
>     > +export QEMU_DIR=$PWD
>     > +mkdir ../qemu-build
>     > +cd ../qemu-build
>     > +$QEMU_DIR/configure \
>     > +  --python=python3 \
>     > +  --cross-prefix=x86_64-w64-mingw32- \
> 
>     Isn't the prefix 'x86_64-w64-mingw32-gcc-'?
> 
> No, because of this:
> ```
> C:\CI-Tools\msys64\mingw64\bin>dir x86_64-w64-mingw32*
>  驱动器 C 中的卷是 系统
>  卷的序列号是 CAD5-8E95
> 
>  C:\CI-Tools\msys64\mingw64\bin 的目录
> 
> 2018/01/17  16:54            36,022 x86_64-w64-mingw32-agrep.exe
> 2020/09/02  05:06            67,861 x86_64-w64-mingw32-ar.exe
> 2020/09/02  05:06         2,872,225 x86_64-w64-mingw32-as.exe
> 2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-c++.exe
> 2020/02/17  19:50           489,984 x86_64-w64-mingw32-captoinfo.exe
> 2020/02/17  19:50           348,160 x86_64-w64-mingw32-clear.exe
> 2020/06/26  17:21            64,176 x86_64-w64-mingw32-deflatehd.exe
> 2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-g++.exe
> 2020/07/24  15:41         2,205,454 x86_64-w64-mingw32-gcc-10.2.0.exe
> 2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-ar.exe
> 2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-nm.exe
> 2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-ranlib.exe
> 2020/07/24  15:41         2,205,454 x86_64-w64-mingw32-gcc.exe
> 2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-gfortran.exe
> 2020/06/26  17:21            59,734 x86_64-w64-mingw32-inflatehd.exe
> 2020/02/17  19:50           462,848 x86_64-w64-mingw32-infocmp.exe
> 2020/02/17  19:50           489,984 x86_64-w64-mingw32-infotocap.exe
> 2020/09/02  05:06         2,773,229 x86_64-w64-mingw32-ld.exe
> 2020/09/02  05:06            67,861 x86_64-w64-mingw32-nm.exe
> 2020/09/02  05:06         2,367,282 x86_64-w64-mingw32-objcopy.exe
> 2017/03/22  14:58           669,355 x86_64-w64-mingw32-pkg-config.exe
> 2020/09/02  05:06            67,861 x86_64-w64-mingw32-ranlib.exe
> 2020/02/17  19:50           356,352 x86_64-w64-mingw32-reset.exe
> 2020/09/02  05:06             1,444 x86_64-w64-mingw32-sdl2-config
> 2020/09/02  05:06         2,367,282 x86_64-w64-mingw32-strip.exe
> 2020/02/17  19:50           348,160 x86_64-w64-mingw32-tabs.exe
> 2020/02/17  19:50           489,984 x86_64-w64-mingw32-tic.exe
> 2020/02/17  19:50           409,600 x86_64-w64-mingw32-toe.exe
> 2020/02/17  19:50           355,328 x86_64-w64-mingw32-tput.exe
> 2020/02/17  19:50           356,352 x86_64-w64-mingw32-tset.exe
> 2020/09/02  05:06         2,344,638 x86_64-w64-mingw32-windres.exe

So 'x86_64-w64-mingw32-' it is.

>               31 个文件     29,104,255 字节
>                0 个目录 203,338,362,880 可用字节
> ```
> 
> 
>     > +  --enable-gtk --enable-sdl \
>     > +  --enable-capstone=git \
>     > +  --enable-stack-protector \
>     > +  --ninja=ninja \
>     > +  --enable-gnutls \
>     > +  --enable-nettle \
>     > +  --enable-vnc \
>     > +  --enable-vnc-sasl \
>     > +  --enable-vnc-jpeg \
>     > +  --enable-vnc-png \
>     > +  --enable-membarrier \
>     > +  --enable-slirp=git \
>     > +  --disable-kvm \
>     > +  --enable-hax \
>     > +  --enable-whpx \
>     > +  --disable-spice \
>     > +  --enable-lzo \
>     > +  --enable-snappy \
>     > +  --enable-bzip2 \
>     > +  --enable-vdi \
>     > +  --enable-qcow1 \
>     > +  --enable-tools \
>     > +  --enable-libusb \
>     > +  --enable-usb-redir \
>     > +  --disable-libnfs \
>     > +  --enable-libssh \
>     > +  --disable-pie
>     > +make -j$NUMBER_OF_PROCESSORS
>     > +# make -j$NUMBER_OF_PROCESSORS check
>     > diff --git a/scripts/ci/windows/msys2_install.sh
>     b/scripts/ci/windows/msys2_install.sh
>     > new file mode 100644
>     > index 0000000000..3a5392cd99
>     > --- /dev/null
>     > +++ b/scripts/ci/windows/msys2_install.sh
>     > @@ -0,0 +1,41 @@
>     > +pacman --noconfirm -S --needed \
>     > +base-devel \
>     > +git \
>     > +mingw-w64-x86_64-python \
>     > +mingw-w64-x86_64-python-setuptools \
>     > +mingw-w64-x86_64-toolchain \
>     > +mingw-w64-x86_64-SDL2 \
>     > +mingw-w64-x86_64-SDL2_image \
>     > +mingw-w64-x86_64-gtk3 \
>     > +mingw-w64-x86_64-ninja \
>     > +mingw-w64-x86_64-make \
>     > +mingw-w64-x86_64-lzo2 \
>     > +mingw-w64-x86_64-libjpeg-turbo \
>     > +mingw-w64-x86_64-pixman \
>     > +mingw-w64-x86_64-libgcrypt \
>     > +mingw-w64-x86_64-capstone \
>     > +mingw-w64-x86_64-libpng \
>     > +mingw-w64-x86_64-libssh \
>     > +mingw-w64-x86_64-libxml2 \
>     > +mingw-w64-x86_64-snappy \
>     > +mingw-w64-x86_64-libusb \
>     > +mingw-w64-x86_64-usbredir \
>     > +mingw-w64-x86_64-libtasn1 \
>     > +mingw-w64-x86_64-libnfs \
>     > +mingw-w64-x86_64-nettle \
>     > +mingw-w64-x86_64-cyrus-sasl \
>     > +mingw-w64-x86_64-curl \
>     > +mingw-w64-x86_64-gnutls \
>     > +mingw-w64-x86_64-zstd \
>     > +mingw-w64-x86_64-glib2
>     > +
>     > +cd /mingw64/bin
>     > +cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
>     > +cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
>     > +cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
>     > +cp windres.exe x86_64-w64-mingw32-windres.exe
>     > +cp strip.exe x86_64-w64-mingw32-strip.exe
>     > +cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
>     > +cp ld x86_64-w64-mingw32-ld.exe
>     > +cp as x86_64-w64-mingw32-as.exe
>     > +cp sdl2-config x86_64-w64-mingw32-sdl2-config
> 
>     Why is that needed?
> 
> Comes from configure 

I meant why do you need to copy? The toolchain installation path names
seem broken...

> ```
> 
> ar="${AR-${cross_prefix}ar}"
> as="${AS-${cross_prefix}as}"
> ccas="${CCAS-$cc}"
> cpp="${CPP-$cc -E}"
> objcopy="${OBJCOPY-${cross_prefix}objcopy}"
> ld="${LD-${cross_prefix}ld}"
> ranlib="${RANLIB-${cross_prefix}ranlib}"
> nm="${NM-${cross_prefix}nm}"
> strip="${STRIP-${cross_prefix}strip}"
> windres="${WINDRES-${cross_prefix}windres}"
> pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
> query_pkg_config() {
>     "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
> }
> pkg_config=query_pkg_config
> sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
> 
> # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
> ARFLAGS="${ARFLAGS-rv}"
> ```
> 
>     Thanks,
> 
>     Phil.
> 
> 
> 
> -- 
>          此致
> 礼
> 罗勇刚
> Yours
>     sincerely,
> Yonggang Luo
Yonggang Luo Sept. 2, 2020, 7:32 p.m. UTC | #12
On Thu, Sep 3, 2020 at 3:31 AM Philippe Mathieu-Daudé <f4bug@amsat.org>
wrote:

> On 9/2/20 7:42 PM, 罗勇刚(Yonggang Luo) wrote:
> >
> >
> > On Thu, Sep 3, 2020 at 1:30 AM Philippe Mathieu-Daudé <f4bug@amsat.org
> > <mailto:f4bug@amsat.org>> wrote:
> >
> >     On 9/2/20 7:00 PM, Yonggang Luo wrote:
> >     > ---
> >     >  .cirrus.yml                         | 23 ++++++++++++++++
> >     >  scripts/ci/windows/msys2_build.sh   | 35 ++++++++++++++++++++++++
> >     >  scripts/ci/windows/msys2_install.sh | 41
> >     +++++++++++++++++++++++++++++
> >     >  3 files changed, 99 insertions(+)
> >     >  create mode 100644 scripts/ci/windows/msys2_build.sh
> >     >  create mode 100644 scripts/ci/windows/msys2_install.sh
> >     >
> >     > diff --git a/.cirrus.yml b/.cirrus.yml
> >     > index f287d23c5b..d377c28412 100644
> >     > --- a/.cirrus.yml
> >     > +++ b/.cirrus.yml
> >     > @@ -40,3 +40,26 @@ macos_xcode_task:
> >     >      - ../configure --cc=clang || { cat config.log; exit 1; }
> >     >      - gmake -j$(sysctl -n hw.ncpu)
> >     >      - gmake check
> >     > +
> >     > +windows_msys2_task:
> >     > +  windows_container:
> >     > +    image: cirrusci/windowsservercore:cmake
> >     > +    os_version: 2019
> >     > +    cpu: 8
> >     > +    memory: 8G
> >     > +  env:
> >     > +    MSYS: winsymlinks:nativestrict
> >     > +    MSYSTEM: MINGW64
> >     > +    CHERE_INVOKING: 1
> >     > +  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
> >     > +  install_script:
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl
> >     -O
> >
> http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
> "
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl
> >     -O
> >
> http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
> "
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman
> >     -U --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy
> --noconfirm"
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed
> >     --noconfirm -S bash pacman pacman-mirrors msys2-runtime"
> >     > +    - taskkill /F /IM gpg-agent.exe
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm
> -Su"
> >     > +    - C:\tools\msys64\usr\bin\bash.exe -lc "sh
> >     scripts/ci/windows/msys2_install.sh"
> >     > +  script:
> >     > +    C:\tools\msys64\usr\bin\bash.exe -lc "sh
> >     scripts/ci/windows/msys2_build.sh"
> >     > diff --git a/scripts/ci/windows/msys2_build.sh
> >     b/scripts/ci/windows/msys2_build.sh
> >     > new file mode 100644
> >     > index 0000000000..0363ef402a
> >     > --- /dev/null
> >     > +++ b/scripts/ci/windows/msys2_build.sh
> >     > @@ -0,0 +1,35 @@
> >     > +export QEMU_DIR=$PWD
> >     > +mkdir ../qemu-build
> >     > +cd ../qemu-build
> >     > +$QEMU_DIR/configure \
> >     > +  --python=python3 \
> >     > +  --cross-prefix=x86_64-w64-mingw32- \
> >
> >     Isn't the prefix 'x86_64-w64-mingw32-gcc-'?
> >
> > No, because of this:
> > ```
> > C:\CI-Tools\msys64\mingw64\bin>dir x86_64-w64-mingw32*
> >  驱动器 C 中的卷是 系统
> >  卷的序列号是 CAD5-8E95
> >
> >  C:\CI-Tools\msys64\mingw64\bin 的目录
> >
> > 2018/01/17  16:54            36,022 x86_64-w64-mingw32-agrep.exe
> > 2020/09/02  05:06            67,861 x86_64-w64-mingw32-ar.exe
> > 2020/09/02  05:06         2,872,225 x86_64-w64-mingw32-as.exe
> > 2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-c++.exe
> > 2020/02/17  19:50           489,984 x86_64-w64-mingw32-captoinfo.exe
> > 2020/02/17  19:50           348,160 x86_64-w64-mingw32-clear.exe
> > 2020/06/26  17:21            64,176 x86_64-w64-mingw32-deflatehd.exe
> > 2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-g++.exe
> > 2020/07/24  15:41         2,205,454 x86_64-w64-mingw32-gcc-10.2.0.exe
> > 2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-ar.exe
> > 2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-nm.exe
> > 2020/07/24  15:41            67,861 x86_64-w64-mingw32-gcc-ranlib.exe
> > 2020/07/24  15:41         2,205,454 x86_64-w64-mingw32-gcc.exe
> > 2020/07/24  15:41         2,208,014 x86_64-w64-mingw32-gfortran.exe
> > 2020/06/26  17:21            59,734 x86_64-w64-mingw32-inflatehd.exe
> > 2020/02/17  19:50           462,848 x86_64-w64-mingw32-infocmp.exe
> > 2020/02/17  19:50           489,984 x86_64-w64-mingw32-infotocap.exe
> > 2020/09/02  05:06         2,773,229 x86_64-w64-mingw32-ld.exe
> > 2020/09/02  05:06            67,861 x86_64-w64-mingw32-nm.exe
> > 2020/09/02  05:06         2,367,282 x86_64-w64-mingw32-objcopy.exe
> > 2017/03/22  14:58           669,355 x86_64-w64-mingw32-pkg-config.exe
> > 2020/09/02  05:06            67,861 x86_64-w64-mingw32-ranlib.exe
> > 2020/02/17  19:50           356,352 x86_64-w64-mingw32-reset.exe
> > 2020/09/02  05:06             1,444 x86_64-w64-mingw32-sdl2-config
> > 2020/09/02  05:06         2,367,282 x86_64-w64-mingw32-strip.exe
> > 2020/02/17  19:50           348,160 x86_64-w64-mingw32-tabs.exe
> > 2020/02/17  19:50           489,984 x86_64-w64-mingw32-tic.exe
> > 2020/02/17  19:50           409,600 x86_64-w64-mingw32-toe.exe
> > 2020/02/17  19:50           355,328 x86_64-w64-mingw32-tput.exe
> > 2020/02/17  19:50           356,352 x86_64-w64-mingw32-tset.exe
> > 2020/09/02  05:06         2,344,638 x86_64-w64-mingw32-windres.exe
>
> So 'x86_64-w64-mingw32-' it is.
>
> >               31 个文件     29,104,255 字节
> >                0 个目录 203,338,362,880 可用字节
> > ```
> >
> >
> >     > +  --enable-gtk --enable-sdl \
> >     > +  --enable-capstone=git \
> >     > +  --enable-stack-protector \
> >     > +  --ninja=ninja \
> >     > +  --enable-gnutls \
> >     > +  --enable-nettle \
> >     > +  --enable-vnc \
> >     > +  --enable-vnc-sasl \
> >     > +  --enable-vnc-jpeg \
> >     > +  --enable-vnc-png \
> >     > +  --enable-membarrier \
> >     > +  --enable-slirp=git \
> >     > +  --disable-kvm \
> >     > +  --enable-hax \
> >     > +  --enable-whpx \
> >     > +  --disable-spice \
> >     > +  --enable-lzo \
> >     > +  --enable-snappy \
> >     > +  --enable-bzip2 \
> >     > +  --enable-vdi \
> >     > +  --enable-qcow1 \
> >     > +  --enable-tools \
> >     > +  --enable-libusb \
> >     > +  --enable-usb-redir \
> >     > +  --disable-libnfs \
> >     > +  --enable-libssh \
> >     > +  --disable-pie
> >     > +make -j$NUMBER_OF_PROCESSORS
> >     > +# make -j$NUMBER_OF_PROCESSORS check
> >     > diff --git a/scripts/ci/windows/msys2_install.sh
> >     b/scripts/ci/windows/msys2_install.sh
> >     > new file mode 100644
> >     > index 0000000000..3a5392cd99
> >     > --- /dev/null
> >     > +++ b/scripts/ci/windows/msys2_install.sh
> >     > @@ -0,0 +1,41 @@
> >     > +pacman --noconfirm -S --needed \
> >     > +base-devel \
> >     > +git \
> >     > +mingw-w64-x86_64-python \
> >     > +mingw-w64-x86_64-python-setuptools \
> >     > +mingw-w64-x86_64-toolchain \
> >     > +mingw-w64-x86_64-SDL2 \
> >     > +mingw-w64-x86_64-SDL2_image \
> >     > +mingw-w64-x86_64-gtk3 \
> >     > +mingw-w64-x86_64-ninja \
> >     > +mingw-w64-x86_64-make \
> >     > +mingw-w64-x86_64-lzo2 \
> >     > +mingw-w64-x86_64-libjpeg-turbo \
> >     > +mingw-w64-x86_64-pixman \
> >     > +mingw-w64-x86_64-libgcrypt \
> >     > +mingw-w64-x86_64-capstone \
> >     > +mingw-w64-x86_64-libpng \
> >     > +mingw-w64-x86_64-libssh \
> >     > +mingw-w64-x86_64-libxml2 \
> >     > +mingw-w64-x86_64-snappy \
> >     > +mingw-w64-x86_64-libusb \
> >     > +mingw-w64-x86_64-usbredir \
> >     > +mingw-w64-x86_64-libtasn1 \
> >     > +mingw-w64-x86_64-libnfs \
> >     > +mingw-w64-x86_64-nettle \
> >     > +mingw-w64-x86_64-cyrus-sasl \
> >     > +mingw-w64-x86_64-curl \
> >     > +mingw-w64-x86_64-gnutls \
> >     > +mingw-w64-x86_64-zstd \
> >     > +mingw-w64-x86_64-glib2
> >     > +
> >     > +cd /mingw64/bin
> >     > +cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
> >     > +cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
> >     > +cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
> >     > +cp windres.exe x86_64-w64-mingw32-windres.exe
> >     > +cp strip.exe x86_64-w64-mingw32-strip.exe
> >     > +cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
> >     > +cp ld x86_64-w64-mingw32-ld.exe
> >     > +cp as x86_64-w64-mingw32-as.exe
> >     > +cp sdl2-config x86_64-w64-mingw32-sdl2-config
> >
> >     Why is that needed?
> >
> > Comes from configure
>
> I meant why do you need to copy? The toolchain installation path names
> seem broken...
>
> The copy also comes from the Wiki, and I fond more broken things, so I
copied more, maybe there are better way to do that.

> > ```
> >
> > ar="${AR-${cross_prefix}ar}"
> > as="${AS-${cross_prefix}as}"
> > ccas="${CCAS-$cc}"
> > cpp="${CPP-$cc -E}"
> > objcopy="${OBJCOPY-${cross_prefix}objcopy}"
> > ld="${LD-${cross_prefix}ld}"
> > ranlib="${RANLIB-${cross_prefix}ranlib}"
> > nm="${NM-${cross_prefix}nm}"
> > strip="${STRIP-${cross_prefix}strip}"
> > windres="${WINDRES-${cross_prefix}windres}"
> > pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
> > query_pkg_config() {
> >     "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
> > }
> > pkg_config=query_pkg_config
> > sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
> >
> > # If the user hasn't specified ARFLAGS, default to 'rv', just as make
> does.
> > ARFLAGS="${ARFLAGS-rv}"
> > ```
> >
> >     Thanks,
> >
> >     Phil.
> >
> >
> >
> > --
> >          此致
> > 礼
> > 罗勇刚
> > Yours
> >     sincerely,
> > Yonggang Luo
>
diff mbox series

Patch

diff --git a/.cirrus.yml b/.cirrus.yml
index f287d23c5b..d377c28412 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -40,3 +40,26 @@  macos_xcode_task:
     - ../configure --cc=clang || { cat config.log; exit 1; }
     - gmake -j$(sysctl -n hw.ncpu)
     - gmake check
+
+windows_msys2_task:
+  windows_container:
+    image: cirrusci/windowsservercore:cmake
+    os_version: 2019
+    cpu: 8
+    memory: 8G
+  env:
+    MSYS: winsymlinks:nativestrict
+    MSYSTEM: MINGW64
+    CHERE_INVOKING: 1
+  printenv_script: C:\tools\msys64\usr\bin\bash.exe -lc 'printenv'
+  install_script:
+    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
+    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"
+    - C:\tools\msys64\usr\bin\bash.exe -lc "cd /c/tools && pacman -U --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
+    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman -Sy --noconfirm"
+    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime"
+    - taskkill /F /IM gpg-agent.exe
+    - C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Su"
+    - C:\tools\msys64\usr\bin\bash.exe -lc "sh scripts/ci/windows/msys2_install.sh"
+  script:
+    C:\tools\msys64\usr\bin\bash.exe -lc "sh scripts/ci/windows/msys2_build.sh"
diff --git a/scripts/ci/windows/msys2_build.sh b/scripts/ci/windows/msys2_build.sh
new file mode 100644
index 0000000000..0363ef402a
--- /dev/null
+++ b/scripts/ci/windows/msys2_build.sh
@@ -0,0 +1,35 @@ 
+export QEMU_DIR=$PWD
+mkdir ../qemu-build
+cd ../qemu-build
+$QEMU_DIR/configure \
+  --python=python3 \
+  --cross-prefix=x86_64-w64-mingw32- \
+  --enable-gtk --enable-sdl \
+  --enable-capstone=git \
+  --enable-stack-protector \
+  --ninja=ninja \
+  --enable-gnutls \
+  --enable-nettle \
+  --enable-vnc \
+  --enable-vnc-sasl \
+  --enable-vnc-jpeg \
+  --enable-vnc-png \
+  --enable-membarrier \
+  --enable-slirp=git \
+  --disable-kvm \
+  --enable-hax \
+  --enable-whpx \
+  --disable-spice \
+  --enable-lzo \
+  --enable-snappy \
+  --enable-bzip2 \
+  --enable-vdi \
+  --enable-qcow1 \
+  --enable-tools \
+  --enable-libusb \
+  --enable-usb-redir \
+  --disable-libnfs \
+  --enable-libssh \
+  --disable-pie
+make -j$NUMBER_OF_PROCESSORS
+# make -j$NUMBER_OF_PROCESSORS check
diff --git a/scripts/ci/windows/msys2_install.sh b/scripts/ci/windows/msys2_install.sh
new file mode 100644
index 0000000000..3a5392cd99
--- /dev/null
+++ b/scripts/ci/windows/msys2_install.sh
@@ -0,0 +1,41 @@ 
+pacman --noconfirm -S --needed \
+base-devel \
+git \
+mingw-w64-x86_64-python \
+mingw-w64-x86_64-python-setuptools \
+mingw-w64-x86_64-toolchain \
+mingw-w64-x86_64-SDL2 \
+mingw-w64-x86_64-SDL2_image \
+mingw-w64-x86_64-gtk3 \
+mingw-w64-x86_64-ninja \
+mingw-w64-x86_64-make \
+mingw-w64-x86_64-lzo2 \
+mingw-w64-x86_64-libjpeg-turbo \
+mingw-w64-x86_64-pixman \
+mingw-w64-x86_64-libgcrypt \
+mingw-w64-x86_64-capstone \
+mingw-w64-x86_64-libpng \
+mingw-w64-x86_64-libssh \
+mingw-w64-x86_64-libxml2 \
+mingw-w64-x86_64-snappy \
+mingw-w64-x86_64-libusb \
+mingw-w64-x86_64-usbredir \
+mingw-w64-x86_64-libtasn1 \
+mingw-w64-x86_64-libnfs \
+mingw-w64-x86_64-nettle \
+mingw-w64-x86_64-cyrus-sasl \
+mingw-w64-x86_64-curl \
+mingw-w64-x86_64-gnutls \
+mingw-w64-x86_64-zstd \
+mingw-w64-x86_64-glib2
+
+cd /mingw64/bin
+cp x86_64-w64-mingw32-gcc-ar.exe x86_64-w64-mingw32-ar.exe
+cp x86_64-w64-mingw32-gcc-ranlib.exe x86_64-w64-mingw32-ranlib.exe
+cp x86_64-w64-mingw32-gcc-nm.exe x86_64-w64-mingw32-nm.exe
+cp windres.exe x86_64-w64-mingw32-windres.exe
+cp strip.exe x86_64-w64-mingw32-strip.exe
+cp objcopy.exe x86_64-w64-mingw32-objcopy.exe
+cp ld x86_64-w64-mingw32-ld.exe
+cp as x86_64-w64-mingw32-as.exe
+cp sdl2-config x86_64-w64-mingw32-sdl2-config