aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter
AgeCommit message (Collapse)AuthorFilesLines
2022-03-01interpreter: use a shared KwargInfo for install_tagDylan Baker2-3/+6
The kind that takes a single argument, not the custom_target version that takes an array
2022-03-01interpreter: fix notfound_program methodDylan Baker1-2/+4
Which should take a File or str, but only handles str correctly. Which mypy would have caught for us, if we just had annotations here.
2022-03-01allow dependency checks to bubble up feature warnings to the interpreterEli Schwartz1-0/+5
It would be too difficult and probably a layering violation to give an interpreter handle to the inner guts of every dependency. What we can do instead is let every dependency track: - the Feature checks it can produce, - the version attribute for when it was implemented while leaving the interpreter in charge of actually emitting them.
2022-03-01clean up FeatureCheck signature to move location to use timeEli Schwartz1-2/+2
The point of a .use() function is because we don't always have the information we need to use a feature check, so we allow creating the feature and then storing it for later use. When implementing location checks, although it is optional, actually using it violated that design. Move the location out of the init method for FeatureCheck itself. It remains compatible with all cases of .single_use(), but fix the rest up.
2022-02-28Allow setting method/separator in environment() and meson.add_devenv()Xavier Claessens4-24/+54
2022-02-28Add missing install_tag kwarg to install_emptydir()Christian Wendt1-2/+3
2022-02-16flake8: fix various whitespace errors with badly aligned codeEli Schwartz1-2/+2
2022-02-16flake8: do not use bare exceptionsEli Schwartz1-1/+1
In one case, we actually specifically want to catch IndexError only. In the other case, excepting Exception rather than BaseException is quite fine.
2022-02-16flake8: remove some redundant separatorsEli Schwartz1-1/+1
2022-02-16flake8: fix wrong numbers of blank line separatorsEli Schwartz1-1/+0
2022-02-16flake8: fix typoed whitespace surrounding tokensEli Schwartz1-2/+2
2022-02-14FeatureNew: add mypy type annotations for subproject argEli Schwartz2-2/+6
Use a derived type when passing `subproject` around, so that mypy knows it's actually a SubProject, not a str. This means that passing anything other than a handle to the interpreter state's subproject attribute becomes a type violation, specifically when the order of the *four* different str arguments is typoed.
2022-02-12formatting improvement for include_directories sandbox violation warningEli Schwartz1-2/+2
Print the location the warning was encountered, and quote the string that triggered it. This makes it easier to read what actually happened.
2022-02-12validate the literal directory "subprojects" when checking sandbox violationsEli Schwartz1-1/+2
We do not want anyone touching this entire directory tree, but due to the way it was implemented, we only checked if its direct parent was a subproject violation. This generally worked, unless people tried to add `subprojects/` as an include directory. Patch this hole. It now provides the same warning any sandbox violation does (but is not currently an error, just a "will become an error in the future").
2022-02-09add some forgotten FeatureNew annotationsEli Schwartz1-0/+3
Forgotten in #8512.
2022-02-09fix UI regression in compiler.compiles loggingEli Schwartz1-1/+1
In commit b30dddd4e5b4ae6e5e1e812085a00a47e3edfcf1, various refactorings were done, during which a kwarg got accidentally dropped from the function that determined part of the log message. As a result, a ':' suddenly appeared in the log message where none should be. Example expected output: Checking if "-Werror=shadow with local shadowing" compiles: YES What actually happened: Checking if "-Werror=shadow with local shadowing" : compiles: YES Fixes #9974
2022-02-07mdist: fix dist scripts in subprojects being marked as superproject scriptsEli Schwartz1-7/+7
This has never worked for built/found programs, only for script files. In commit 2fabd4c7dc22373e99fc63823d80083ad30704b8 scripts learned an attribute stating which subproject they came from. In commit 3990754bf55727ef5593769b48f0a03c6b7a3671 dist scripts learned to run even from a subproject, and relied on that attribute to know when, in fact, they came from a subproject. Unfortunately the original attribute was only set in one half of an if/else, and the other half returned early with only part of the work done. Fixes #9964
2022-02-06add FeatureNew check for compiler.* methods with dependency on internal depEli Schwartz1-2/+3
In commit 0deab2ee9efc2ffe9e43f2787611e34656e6a304 we added the ability to pass a declare_dependency() to any compiler method that accepts "dependencies", but we never marked the version it is available since. Fixes #9957
2022-02-05Guard against empty string in subdir().Jussi Pakkanen1-0/+2
2022-02-01interpreter: support for forcibly verbose logging of some testsPaolo Bonzini2-2/+5
Add a new keyword argument to test() and benchmark(), completing the implementation of the feature. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-01-28build: replace kwargs in CustomTarget initializerDylan Baker3-36/+98
Because we don't want to pass the Interpreter kwargs into the build layer. This turned out to be a mega commit, as there's really on elegant way to make this change in an incremental way. On the nice side, mypy made this change super easy, as nearly all of the calls to `CustomTarget` are fully type checked! It also turns out that we're not handling install_tags in custom_target correctly, since we're not converting the boolean values into Optional values!
2022-01-28interpreter: use find_program_impl instead of shutil.which for vcs_tagDylan Baker1-2/+1
This is the right thing to do, using which is wrong.
2022-01-28interpreter: remove dead code from custom_targetDylan Baker1-2/+0
This has been completely replaced by typed_kwargs now
2022-01-28interpreter: use typed_kwargs for vcs_tagDylan Baker2-24/+45
2022-01-27add location data to various Feature checksEli Schwartz3-20/+21
2022-01-27pkgconfig module: fix incorrect Feature logging for uninstalled_variablesEli Schwartz1-2/+2
The utility function that processes this for both 'variables' and 'uninstalled_variables' accepts a kwarg for the name of the argument, but then hardcodes 'variables' in the warning message. This is misleading.
2022-01-27remove incorrect deprecated feature for vcs_tagEli Schwartz2-2/+1
In commit 06481666f4e74ecef01e59351fc345ab0962d998 this warning got moved from build.py to the interpreter. Unfortunately it got added to the wrong function... it is supposed to be part of custom_target and even mentions this as the feature_name. Since then, build_always became a KwargInfo and has the deprecated-since attribute baked into it. But it didn't have the additional message which it really should have. Add that message at the same time we remove it from vcs_tag.
2022-01-27move the version info for build_always* directly into the kwarginfoEli Schwartz2-4/+9
Rather than pointlessly evolving it in the exactly one place which it is used. It's not clear what the purpose for this was.
2022-01-27flake8: fix indentation styleEli Schwartz2-6/+6
2022-01-27fix some flake8 violations for unused importsEli Schwartz1-1/+0
And one undefined T.cast name in a file that isn't yet mypy-ready anyway.
2022-01-24properly error out when project version is an array other than files()Eli Schwartz1-2/+2
Due to the support for specifying version as files('VERSION'), we need to internally accept an array, since that is what files() returns. Before that, we didn't accept arrays, and after that, we don't intend to accept generic arrays, only arrays as a side effect of files(). So tighten the typechecking to ensure that that is what we actually get.
2022-01-23interpreterobjects: Don't warn on set10(bool)Dylan Baker1-1/+4
Python inherited a really bad design from C, booleans happen to be ints. Which is awful, but it's true. Fixes: #9858
2022-01-18interpreterobjects: deprecated passing a number to configuration_data.set10Dylan Baker1-0/+8
This is currently allowed, and is used in at least a few projects. It was not intended to work or documented, but it does and since it is in use a full deprecation period must be used. A warning has also been added for values < 0, which have surprising behavior.
2022-01-18interpreterobjects: remove no-flattening from configuraiton_data.getDylan Baker1-1/+0
It's no longer required because we don't allow arrays as fallbacks anymore.
2022-01-18interpreterobjects: don't allow keyword arguments in configuration_data.keysDylan Baker1-0/+1
Which do nothing, and shouldn't be allowed.
2022-01-18interpreter: replace ConfigurationDataObject with ConfigurationDataHolderDylan Baker3-41/+42
This is much cleaner, and more in line with the way we handle interpreter objects in modern meson practice
2022-01-18interpreterobjects: clean up ConfigurationData initializerDylan Baker1-4/+2
2022-01-18interpreterobjects: use typed_* for configuration_data.set*Dylan Baker2-43/+28
This removes the ability to use ConfigurationData as a dict, but restricting the inputs to `str | int | bool`. This may be a little too soon for this, and we may want to wait on that part, it's only bee 8 months since we started warning about this.
2022-01-18interpreterobjects: use typed_* with configuration_data.merge_fromDylan Baker1-7/+5
2022-01-18interpreterobjects: use typed_* with configuration_data.get_unquotedDylan Baker1-7/+5
2022-01-18interpreterobjects: use typed_args for configuration_data.getDylan Baker1-12/+6
2022-01-18interpreterobjects: use typed_pos_args and noKwargs for configuration.data.hasDylan Baker1-1/+3
2022-01-18interpreterobjects: use typed_kwargs for dependency.get_variableDylan Baker2-8/+31
2022-01-18interpreterobjects: use typed_kwargs for dependency.get_pkgconfig_variableDylan Baker2-2/+18
2022-01-18dependencies: don't pass kwargs from get_pkgconfig_variableDylan Baker1-1/+1
This is a layering violation, we're relying on the way the interpreter handles keyword arguments. Instead, pass them as free variables, destructuring in the interpreter
2022-01-18interpreterobjects: use typed_kwargs for FeatureOption.requireDylan Baker2-10/+14
2022-01-18interpreterobjects: use typed_pos_args for FeatureOpotionDylan Baker1-10/+4
2022-01-18interpreterobjects: use typed_pos_args for dependency.as_system_methodDylan Baker1-11/+3
2022-01-18interpreterobjects: use typed_pos_args for dependency.get_configtool_variableDylan Baker1-8/+3
2022-01-18interpreterobjects: use typed_pos_args for dependency.get_pkgconfig_variableDylan Baker1-8/+3