Add support for MSYS2
This MR introduces support for MSYS2 (https://www.msys2.org/) in favor of the old MSYS/MinGW.
MSYS2 brings several important improvements:
- Project with active development
- In sync with latest Cygwin
- Up-to-date packages:
-
make
supports parallel builds -
tar
is more recent and can be used instead of the slowest python's tarfile alternative currently used
-
- Package manager
- Several build dependencies can now be installed with pacman, reducing the recipes to build in bootstrap
- Easier installation process
Here is a more detailed writeup of MSYS2's benefits from Git's own migration: https://github.com/git/git/commit/df5218b4c30b2fa1ba0d1ada4166ad85bc83be26
The old MSYS is still supported to ease the migration. A deprecation warning will be shown to migrate to MSYS2
Windows distro can now be MSYS or MSYS2 and target_distro remains WINDOWS. This allows conditional code to be run depending on the MSYS version in use.
This MR also improves build speed for the slowest projects in Windows:
- autotools: --disable-dependency-tracking is used, being the recommended settings in the docs for one-time builds
- ffmpeg: parallel build is fixed in Windows
- openssl: tests are disabled, which where very slow to build
As bonus tracks:
- Ability to run single steps, instead of the whole build steps, with all the build commands:
$ cerbero build gstreamer-1.0 --steps post_install
$ cerbero buildone gstreamer-1.0 --steps compile install
-
Added support for VT-100 escape codes in Windows so that steps updates are updated in the same line, like it's done in macOS and Linux.
-
Automates Windows requirements installation with a PowerShell script