aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonlib
AgeCommit message (Collapse)AuthorFilesLines
2022-09-28Move classes used by scripts to their own moduleXavier Claessens6-2575/+0
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-09-26ninjabackend: Fix get_target_generated_sources() return typeXavier Claessens1-0/+5
Type annotation, documentation string, and implementation were doing 3 different things. Change implementation to match type annotation which makes the most sense because it match what get_target_sources() does. All callers only use keys from the returned dictionary any way, but that's going to change in next commits.
2022-09-22pylint: enable global-statementDylan Baker1-1/+1
This does force a number of uses of `# pylint: disable` comments, but it also finds a couple of useless global uses and one place (in the previous commit) that an easy refactor removes the use of global. Global is a code smell, so forcing adding a comment to disable helps force developers to really consider if what they're doing is a good idea.
2022-09-22pylint: enable global-variable-not-assignedDylan Baker1-1/+0
The `global` statement is only needed to assign to global variables, not read or mutate them. So calling `global.mutate()` is fine, but not `var = foo`, which would otherwise shadow `var`.
2022-09-12mesonlib: Add a function to find the first element in an iterable which ↔Dylan Baker1-0/+15
matches a predicate
2022-08-11CI: fix error when mixing clang 14 with released valgrind versionsEli Schwartz1-0/+1
Because clang now defaults to a dwarf version that valgrind does not yet support. There's support in valgrind git master, though.
2022-08-02Handle garbage in environment more gracefully when setting vsenvDenis Fortin1-2/+7
Environment line may not contain '=' and thus fail to decompose into a key/value pair.
2022-08-01fix Popen_safe writeZhangyuan Nie1-6/+9
2022-06-17Improve WINEPATH reductionXavier Claessens1-28/+63
- Remove duplicated code in mdevenv.py - Change the limit to 1024 instead of 2048 which is what has been tested. - Skip shortening if it is already short enough. - Skip shortening with wine >= 6.4 which does not seems to have that limitation any more. - Downgrade exception to warning in the case WINEPATH cannot be shortened under 1024 chars, it is possible that it will still work.
2022-06-16minstall: Add more safety checks when unpickling installdataXavier Claessens1-0/+22
When need to catch exceptions just like we do in coredata.load() to print proper error message instead of backtrace when user mix meson versions. This happens frequently when user has a newer version of meson installed in their HOME and then "sudo meson install" uses the system version of meson.
2022-06-13flake8: fix various whitespace nitsEli Schwartz1-1/+1
2022-06-08mesonlib: fix annotation of OrderedSet.differenceDylan Baker1-1/+1
Any iterable is acceptable, not just Set | OrderedSet
2022-05-03add prefer_static built-in optionDudemanguy1-0/+1
By default, meson will try to look for shared libraries first before static ones. In the meson.build itself, one can use the static keyword to control if a static library will be tried first but there's no simple way for an end user performing a build to switch back and forth at will. Let's cover this usecase by adding an option that allows a user to specify if they want dependency lookups to try static or shared libraries first. The writer of the meson.build can manually specify the static keyword where appropriate which will override the value of this option.
2022-04-19Add ppc970 definition to universal.pySergey Fedorov1-0/+1
2022-04-19Fix universal builds on Darwin PPC: add ppc7400 definitionbarracuda1561-0/+1
2022-03-22OptionOverrideProxy: Handle per-subproject optionsXavier Claessens1-9/+20
2022-03-22OptionOverrideProxy: Make it immutable to avoid copiesXavier Claessens1-16/+11
It is always used as an immutable view so there is no point in doing copies. However, mypy insist it must implement the same APIs as Dict[OptionKey, UserOption[Any]] so keep faking it.
2022-03-13Merge pull request #9339 from dcbaker/submit/structured_sourcesJussi Pakkanen1-0/+10
Structured Sources
2022-03-07treewide: string-quote the first argument to T.castEli Schwartz1-2/+2
Using future annotations, type annotations become strings at runtime and don't impact performance. This is not possible to do with T.cast though, because it is a function argument instead of an annotation. Quote the type argument everywhere in order to have the same effect as future annotations. This also allows linters to better detect in some cases that a given import is typing-only.
2022-03-07mesonlib: Add a from_node initializer to MesonExceptionDylan Baker1-0/+10
This is useful when creating an exception with a node option, with less typing.
2022-03-01mesonlib: use Literal to tighten configure_file formatsDylan Baker1-14/+17
Now that we have strong type checking in the interpreter, we can tighten the type checking in the mesonlib side by using the same Literals.
2022-02-23mesonlib: allow check_dirent_issues to take an iterableDylan Baker1-2/+2
There's no reason it needs a concrete list, any iterable is fine. This does mean that we need to explicitly check for `str | bytes` in the listify pass, as `str` and `bytes` are both iterable.
2022-02-16flake8: use plain strings instead of f-strings when no variables usedEli Schwartz1-1/+1
2022-02-04mesonlib: Fix Popen_safe_legacy() stderr assumptionOle André Vadla RavnÄs1-1/+1
It may be None. This was encountered with radare's build system on Windows, where symbolextractor.py crashes without any output displayed.
2022-02-03Remove unnecessary check during VS activationNazar Mokrynskyi1-2/+0
2022-01-26Popen_safe and wrappers can accept os.PathLike for cwdEli Schwartz1-3/+3
Do not require users to convert it to a string first. This is a waste of time and effort for exactly the same results.
2022-01-16Add a test for the --vsenv meson setup optionNirbheek Chauhan1-9/+10
The tests and the unittests both unconditionally call setup_vsenv() because all tests are run using the backend commands directly: ninja, msbuild, etc. There's no way to undo this vs env setup, so the only way to test that --vsenv works is by: 1. Removing all paths in PATH that provide ninja 2. Changing setup_vsenv(force=True) to forcibly set-up a new vsenv when MESON_FORCE_VSENV_FOR_UNITTEST is set 3. Mock-patching build_command, test_command, install_command to use `meson` instead of `ninja` 4. Asserting that 'Activating VS' is in the output for all commands 5. Ensure that compilation works because ninja is picked up from the vs env. I manually checked that this test actually does fail when the previous commit is reverted.
2022-01-13Search for Visual Studio Express when activating VS envDFOVIT1-0/+4
Visual Studio Express does not come with the 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64' workload. This adds a check for the 'Microsoft.VisualStudio.Workload.WDExpress' workload. Non-express versions take precedence over express versions when activating.
2022-01-10manually clean up some python 3.6 era codeEli Schwartz1-7/+3
2021-12-30correct type annotations for File.endswithEli Schwartz1-1/+1
It should accept whatever str.endswith accepts, which means optionally a tuple of options.
2021-12-30Fix mypy 0.930 issuesTristan Partin1-2/+2
Removed errant "type: ignore". Fixed issue with "fetch" call. This issue was the following: Dict::get() and Dict::pop() have the following signature: T.Callable[[_T, _U], _U | None] OR T.Callable[[_T], _U | None] Note how the return type is _U here. When the fetch() function was actually being called, it had the following signature: T.Callable[[_T, T.List[_U]], T.Union[T.List[_U], _U]] This is incompatible with the previous definitions. The solution is simply to move where the default value is introduced if fetch() produces None.
2021-12-22Don't wipe out RPATHs specified by dependenciesNirbheek Chauhan1-0/+4
Since we scan all dependencies for build-only RPATHs now (which are removed on install), we must take care not to add build-only RPATHs pointing to directories that dependencies explicitly add -Wl,-rpath link args for, otherwise the paths will get wiped on install. Caught by LinuxlikeTests::test_usage_pkgconfig_prefixes
2021-12-17Fix mypy errorsDaniel Mensinger1-3/+1
2021-12-15mesonlib: make get_meson_command return an ImmutableListDylan Baker1-2/+2
We really don't want to be mutating global state, so let mypy yell at us when we try.
2021-11-28Add typing to msubprojects.pyTristan Partin1-1/+1
2021-11-25mesonlib: update `OptionKey.__repr__`Dylan Baker1-1/+1
Which is missing several values
2021-11-09depfixer: convert unused printing code to debugging functionsZbigniew Jędrzejewski-Szmek1-0/+9
When installing with 'meson install --quiet' I'd get the following output: This file does not have an rpath. This file does not have a runpath. (It turns out that of the couple hundred of binaries that are installed, this message was generated for /usr/lib/systemd/boot/efi/linuxx64.elf.stub.) There doesn't seem to be any good reason for this output by default. But those functions can still be used for debugging. Under a debugger, returning the string is just as useful as printing it, but more flexible. So let's suppress printing of anything by default, but keep the extractor functions. The code was somewhat inconsistent wrt. to when .decode() was done. But it seems that we'll get can expect a decodable text string in all cases, so just call .decode() everywhere, because it's nicer to print decoded strings.
2021-11-01various manual conversion of percent-formatted strings to f-stringsEli Schwartz1-1/+1
2021-10-29Fix "meson compile" not activating vsenvXavier Claessens1-2/+3
setup_vsenv() was not propagating the return value, so build.need_vsenv was always False.
2021-10-27Fix crash when getting cuda optionsXavier Claessens1-14/+5
We could have an OptionOverrideProxy of an OptionOverrideProxy, recursively. This fix is a minimal subset of the refactoring I did in https://github.com/mesonbuild/meson/pull/9394. Instead of faking UserOption we can just do a shallow copy of one and set a new value on it. Fixes: #9448
2021-10-27remove public export of private functionEli Schwartz1-1/+0
2021-10-27fix various flake8 whitespace errorsEli Schwartz1-6/+6
2021-10-20Add support for win-arm64 to MSVCGabor Kertesz1-1/+5
For Windows on Arm win-arm64 platform, the corresponding vcvars is called now.
2021-10-19Fix NamedTemporaryFile file reopen issue on Win #9412Gabor Kertesz1-2/+4
NamedTemporaryFile can't be opened by name on Windows. For Windows the created temporary bat file is now closed before passing to a subprocess, prevented from removal automatically upon close and deleted explicitly upon finish.
2021-10-16Add missing but expected as exception clauseMatthew Brett1-1/+1
The `except` line was missing its `as e` clause. As a result, when erroring out, after not finding a compiler, Meson gives an error ending: ``` File "C:\Users\Matthew\AppData\Roaming\Python\Python39\site-packages\mesonbuild\mesonlib\vsenv.py", line 100, in setup_vsenv mlog.warning('Failed to activate VS environment:', str(e)) ```
2021-10-10Add --vsenv command line option and active VS only when neededXavier Claessens2-0/+101
2021-10-10Fix typos discovered by codespellChristian Clauss2-3/+3
2021-10-08python: Add platlibdir and purelibdir optionsXavier Claessens1-1/+1
2021-10-08Add support for module optionsXavier Claessens1-20/+30
2021-10-04mesonlib: ConfigurationData can also be a `Dict[str, Tuple[Str, Optional[str]]]`Dylan Baker1-2/+2