Message ID | 20200908194820.702-7-luoyonggang@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | W32, W64 patches | expand |
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 <luoyonggang@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. Regards, Daniel
On Wed, Sep 9, 2020 at 4:27 PM Daniel P. Berrangé <berrange@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 <luoyonggang@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 :| > >
On Wed, Sep 09, 2020 at 05:36:49PM +0800, 罗勇刚(Yonggang Luo) wrote: > On Wed, Sep 9, 2020 at 4:27 PM Daniel P. Berrangé <berrange@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 <luoyonggang@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. With all those args removed, there's no real reason for this separate shell script. Just put the configure && make commands dirctly in the cirrus.yml file, similar to the other builds in that file. Regards, Daniel
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 + +make -j$NUMBER_OF_PROCESSORS +make -i -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..6086452399 --- /dev/null +++ b/scripts/ci/windows/msys2-install.sh @@ -0,0 +1,33 @@ +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-glib2 \ +mingw-w64-x86_64-ninja \ +mingw-w64-x86_64-make \ +mingw-w64-x86_64-jemalloc \ +mingw-w64-x86_64-lzo2 \ +mingw-w64-x86_64-zstd \ +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 \ +
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 <luoyonggang@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