diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index 4bcffbdab..25228928c 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -240,6 +240,11 @@ def detect_system(): return 'cygwin' return system +def detect_msys2_arch(): + if 'MSYSTEM_CARCH' in os.environ: + return os.environ['MSYSTEM_CARCH'] + return None + def search_version(text): # Usually of the type 4.1.4 but compiler output may contain # stuff like this: diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py index c03ef9ba9..67d5a6c7d 100644 --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -23,6 +23,7 @@ from . import build from . import mconf, mintro, mtest, rewriter, minit from . import mlog, coredata from .mesonlib import MesonException +from .environment import detect_msys2_arch from .wrap import WrapMode, wraptool default_warning = '1' @@ -287,6 +288,15 @@ def run(original_args, mainfile): print('You have python %s.' % sys.version) print('Please update your environment') return 1 + # https://github.com/mesonbuild/meson/issues/3653 + if sys.platform.lower() == 'msys': + mlog.error('This python3 seems to be msys/python on MSYS2 Windows, which is known to have path semantics incompatible with Meson') + msys2_arch = detect_msys2_arch() + if msys2_arch: + mlog.error('Please install and use mingw-w64-i686-python3 and/or mingw-w64-x86_64-python3 with Pacman') + else: + mlog.error('Please download and use Python from www.python.org') + return 2 # Set the meson command that will be used to run scripts and so on set_meson_command(mainfile) args = original_args[:]