aboutsummaryrefslogtreecommitdiff
path: root/meson.py
AgeCommit message (Collapse)AuthorFilesLines
2023-12-13Use SPDX-License-Identifier consistentlyDylan Baker1-15/+2
This replaces all of the Apache blurbs at the start of each file with an `# SPDX-License-Identifier: Apache-2.0` string. It also fixes existing uses to be consistent in capitalization, and to be placed above any copyright notices. This removes nearly 3000 lines of boilerplate from the project (only python files), which no developer cares to look at. SPDX is in common use, particularly in the Linux kernel, and is the recommended format for Meson's own `project(license: )` field
2022-09-28Move classes used by scripts to their own moduleXavier Claessens1-0/+2
Those classes are used by wrapper scripts and we should not have to import the rest of mesonlib, build.py, and all their dependencies for that. This renames mesonlib/ directory to utils/ and add a mesonlib.py module that imports everything from utils/ to not have to change `import mesonlib` everywhere. It allows to import utils.core without importing the rest of mesonlib.
2022-06-22Move python version check as first thingXavier Claessens1-0/+9
2020-11-20use real pathlib moduleDylan Baker1-1/+1
We added the _pathlib module to work around defeciencies in python 3.5's implementation, since we now rely on 3.6 lets drop this
2020-10-04pathlib: Fix resolve() by overriding it in Python 3.5Daniel Mensinger1-1/+1
2018-06-10meson.py: sys.path requires str, not pathlib.PathNirbheek Chauhan1-1/+1
2018-06-01Set the meson command to use when we know what it isNirbheek Chauhan1-7/+10
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.
2018-05-31Revert "mesonlib: handle meson exe wrappers"Nirbheek Chauhan1-2/+7
This reverts commit 0627e9d616dc311b7c9b0ef17301f680ac9e78a7. Breaks installation: https://github.com/mesonbuild/meson/issues/3647 Will be restored once that can be fixed.
2018-05-30mesonlib: handle meson exe wrappersMartin Kelly1-7/+2
There are cases when it is useful to wrap the main meson executable with a script that sets up environment variables, passes --cross-file, etc. For example, in a Yocto SDK, we need to point to the right meson.cross so that everything "just works", and we need to alter CC, CXX, etc. In such cases, it can happen that the "meson" found in the path is actually a wrapper script that invokes the real meson, which may be in another location (e.g. "meson.real" or similar). Currently, in such a situation, meson gets confused because it tries to invoke itself using the "meson" executable (which points to the wrapper script) instead of the actual meson (which may be called "meson.real" or similar). In fact, the wrapper script is not necessarily even Python, so the whole thing fails. Fix this by using Python imports to directly find mesonmain.py instead of trying to detect it heuristically. In addition to fixing the wrapper issue, this should make the detection logic much more robust.
2018-03-03Fix flake8 'imported but unused' reportsJon Turney1-2/+2
$ flake8 | grep F401 ./meson.py:17:1: F401 'mesonbuild.mesonlib' imported but unused ./meson.py:18:1: F401 'locale' imported but unused ./run_unittests.py:24:1: F401 'sys' imported but unused ./mesonbuild/minit.py:2:1: F401 'pyclbr.Function' imported but unused ./mesonbuild/minit.py:18:1: F401 'os' imported but unused ./mesonbuild/backend/vs2010backend.py:15:1: F401 'sys' imported but unused ./mesonbuild/backend/xcodebackend.py:19:1: F401 'sys' imported but unused ./mesonbuild/dependencies/ui.py:20:1: F401 'shutil' imported but unused ./mesonbuild/modules/python3.py:15:1: F401 'sys' imported but unused ./mesonbuild/modules/unstable_icestorm.py:15:1: F401 '..compilers' imported but unused ./mesonbuild/modules/unstable_icestorm.py:15:1: F401 '..mlog' imported but unused ./test cases/common/98 gen extra/srcgen3.py:3:1: F401 'os' imported but unused
2017-12-14Print UTF-8 warning only when actually encountering non-ascii filenames.Jussi Pakkanen1-11/+0
2017-09-20fix a typo in the UTF-8 warning messageLuke Shumaker1-1/+1
2017-08-02Write deprecation warnings to stderr.Jussi Pakkanen1-6/+6
2017-08-02Print deprecation warnings on old style commands.Jussi Pakkanen1-1/+1
2016-12-10Do not warn about non-utf8 locales on Windows.Jussi Pakkanen1-2/+2
2016-11-23meson.py: Warn if the encoding is not UTF-8 compatibleNirbheek Chauhan1-2/+13
2016-10-12meson.py: Always resolve full path to meson.pyNirbheek Chauhan1-4/+2
There is no reason to not always do this. Without this, we end up with a relative path to meson.py in build.ninja files when meson.py is launched using subprocess.Popen and friends from the meson source root. This was causing the unittests to intermittently fail when regen was getting invoked by the pic test. Funnily enough, this only happened when run via ./run_tests.py because __file__ was 'run_unittests.py' in that (as opposed to './run_unittests.py') case which made os.path.dirname(__file__) be '', and the os.path.split test in meson.py thought that meson.py was invoked via PATH.
2016-10-10Reintroduce Python Zipapp supportFranz Zapata1-6/+9
* Added `main` function as an entry point. * Created `__main__.py` to allow the creation of Zipapps without explicitly calling `meson:main`.
2016-10-08Use argv[0] to internally relaunch meson.pyEmanuele Aina1-8/+6
When installing Meson, distutils may choose to put shim scripts in the `PATH` that only set up the egg requirements before launching the real `meson.py` contained in the egg. This means that `__file__` points to the real `meson.py` file, but launching it directly is doomed to fail as it's missing the metadata contained in the shim to set up the path egg, resulting in errors when trying to import the `mesonbuild` module. A similar issue affects Meson when installed as a zipapp, with the current code going great lengths to figure out how to relaunch itself. Using `argv[0]` avoids these issues as it gives us the way the current executable has been launched, so we are pretty much guaranteed that using it will create another instance of the same executable. We only need to resolve relative paths as the current working directory may get changed before re-launching the script, and using `realpath()` for that saves us the trouble of manually resolving links and getting caught in endless loops. This also mean that `meson_script_file` no longer necessarily point to a absolute file, so rename it to `_launcher` which hopefully would be less prone to inducing false assumptions.
2016-10-02Revert #823, see also #830.Jussi Pakkanen1-15/+8
2016-10-01Revert #830 because it broke the case when the main script is not in path.Jussi Pakkanen1-1/+15
2016-09-30User argv[0] to internally relaunch meson.pyEmanuele Aina1-11/+1
When installing Meson distutils may choose to put shim scripts in the PATH that only set up the egg requirements before launching the real `meson.py` contained in the egg. This means that __file__ points to the real `meson.py` file, but launching it directly is doomed to fail as it's missing the metadata contained in the shim to set up the path egg, resulting in errors when trying to import the `mesonbuild` module. A similar issue affects Meson when installed as a zipapp, with the current code going great lengths to figure out how to relaunch itself. Using argv[0] avoids these issues as it gives us the way the current executable has been launched, so we are pretty much guaranteed that using it will create another instance of the same executable.
2016-09-28Support running Meson as a Python zip applicationFranz Zapata1-4/+10
2016-03-02Back to .py suffix in files. Closes #394.Jussi Pakkanen1-0/+24
2016-01-16Renamed meson package to mesonbuild so that we can have a script named meson ↵Jussi Pakkanen1-24/+0
in the same toplevel dir.
2016-01-15Moved scripts in the module and started work to run them via the main meson ↵Jussi Pakkanen1-2/+20
command.
2016-01-15Organise files into a module structure.Jussi Pakkanen1-222/+3
2015-12-04Make it working on python 3.3Thibault Saunier1-2/+2
2015-11-28Added support for extended command line to overcome OS command line length ↵Yoav Alon1-0/+3
limitation
2015-11-23Yet another step in the neverending saga of -Wpedantic.Jussi Pakkanen1-1/+1
2015-11-17Add --version to command line arguments.Wink Saville1-1/+1
2015-11-04Made shared the default libtype as it is faster for daily development.Jussi Pakkanen1-1/+1
2015-11-03Turned builtin options into proper objects.Jussi Pakkanen1-7/+4
2015-11-03Refactored builtin options to a dictionary and created a new default library ↵Jussi Pakkanen1-0/+2
target type.
2015-10-26Now that projects can easily override defaults, return warning level to 2.Jussi Pakkanen1-7/+1
2015-10-18Added cpu family property to system information.Jussi Pakkanen1-0/+3
2015-09-19Do not use intr before it existsThibault Saunier1-3/+4
2015-09-17Merged trunk changes.Jussi Pakkanen1-0/+11
2015-09-17Added conf option for build tree layout.Jussi Pakkanen1-0/+3
2015-09-17Added outdir() method to build targets so we can make output dirs togglable.Jussi Pakkanen1-7/+7
2015-09-04Can set default warning with an envvar.Jussi Pakkanen1-2/+10
2015-08-27Added multiple selectable warning levels.Jussi Pakkanen1-0/+3
2015-08-25More robust windows detection and more logs.Jussi Pakkanen1-0/+3
2015-08-25Better sanity testing.Jussi Pakkanen1-0/+2
2015-07-27Support target-only cross compilation properly.Jussi Pakkanen1-2/+2
2015-07-27Get build machine's CPU info too.Jussi Pakkanen1-0/+1
2015-07-27Now host_machine, build_machine and target_machine are properly separated ↵Jussi Pakkanen1-0/+3
and return correct values.
2015-06-18style: fix indenting in meson.pyIgor Gnatenko1-17/+17
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2015-06-18meson: fix undefined-variable in backends chooserIgor Gnatenko1-1/+1
E:146,57: Undefined variable 'options' (undefined-variable) Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2015-05-16introduce check python version in meson.pyIgor Gnatenko1-0/+5
To ensure that people will not confused that something won't work. Related: https://github.com/miit-pm/RWD/pull/1#issuecomment-102607931 Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>