Skip to content

Add support for MSYS2

Andoni Morales Alastruey requested to merge ylatuya/cerbero:msys2-bis into main

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

Merge request reports