aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-09-22mconf: Print options with colorsXavier Claessens1-16/+30
2022-09-22mconf: Substract the 3 space separators between columnsXavier Claessens1-1/+1
2022-09-22mconf: Do not wrap choices manuallyXavier Claessens1-19/+3
We already use textwrap.wrap() for that and it will correctly split on spaces.
2022-09-22mconf: There is always 4 columnsXavier Claessens1-21/+8
2022-09-22mlog: Add support for pagerXavier Claessens2-1/+42
It is useful to redirect some outputs, such as "meson configure" to a pager (e.h. less). This is similar to most git commands.
2022-09-22mconf: Use mlog.log() instead of print()Xavier Claessens1-13/+13
This will allow using colors and redirect print into a pager.
2022-09-21mdevenv: powershell <7.0 is EOL, prefer using pwsh.exeXavier Claessens1-5/+14
If neither pwsh.exe nor powershell.exe works, fallback to cmd.exe. This script could be failing because of virus scanner.
2022-09-21Fix cmd_or_ps.ps1 script with pwsh7Xavier Claessens1-12/+7
gwmi command does not exist any more and is replaced by Get-CimInstance. See https://github.com/PowerShell/PowerShell/issues/4766. While at it, use a do..while loop to avoid duplicated lines. Fixes: #10820
2022-09-20Fix including headers from another drive on VS backendVili Väinölä1-2/+6
Include paths to different drives as absolute paths fixes #8329
2022-09-19python module: allow specifying the pure kwarg in the installation objectEli Schwartz4-5/+36
Fixes #10523
2022-09-19pylint: enable use-dict-literalDylan Baker2-5/+4
2022-09-19pylint: enable use-list-literalDylan Baker3-3/+2
2022-09-19pylint: enable consider-using-inDylan Baker11-14/+13
2022-09-19pylint: enable use-sequence-for-iterationDylan Baker3-3/+2
This found a couple of places where we *don't* want to use set(), and want to use list() instead.
2022-09-19pylint: enable use-maxsplit-argDylan Baker8-11/+10
This finds a bunch of places where we can do more efficient string splitting.
2022-09-19pylint: enable consider-using-dict-itemsDylan Baker3-10/+8
Which found a couple of places where we could write better code.
2022-09-19pylint: move from allow-list to deny-listDylan Baker1-25/+91
This makes it much easier to see what we're ignoring, as well as allowing pylint to enforce any lints that currently pass but aren't in the allow list automatically.
2022-09-19fix odd mypy issue in unreachable codeEli Schwartz1-0/+1
This used to be fine, until imports were removed from this file. Now a function annotated as T.NoReturn doesn't actually tell mypy that it cannot return, though, so we manually do it.
2022-09-19simplify type annotationEli Schwartz1-1/+1
2022-09-19compilers: avoid importing compilers upfront for detectEli Schwartz1-114/+2
We no longer need these upfront at all, since we now import the ones we need for the language we are detecting, at the time of actual detection. This avoids importing 28 files, consisting of just under 9,000 lines of code, at interpreter startup. Now, it is only imported depending on which languages are invoked by add_languages, which may not even be anything. And even if we do end up importing a fair chunk of it for C/C++ projects, spreading the import cost around the interpreter runtime helps responsiveness.
2022-09-19compilers: perform targeted imports for detectEli Schwartz4-90/+107
Only import the ones we need for the language we are detecting, once we actually detect that language. This will allow finally dropping the main imports of these files in a followup commit.
2022-09-19compilers: use more direct checks for what kind of compiler we haveEli Schwartz1-7/+7
Instead of comparing against specific compiler classes, check the logical compiler id or language etc. In a couple cases, we seem to be missing a couple things by being a bit too strict about the exact class type.
2022-09-19compilers/detect: rename potentially conflicting nameEli Schwartz1-12/+12
Preparation for future commit.
2022-09-19compilers: use consistent function signature for objcEli Schwartz1-7/+7
e.g. for detect_c_or_cpp we just take the language itself as an argument.
2022-09-19compilers: remove dead codeEli Schwartz1-1/+1
It doesn't matter whether the language is c or cpp, xc16 only has a C compiler so that's what this has to be.
2022-09-19compilers: single-source compiler class as cls, consistentlyEli Schwartz1-18/+26
It's the style for most, but not all, of this file.
2022-09-19avoid importing the entire codebase at first startupEli Schwartz2-7/+12
We want to optimize out some internal codepaths used at build time by avoiding work such as argparse. This doesn't work particularly well when the argparse arguments are imported before then. Between them, they indirectly import pretty much all code anywhere, and msetup alone imports most of it. Also make sure the regenerate internal script goes directly to msetup.
2022-09-19compilers: don't export every compiler as a top-level propertyEli Schwartz4-171/+16
This is wasteful and generally unneeded, since code can just use the compiler they detected instead of manually poking at the internals of this subpackage. It also avoids importing an absolute ton of code the instant one runs `from . import compilers`
2022-09-19compilers: directly import from subpackagesEli Schwartz5-12/+14
It turns out we don't generally need to proxy every compiler ever through the top-level package. The number of times we directly poke at one is negligible and direct imports are pretty clean.
2022-09-19compilers: don't use instance checks to determine propertiesEli Schwartz4-24/+18
In various situations we want to figure out what type of compiler we have, because we want to know stuff like "is it the pgi one", or "does it use msvc style". The compiler object has this property already, via an API specifically designed to communicate this info, but instead we performed isinstance checks on a compiler class. This is confusing and indirect, and has the side effect of requiring more imports everywhere. We should do away with it.
2022-09-19declare_dependency: fix regression in printing the correct errorEli Schwartz1-1/+1
In commit 47426f3663f795ae9af59075297bf8215ae81f40 we migrated to typed_kwargs, but the validator accepted a list and checked to see if it was a single Dependency object. Fixes #10813
2022-09-18Warn if wrap file changesDaniel Carson3-7/+62
Save off the hash of the wrap file when first configuring a subproject. When reconfiguring a subproject, check the hash of the wrap file against the stored hash. If they don't match then warn the user.
2022-09-18Move up dangling commentDaniel Carson1-1/+1
The comment and some settings that appear to be related to the comment were introduced in f21685a83330a4bbe1e59c3641a0d24f1efe8825 and appears to be documenting some of the fields added in that commit. This commit moves the comment back to the field it appears to be documenting.
2022-09-18gnome: Add some missing install_tagXavier Claessens1-0/+6
2022-09-18mailmap: add alias for myselfLiam Beguin1-0/+1
Signed-off-by: Liam Beguin <liambeguin@gmail.com>
2022-09-18completions: bash: add simple init competionLiam Beguin1-1/+35
Populate the _meson-init() completion function. Signed-off-by: Liam Beguin <liambeguin@gmail.com>
2022-09-18completions: bash: define sub-commands as an arrayLiam Beguin1-20/+21
Define subcommands as an array so that they can be reused for the top-level sub-command completion. Signed-off-by: Liam Beguin <liambeguin@gmail.com>
2022-09-18completions: bash: update meson sub-command listLiam Beguin1-1/+26
Add all meson sub-commands to the autocompletion script. Signed-off-by: Liam Beguin <liambeguin@gmail.com>
2022-09-18completions: bash: add missing functionsLiam Beguin1-0/+16
Add empty functions for all commands defined in the autocompletion script. When these functions are not defined, bash raises the following error: $ meson init <TAB>-bash: _meson-init: command not found Signed-off-by: Liam Beguin <liambeguin@gmail.com>
2022-09-18completions: bash: order function definitions like in helpLiam Beguin1-44/+44
Move _meson-introspect() to follow the command list defined at the top of the script which follows the help message order. Signed-off-by: Liam Beguin <liambeguin@gmail.com>
2022-09-15devenv: Resolve executable in devenv's PATHXavier Claessens1-0/+4
Fixes: #10815
2022-09-14docs: note the automatic creation of gitignore in build directoriesEli Schwartz2-2/+13
2022-09-13Use os.path.realpath for default include paths testing in -isystem.Yang Bo2-3/+16
This ensures correct removal of default include paths in -isystem options when symbolic links are involved. A test for this is also added.
2022-09-12dependencies: log the real reason for a dependency lookup failingEli Schwartz5-6/+9
In the debug logs, always log if a dependency lookup raises a DependencyException. In the `required: false` case, this information would otherwise disappear forever, and we would just not even log that we tried it -- it doesn't appear in "(tried x, y and z)". In the `required: true` case, we would re-raise the first exception if it failed to be detected. Update the raise message with the same information we print to the debug logs, indicating which dependency and which method was used in the failing attempt.
2022-09-12dependencies: use better internal representation of factory methodsEli Schwartz2-8/+7
functools.partial preserves information about how the method was created, lambdas do not. Also, we just want to freeze the first argument and forward the rest anyway. This also lets us get rid of a mypy error that was being ignored.
2022-09-12dependencies: simplify log_tried into a staticmethodEli Schwartz7-12/+21
It doesn't really need class instantiation to just know what type it is, and this way we can get the information early if a dependency fails to init.
2022-09-12dependencies: simplify logging methodsEli Schwartz3-15/+0
A bunch of SystemDependency subclasses overrode log_tried() even though they used the same function anyway. Delete them -- they still print the same thing either way.
2022-09-12rust: Generate a rust-project.json file when rust targets are presentDylan Baker3-1/+127
When at least one Rust target is present, we now generate a rust-project.json file, which can be consumed by rust-analyzer. This is placed in the build directory, and the editor must be configured to look for this (as it is not a default search path).
2022-09-12mesonlib: Add a function to find the first element in an iterable which ↵Dylan Baker1-0/+15
matches a predicate
2022-09-12arglist: use typing.MutableSequence instead of collectionsDylan Baker1-1/+1
In the long run collections is the right thing to use, but until we can require 3.9.x as the minimum we cannot annotate the collections.abc version, only the typing version. This allows correct type annotations in users of `CompilerArgs`, as mypy (and friends) can determine that `CompilerArgs` is ~= `T.Sequence[str]`