On Wed, Sep 9, 2020 at 4:27 PM Daniel P. Berrangé <berra...@redhat.com> wrote:
> On Wed, Sep 09, 2020 at 03:48:10AM +0800, Yonggang Luo wrote: > > Install msys2 in a proper way refer to > https://github.com/cirruslabs/cirrus-ci-docs/issues/699 > > The https://wiki.qemu.org/Hosts/W32#Native_builds_with_MSYS2 need to be > updated. > > There is no need of --cross-prefix, open mingw64.exe instead of > msys2.exe then we don't > > need the --cross-prefix, besides we using environment variable settings: > > MSYS: winsymlinks:nativestrict > > MSYSTEM: MINGW64 > > CHERE_INVOKING: 1 > > to opening mingw64 native shell. > > We now running tests with make -i check to skip tests errors. > > > > Signed-off-by: Yonggang Luo <luoyongg...@gmail.com> > > --- > > .cirrus.yml | 24 +++++++++++++++++++++ > > scripts/ci/windows/msys2-build.sh | 28 ++++++++++++++++++++++++ > > scripts/ci/windows/msys2-install.sh | 33 +++++++++++++++++++++++++++++ > > 3 files changed, 85 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 3dd9fcff7f..49335e68c9 100644 > > --- a/.cirrus.yml > > +++ b/.cirrus.yml > > @@ -63,3 +63,27 @@ macos_xcode_task: > > --enable-werror --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..d9d046b5b0 > > --- /dev/null > > +++ b/scripts/ci/windows/msys2-build.sh > > @@ -0,0 +1,28 @@ > > +mkdir build > > +cd build > > +../configure \ > > +--python=python3 \ > > +--ninja=ninja \ > > +--enable-stack-protector \ > > +--enable-guest-agent \ > > +--disable-pie \ > > +--enable-gnutls --enable-nettle \ > > +--enable-sdl --enable-sdl-image --enable-gtk --disable-vte > --enable-curses --enable-iconv \ > > +--enable-vnc --enable-vnc-sasl --enable-vnc-jpeg --enable-vnc-png \ > > +--enable-slirp=git \ > > +--disable-brlapi --enable-curl \ > > +--enable-fdt \ > > +--disable-kvm --enable-hax --enable-whpx \ > > +--enable-libnfs --enable-libusb --enable-live-block-migration > --enable-usb-redir \ > > +--enable-lzo --enable-snappy --enable-bzip2 --enable-zstd \ > > +--enable-membarrier --enable-coroutine-pool \ > > +--enable-libssh --enable-libxml2 \ > > +--enable-jemalloc --enable-avx2 \ > > +--enable-replication \ > > +--enable-tools \ > > +--enable-bochs --enable-cloop --enable-dmg --enable-qcow1 --enable-vdi > --enable-vvfat --enable-qed --enable-parallels \ > > +--enable-sheepdog \ > > +--enable-capstone=git > > Why do we need to have all these disable/enable args ? AFAIK, configure > should just "do the right thing" and automatically detect and enable > libraries which are present in the environment. > > Te intent is that a bare "configure" should complete successfully on all > supported platforms. Ff something breaks at build time, that is > generally considered a bug in the configure script as it should > automatically > disable any features that are broken on a given platform. > Gotcha, I'll leave only configure latter, currently I use this to detect which msys2 package not installed yet. > > > 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 :| > > -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo