diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-06-01 13:00:17 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-06-01 22:46:37 +0530 |
commit | 9d6bd8a622250bb09246ca7cdf281e96634a198f (patch) | |
tree | cb122eb5604fb7de3572533131afe75b843cf99d /meson.py | |
parent | 4e0a4177632831f761b46d340e7a0934327ff321 (diff) | |
download | meson-nirbheek/rework-meson-script-handling.tar.gz |
Set the meson command to use when we know what it isnirbheek/rework-meson-script-handling
Instead of using fragile guessing to figure out how to invoke meson,
set the value when meson is run. Also rework how we pass of
meson_script_launcher to regenchecker.py -- it wasn't even being used
With this change, we only need to guess the meson path when running
the tests, and in that case:
1. If MESON_EXE is set in the env, we know how to run meson
for project tests.
2. MESON_EXE is not set, which means we run the configure in-process
for project tests and need to guess what meson to run, so either
- meson.py is found next to run_tests.py, or
- meson, meson.py, or meson.exe is in PATH
Otherwise, you can invoke meson in the following ways:
1. meson is installed, and mesonbuild is available in PYTHONPATH:
- meson, meson.py, meson.exe from PATH
- python3 -m mesonbuild.mesonmain
- python3 /path/to/meson.py
- meson is a shell wrapper to meson.real
2. meson is not installed, and is run from git:
- Absolute path to meson.py
- Relative path to meson.py
- Symlink to meson.py
All these are tested in test_meson_commands.py, except meson.exe since
that involves building the meson msi and installing it.
Diffstat (limited to 'meson.py')
-rwxr-xr-x | meson.py | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -14,13 +14,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -from mesonbuild import mesonmain -import sys, os +import sys +from pathlib import Path + +# If we're run uninstalled, add the script directory to sys.path to ensure that +# we always import the correct mesonbuild modules even if PYTHONPATH is mangled +meson_exe = Path(sys.argv[0]).resolve() +if (meson_exe.parent / 'mesonbuild').is_dir(): + sys.path.insert(0, meson_exe.parent) -def main(): - # Always resolve the command path so Ninja can find it for regen, tests, etc. - launcher = os.path.realpath(sys.argv[0]) - return mesonmain.run(sys.argv[1:], launcher) +from mesonbuild import mesonmain if __name__ == '__main__': - sys.exit(main()) + sys.exit(mesonmain.main()) |