I followed the instructions for using MSYS2/MinGW-w64 with Travis, which originally worked fine. However, after deleting the caches yesterday I am now getting the following error when it’s trying to install msys:
downloading msys2-runtime-3.1.4-1-x86_64.pkg.tar.zst...
downloading bash-4.4.023-2-x86_64.pkg.tar.xz...
downloading filesystem-2020.02-2-x86_64.pkg.tar.xz...
downloading mintty-1~3.1.4-1-x86_64.pkg.tar.xz...
downloading pacman-mirrors-20200329-1-any.pkg.tar.xz...
downloading libzstd-1.4.4-2-x86_64.pkg.tar.xz...
downloading zstd-1.4.4-2-x86_64.pkg.tar.xz...
downloading pacman-5.2.1-6-x86_64.pkg.tar.xz...
checking keyring...
checking package integrity...
warning: terminate other MSYS2 programs before proceeding
loading package files...
Errors occurred, no packages were upgraded.
error: could not open file /var/cache/pacman/pkg/msys2-runtime-3.1.4-1-x86_64.pkg.tar.zst: Child process exited with status 127
error: failed to commit transaction (cannot open package file)
From the MSYS2 packages list I can see that msys2-runtime-3.1.4 was just released yesterday, and is the first release using the zst format.
Thanks for the suggestion. Unfortunately I don’t think this will work, as the error happens as part of the initial MSYS2 installation via choco upgrade --no-progress -y msys2.
The only solution I see right now is not to use Chocolatey to install msys2, but instead another more recent build e.g. from msys2-installer.
By the way, I’m pretty sure this issue is reproducible for any newly set up Windows CI using the official Travis instructions, or for any existing ones if you delete the cache.
Instead of using a new installer, you could compile the zstd binary from ‘git clone GitHub - facebook/zstd: Zstandard - Fast real-time compression algorithm’ → cd zstd; make, then convert the .zst files in /var/cache/pacman/pkg (notably the pacman, libzstd and zstd packages) to .gz (or .bz2 or .xz) using: for f in /var/cache/pacman/pkg/*.zst; do programs/zstd -dc $f | gzip > ${f%.zst}.gz; done
and updating the pacman, zstd and libzstd packages using: pacman -U /var/cache/pacman/pkg/{pacman,zstd,libzstd}*.gz
After that, pacman can use zst compressed packages.