diff mbox series

[v2,2/2] cirrus-ci: Remove MSYS2 jobs duplicated with gitlab-ci

Message ID 20230322135721.61138-3-philmd@linaro.org
State New
Headers show
Series ci: Remove cirrus-ci & cover SPICE in MSYS2 at gitlab-ci | expand

Commit Message

Philippe Mathieu-Daudé March 22, 2023, 1:57 p.m. UTC
- Various developers are reluctant to git Cirrus-CI the permissions
  requested to access their GitHub account.

- When we use the cirrus-run script to trigger Cirrus-CI job from
  GitLab-CI, the GitLab-CI job is restricted to a 1h timeout
  (often not enough).

- Although Cirrus-CI VMs are more powerful than GitLab-CI ones,
  its free plan is limited in 2 concurrent jobs.

- The GitLab-CI MSYS2 jobs are a 1:1 mapping with the Cirrus-CI ones
  (modulo the environment caching).

Reduce the maintenance burden by removing the Cirrus-CI config file,
keeping the GitLab-CI jobs.

Update Yonggang Luo's maintenance file list to the new file, which
use the same environment shell.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 MAINTAINERS |   3 +-
 .cirrus.yml | 111 ----------------------------------------------------
 2 files changed, 1 insertion(+), 113 deletions(-)
 delete mode 100644 .cirrus.yml

Comments

Daniel P. Berrangé March 22, 2023, 6:37 p.m. UTC | #1
On Wed, Mar 22, 2023 at 02:57:21PM +0100, Philippe Mathieu-Daudé wrote:
> - Various developers are reluctant to git Cirrus-CI the permissions

                                      s/git/give/

>   requested to access their GitHub account.
> 
> - When we use the cirrus-run script to trigger Cirrus-CI job from
>   GitLab-CI, the GitLab-CI job is restricted to a 1h timeout
>   (often not enough).
> 
> - Although Cirrus-CI VMs are more powerful than GitLab-CI ones,
>   its free plan is limited in 2 concurrent jobs.

Right and these two points combine to create us problems. Pushes to
gitlab get automatically mirrored to github, and thus in turn trigger
CI jobs directly on Cirrus.

These jobs can prevent the next PULL on the staging branch from getting
enough execution time, and make it more likely they'll hit the 1h timeout.
This ultimately reduces the reliability of the Cirrus CI jobs for FreeBSD
and macOS that we do care about from GitLab CI.

> - The GitLab-CI MSYS2 jobs are a 1:1 mapping with the Cirrus-CI ones
>   (modulo the environment caching).
> 
> Reduce the maintenance burden by removing the Cirrus-CI config file,
> keeping the GitLab-CI jobs.
> 
> Update Yonggang Luo's maintenance file list to the new file, which
> use the same environment shell.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>  MAINTAINERS |   3 +-
>  .cirrus.yml | 111 ----------------------------------------------------
>  2 files changed, 1 insertion(+), 113 deletions(-)
>  delete mode 100644 .cirrus.yml

> diff --git a/.cirrus.yml b/.cirrus.yml
> deleted file mode 100644
> index 5fb00da73d..0000000000
> --- a/.cirrus.yml
> +++ /dev/null

> -    MSYS2_PACKAGES: "
> -      diffutils git grep make pkg-config sed
> -      mingw-w64-x86_64-python
> -      mingw-w64-x86_64-python-sphinx

This isn't listed in the .gitlab-ci.d/windows.yml file

> -      mingw-w64-x86_64-toolchain

This also isn't listed

> -      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-jemalloc

This also isn't listed

> -      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-libpng
> -      mingw-w64-x86_64-libssh
> -      mingw-w64-x86_64-snappy
> -      mingw-w64-x86_64-libusb
> -      mingw-w64-x86_64-usbredir
> -      mingw-w64-x86_64-libtasn1
> -      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-libnfs

The  .gitlab-ci.d/windows.yml file meanwhile adds 'dtc' 'gcc'
and 'pkgconf' which are not present here.

This inconsistency is another point in favour of removing this
redundant cirrus config.

> -    "
> -    CHERE_INVOKING: 1
> -  msys2_cache:
> -    folder: C:\tools\archive
> -    reupload_on_changes: false
> -    # These env variables are used to generate fingerprint to trigger the cache procedure
> -    # If wanna to force re-populate msys2, increase MSYS2_FINGERPRINT
> -    fingerprint_script:
> -      - |
> -        echo $env:CIRRUS_TASK_NAME
> -        echo $env:MSYS2_URL
> -        echo $env:MSYS2_FINGERPRINT
> -        echo $env:MSYS2_PACKAGES
> -    populate_script:
> -      - |
> -        md -Force C:\tools\archive\pkg
> -        $start_time = Get-Date
> -        bitsadmin /transfer msys_download /dynamic /download /priority FOREGROUND $env:MSYS2_URL C:\tools\archive\base.exe
> -        Write-Output "Download time taken: $((Get-Date).Subtract($start_time))"
> -        cd C:\tools
> -        C:\tools\archive\base.exe -y
> -        del -Force C:\tools\archive\base.exe
> -        Write-Output "Base install time taken: $((Get-Date).Subtract($start_time))"
> -        $start_time = Get-Date
> -
> -        ((Get-Content -path C:\tools\msys64\etc\\post-install\\07-pacman-key.post -Raw) -replace '--refresh-keys', '--version') | Set-Content -Path C:\tools\msys64\etc\\post-install\\07-pacman-key.post
> -        C:\tools\msys64\usr\bin\bash.exe -lc "sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf"
> -        C:\tools\msys64\usr\bin\bash.exe -lc "export"
> -        C:\tools\msys64\usr\bin\pacman.exe --noconfirm -Sy
> -        echo Y | C:\tools\msys64\usr\bin\pacman.exe --noconfirm -Suu --overwrite=*
> -        taskkill /F /FI "MODULES eq msys-2.0.dll"
> -        tasklist
> -        C:\tools\msys64\usr\bin\bash.exe -lc "mv -f /etc/pacman.conf.pacnew /etc/pacman.conf || true"
> -        C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Syuu --overwrite=*"
> -        Write-Output "Core install time taken: $((Get-Date).Subtract($start_time))"
> -        $start_time = Get-Date
> -
> -        C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -S --needed $env:MSYS2_PACKAGES"
> -        Write-Output "Package install time taken: $((Get-Date).Subtract($start_time))"
> -        $start_time = Get-Date
> -
> -        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\etc\mtab
> -        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\dev\fd
> -        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\dev\stderr
> -        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\dev\stdin
> -        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\dev\stdout
> -        del -Force -Recurse -ErrorAction SilentlyContinue C:\tools\msys64\var\cache\pacman\pkg
> -        tar cf C:\tools\archive\msys64.tar -C C:\tools\ msys64
> -
> -        Write-Output "Package archive time taken: $((Get-Date).Subtract($start_time))"
> -        del -Force -Recurse -ErrorAction SilentlyContinue c:\tools\msys64 
> -  install_script:
> -    - |
> -      $start_time = Get-Date
> -      cd C:\tools
> -      ls C:\tools\archive\msys64.tar
> -      tar xf C:\tools\archive\msys64.tar
> -      Write-Output "Extract msys2 time taken: $((Get-Date).Subtract($start_time))"
> -  script:
> -    - mkdir build
> -    - cd build
> -    - C:\tools\msys64\usr\bin\bash.exe -lc "../configure --python=python3
> -        --target-list-exclude=i386-softmmu,ppc64-softmmu,aarch64-softmmu,mips64-softmmu,mipsel-softmmu,sh4-softmmu"

This excludes a few targets, but the .gitlab-ci.d/windows.yml file
merely allow-lists  x86_64-softmmu only, and also adds
--without-default-devices

IOW the remaining config has less coverage than this one. Of course
if no one ever looks at these results, the better coverage is not
doing anything for us.

> -    - C:\tools\msys64\usr\bin\bash.exe -lc "make -j8"

The .gitlab-ci.d/windows.yml file does not pass '-j8' so presumably
runs slower.

THe gitlab docs indicate the Windows VMs have 2 vCPUs so we ought to
have been using -j2 in the .gitlab-ci.d/windows.yml file IIUC

> -    - exit $LastExitCode
> -  test_script:

> -    - C:\tools\msys64\usr\bin\bash.exe -lc "cd build && make V=1 check"

The .gitlab-ci.d/windows.yml file passes '--no-suite qtest' so appears
to have less test coverage


Broadly I agree with this proposal, but it feels like we might want a
few tweak to the windows.yml file to address some of the inconsistencies



With regards,
Daniel
Thomas Huth March 23, 2023, 8:37 a.m. UTC | #2
On 22/03/2023 19.37, Daniel P. Berrangé wrote:
> On Wed, Mar 22, 2023 at 02:57:21PM +0100, Philippe Mathieu-Daudé wrote:
...
>> diff --git a/.cirrus.yml b/.cirrus.yml
>> deleted file mode 100644
>> index 5fb00da73d..0000000000
>> --- a/.cirrus.yml
>> +++ /dev/null
> 
>> -    MSYS2_PACKAGES: "
>> -      diffutils git grep make pkg-config sed
>> -      mingw-w64-x86_64-python
>> -      mingw-w64-x86_64-python-sphinx
> 
> This isn't listed in the .gitlab-ci.d/windows.yml file

I think that's fine. The gitlab CI Windows jobs are very slow and ran into 
timeout issues in the past already, so we certainly don't want to waste our 
time there with building the documentation.

>> -      mingw-w64-x86_64-toolchain
> 
> This also isn't listed

Seems to be a "group" package:

  https://packages.msys2.org/groups/mingw-w64-x86_64-toolchain

It includes other languages like Fortran and Ada ... I think we don't want 
that in the gitlab-CI job.

>> -      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-jemalloc
> 
> This also isn't listed

I think jemalloc is very niche these days for building QEMU, especially on 
Windows, so I'd rather not use it there.

>> -      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-libpng
>> -      mingw-w64-x86_64-libssh
>> -      mingw-w64-x86_64-snappy
>> -      mingw-w64-x86_64-libusb
>> -      mingw-w64-x86_64-usbredir
>> -      mingw-w64-x86_64-libtasn1
>> -      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-libnfs
> 
> The  .gitlab-ci.d/windows.yml file meanwhile adds 'dtc' 'gcc'
> and 'pkgconf' which are not present here.

dtc for avoiding to recompile the submodule, gcc and pkgconf as replacement 
for the toolchain group package.

> This inconsistency is another point in favour of removing this
> redundant cirrus config.

Well, different configs also help to test different things... but in this 
case, I think it's not enough to justify keeping the cirrus-ci.yml file.

>> -  script:
>> -    - mkdir build
>> -    - cd build
>> -    - C:\tools\msys64\usr\bin\bash.exe -lc "../configure --python=python3
>> -        --target-list-exclude=i386-softmmu,ppc64-softmmu,aarch64-softmmu,mips64-softmmu,mipsel-softmmu,sh4-softmmu"
> 
> This excludes a few targets, but the .gitlab-ci.d/windows.yml file
> merely allow-lists  x86_64-softmmu only, and also adds
> --without-default-devices

The gitlab job struggles with timeout issues when you add more stuff to it ...

> IOW the remaining config has less coverage than this one. Of course
> if no one ever looks at these results, the better coverage is not
> doing anything for us.

Yes, that's the main point! cirrus-ci.yml even does not provide e-mail 
notification when things go wrong, so most issues that could be discovered 
here just go completely unnoticed.

>> -    - C:\tools\msys64\usr\bin\bash.exe -lc "make -j8"
> 
> The .gitlab-ci.d/windows.yml file does not pass '-j8' so presumably
> runs slower.

Much, much slower!

> THe gitlab docs indicate the Windows VMs have 2 vCPUs so we ought to
> have been using -j2 in the .gitlab-ci.d/windows.yml file IIUC

The -j2 has been removed in commit 5f2992fe1ec5594e5c since we had some 
weird failures with it, likely due to memory constraints in those 
containers. After removing -j2, the jobs were reliable
again.

> Broadly I agree with this proposal, but it feels like we might want a
> few tweak to the windows.yml file to address some of the inconsistencies

You can have a try, but from my experience, it will be very hard to increase 
the test coverage of those jobs without hitting timeout issues again.

  Thomas
Daniel P. Berrangé March 23, 2023, 9:24 a.m. UTC | #3
On Thu, Mar 23, 2023 at 09:37:40AM +0100, Thomas Huth wrote:
> On 22/03/2023 19.37, Daniel P. Berrangé wrote:
> > On Wed, Mar 22, 2023 at 02:57:21PM +0100, Philippe Mathieu-Daudé wrote:
> ...
> > > diff --git a/.cirrus.yml b/.cirrus.yml
> > > deleted file mode 100644
> > > index 5fb00da73d..0000000000
> > > --- a/.cirrus.yml
> > > +++ /dev/null
> > 
> > > -    MSYS2_PACKAGES: "
> > > -      diffutils git grep make pkg-config sed
> > > -      mingw-w64-x86_64-python
> > > -      mingw-w64-x86_64-python-sphinx
> > 
> > This isn't listed in the .gitlab-ci.d/windows.yml file
> 
> I think that's fine. The gitlab CI Windows jobs are very slow and ran into
> timeout issues in the past already, so we certainly don't want to waste our
> time there with building the documentation.

IMHO, we should have the same deps present in all CI areas. If we
then need to skip docs because of speed lets pass --disable-docs
so that it is explicit that we're skipping them, rather than having
to infer the intention from the missing deps.

My hope would be that we can ultimately make the package listing huere
be auto-generated by lcitool too. It likely only needs a few naming
tweaks here & there for packages to get it working. At that point we
would need to control disablement via  configure flags.

> > > -      mingw-w64-x86_64-toolchain
> > 
> > This also isn't listed
> 
> Seems to be a "group" package:
> 
>  https://packages.msys2.org/groups/mingw-w64-x86_64-toolchain
> 
> It includes other languages like Fortran and Ada ... I think we don't want
> that in the gitlab-CI job.

Ok, yes, better to list exactly what we want.

> 
> > > -      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-jemalloc
> > 
> > This also isn't listed
> 
> I think jemalloc is very niche these days for building QEMU, especially on
> Windows, so I'd rather not use it there.


> > > -      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-libpng
> > > -      mingw-w64-x86_64-libssh
> > > -      mingw-w64-x86_64-snappy
> > > -      mingw-w64-x86_64-libusb
> > > -      mingw-w64-x86_64-usbredir
> > > -      mingw-w64-x86_64-libtasn1
> > > -      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-libnfs
> > 
> > The  .gitlab-ci.d/windows.yml file meanwhile adds 'dtc' 'gcc'
> > and 'pkgconf' which are not present here.
> 
> dtc for avoiding to recompile the submodule, gcc and pkgconf as replacement
> for the toolchain group package.

Ok, all makes sense.

> > Broadly I agree with this proposal, but it feels like we might want a
> > few tweak to the windows.yml file to address some of the inconsistencies
> 
> You can have a try, but from my experience, it will be very hard to increase
> the test coverage of those jobs without hitting timeout issues again.
> 
>  Thomas
> 

With regards,
Daniel
diff mbox series

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 9b56ccdd92..34b50b267c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3818,8 +3818,7 @@  W: https://cirrus-ci.com/github/qemu/qemu
 Windows Hosted Continuous Integration
 M: Yonggang Luo <luoyonggang@gmail.com>
 S: Maintained
-F: .cirrus.yml
-W: https://cirrus-ci.com/github/qemu/qemu
+F: .gitlab-ci.d/windows.yml
 
 Guest Test Compilation Support
 M: Alex Bennée <alex.bennee@linaro.org>
diff --git a/.cirrus.yml b/.cirrus.yml
deleted file mode 100644
index 5fb00da73d..0000000000
--- a/.cirrus.yml
+++ /dev/null
@@ -1,111 +0,0 @@ 
-env:
-  CIRRUS_CLONE_DEPTH: 1
-
-windows_msys2_task:
-  timeout_in: 90m
-  windows_container:
-    image: cirrusci/windowsservercore:2019
-    os_version: 2019
-    cpu: 8
-    memory: 8G
-  env:
-    CIRRUS_SHELL: powershell
-    MSYS: winsymlinks:native
-    MSYSTEM: MINGW64
-    MSYS2_URL: https://github.com/msys2/msys2-installer/releases/download/2022-06-03/msys2-base-x86_64-20220603.sfx.exe
-    MSYS2_FINGERPRINT: 0
-    MSYS2_PACKAGES: "
-      diffutils git grep make pkg-config sed
-      mingw-w64-x86_64-python
-      mingw-w64-x86_64-python-sphinx
-      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-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-libpng
-      mingw-w64-x86_64-libssh
-      mingw-w64-x86_64-snappy
-      mingw-w64-x86_64-libusb
-      mingw-w64-x86_64-usbredir
-      mingw-w64-x86_64-libtasn1
-      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-libnfs
-    "
-    CHERE_INVOKING: 1
-  msys2_cache:
-    folder: C:\tools\archive
-    reupload_on_changes: false
-    # These env variables are used to generate fingerprint to trigger the cache procedure
-    # If wanna to force re-populate msys2, increase MSYS2_FINGERPRINT
-    fingerprint_script:
-      - |
-        echo $env:CIRRUS_TASK_NAME
-        echo $env:MSYS2_URL
-        echo $env:MSYS2_FINGERPRINT
-        echo $env:MSYS2_PACKAGES
-    populate_script:
-      - |
-        md -Force C:\tools\archive\pkg
-        $start_time = Get-Date
-        bitsadmin /transfer msys_download /dynamic /download /priority FOREGROUND $env:MSYS2_URL C:\tools\archive\base.exe
-        Write-Output "Download time taken: $((Get-Date).Subtract($start_time))"
-        cd C:\tools
-        C:\tools\archive\base.exe -y
-        del -Force C:\tools\archive\base.exe
-        Write-Output "Base install time taken: $((Get-Date).Subtract($start_time))"
-        $start_time = Get-Date
-
-        ((Get-Content -path C:\tools\msys64\etc\\post-install\\07-pacman-key.post -Raw) -replace '--refresh-keys', '--version') | Set-Content -Path C:\tools\msys64\etc\\post-install\\07-pacman-key.post
-        C:\tools\msys64\usr\bin\bash.exe -lc "sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf"
-        C:\tools\msys64\usr\bin\bash.exe -lc "export"
-        C:\tools\msys64\usr\bin\pacman.exe --noconfirm -Sy
-        echo Y | C:\tools\msys64\usr\bin\pacman.exe --noconfirm -Suu --overwrite=*
-        taskkill /F /FI "MODULES eq msys-2.0.dll"
-        tasklist
-        C:\tools\msys64\usr\bin\bash.exe -lc "mv -f /etc/pacman.conf.pacnew /etc/pacman.conf || true"
-        C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Syuu --overwrite=*"
-        Write-Output "Core install time taken: $((Get-Date).Subtract($start_time))"
-        $start_time = Get-Date
-
-        C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -S --needed $env:MSYS2_PACKAGES"
-        Write-Output "Package install time taken: $((Get-Date).Subtract($start_time))"
-        $start_time = Get-Date
-
-        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\etc\mtab
-        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\dev\fd
-        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\dev\stderr
-        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\dev\stdin
-        del -Force -ErrorAction SilentlyContinue C:\tools\msys64\dev\stdout
-        del -Force -Recurse -ErrorAction SilentlyContinue C:\tools\msys64\var\cache\pacman\pkg
-        tar cf C:\tools\archive\msys64.tar -C C:\tools\ msys64
-
-        Write-Output "Package archive time taken: $((Get-Date).Subtract($start_time))"
-        del -Force -Recurse -ErrorAction SilentlyContinue c:\tools\msys64 
-  install_script:
-    - |
-      $start_time = Get-Date
-      cd C:\tools
-      ls C:\tools\archive\msys64.tar
-      tar xf C:\tools\archive\msys64.tar
-      Write-Output "Extract msys2 time taken: $((Get-Date).Subtract($start_time))"
-  script:
-    - mkdir build
-    - cd build
-    - C:\tools\msys64\usr\bin\bash.exe -lc "../configure --python=python3
-        --target-list-exclude=i386-softmmu,ppc64-softmmu,aarch64-softmmu,mips64-softmmu,mipsel-softmmu,sh4-softmmu"
-    - C:\tools\msys64\usr\bin\bash.exe -lc "make -j8"
-    - exit $LastExitCode
-  test_script:
-    - C:\tools\msys64\usr\bin\bash.exe -lc "cd build && make V=1 check"
-    - exit $LastExitCode