diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-06-03 15:00:53 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-06-03 18:59:24 +0000 |
commit | 107e061506fb0e8f2783ba07de7f6ce79634688b (patch) | |
tree | a41f26a6e978234d8b14091fabe330399477a6f5 | |
parent | fbc716021444e8e37f2c2dbf539b58fefb0d2b5b (diff) | |
download | meson-107e061506fb0e8f2783ba07de7f6ce79634688b.zip meson-107e061506fb0e8f2783ba07de7f6ce79634688b.tar.gz meson-107e061506fb0e8f2783ba07de7f6ce79634688b.tar.bz2 |
Error out when someone tries to use msys/python to run Meson
This mistake seems to be a very common hiccup for people trying to use
Meson with MSYS2 on Windows from git or with pip.
msys/python uses POSIX paths with '/' as the root instead of a drive
like `C:/`, and also does not identify the platform as Windows.
This means that configure checks will be wrong, and many build tools
will be unable to parse the paths that are returned by functions in
Python such as shutil.which.
Closes https://github.com/mesonbuild/meson/issues/3653
-rw-r--r-- | mesonbuild/environment.py | 5 | ||||
-rw-r--r-- | mesonbuild/mesonmain.py | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index 4bcffbd..2522892 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 c03ef9b..67d5a6c 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[:] |