aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
AgeCommit message (Collapse)AuthorFilesLines
2022-01-26gnome: Fix gtk4 pkgconfig nameBilal Elmoussaoui1-1/+1
2022-01-26compilers/c_function_attributes: add retainArsen Arsenović1-0/+1
retain is a relatively young attribute which has proven itself useful for working with --gc-sections -z start-stop-gc.
2022-01-26mcompile: fix broken codepaths and restore orphaned codeEli Schwartz1-7/+5
In commit 928078982c8643bffd95a8da06a1b4494fe87e2b a good error message about the directory not being a valid build directory, was replaced by a worse message. In commit abaa980436f53100041bd5535589bb1c42019bd6 the error message was replaced by a traceback when trying to load the coredata before checking if it was a build directory. Revert back to using the helper function with the good error message. Reorganize code so that we check basic things first, and do less work before detecting errors. Fixes #9584
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-23cmake: Add TARGET_ generator expression support (fixes #9305)Daniel Mensinger5-13/+74
2022-01-23cmake: Move generator expression evaluation to the end of the traceparserDaniel Mensinger2-3/+35
2022-01-22fix broken version annotations for the new itstool_join featureEli Schwartz1-1/+1
It was not added in 0.61.0 as that was already released.
2022-01-22Merge pull request #9742 from ximion/wip/itstoolJussi Pakkanen2-1/+162
i18n: Add support for joining XML localization via itstool
2022-01-21i18n: Add support for joining XML localization via itstoolMatthias Klumpp2-0/+161
2022-01-20python module: only find a pkg-config dependency from the found pythonEli Schwartz1-8/+21
If the found python returns None from sysconfig.get_config_var('LIBPC') then we cannot (and don't) set PKG_CONFIG_LIBDIR from it. In fact, we can virtually guarantee we won't find a PkgConfigDependency either, because any python that doesn't have a LIBPC is presumably not installed to the system pkg-config directory (maybe it's an isolated relocatable install, maybe it just doesn't have pkg-config support for who knows what reason). Trying to find one anyway using pkg-config's builtin search paths can unexpectedly succeed, though, by finding a completely unrelated python installation installed to a system location, which isn't the one we are actually building for. Instead, return early so that we use the system dependency class fallback. While we are at it, add back the debug messages from #3989 which got removed.
2022-01-18modules/gnome: make some methods staticDylan Baker1-13/+25
Since they don't use the instance or class state, they should be static methods.
2022-01-18modules/gnome: fix remaining typing errorsDylan Baker1-8/+13
Which is one incorrect type annotation, and a couple of instances of concatenating lists of unlike types. List being invariant is super annoying.
2022-01-18modules/gnome: fix annotation to type that isn't definedDylan Baker1-1/+1
2022-01-18modules/gnome: fix _get_build_args type annotationsDylan Baker1-1/+2
2022-01-18modules/gnome: fix _make_typelib_target typesDylan Baker1-3/+4
2022-01-18modules/gnome: Fix typing with _get_dependencies_flags andDylan Baker1-17/+25
_get_gir_target_deps The typing issues with these are tightly intertwined, so it didn't really make sense to solve them independently
2022-01-18build: Fix return types of a couple of methodsDylan Baker2-3/+3
These don't return `Target`, they return `BuildTarget | CustomTarget | CustomTargetIndex`
2022-01-18modules/gnome: fix issues with _make_gir_targetDylan Baker1-5/+13
2022-01-18modules/gnome: fix declared type of listDylan Baker1-1/+1
2022-01-18modules/gnome: use T.Sequence instead of T.ListDylan Baker1-2/+3
Which is pretty much necessary to make anything involving unions of lists work
2022-01-18modules/gnome: use itertools.chain instead of list concatenationDylan Baker1-1/+2
This is better as it avoids building unnecessary lists, and two fixes the typing issue from concatenating lists of different types.
2022-01-18dependencies: fix libraries and whole_libraries typesDylan Baker1-4/+5
gnome points out that CustomTargets can be linked with, so we should allow that.
2022-01-18modules/gnome: ignore the return type of _get_depDylan Baker1-2/+5
This is hard to fix, and it's really doing something bad anyway. But we know it's right, so just tell mypy to not worry about it.
2022-01-18modules/gnome: fix type annotations and issues with ↵Dylan Baker1-5/+9
_gather_typelib_includes_and_update_depends There is the problem of the annotations themselves, then there is the problem with depends being mutated. The mutation side effect is a problem in itself, but there's also the problem that we really want to use Sequence, which isn't mutable.
2022-01-18modules/gnome: define and annotate all instance variables in the initializerDylan Baker1-3/+5
2022-01-18build: Fix annotations to RunTarget and AliasTargetDylan Baker1-2/+2
RunTargets and AliasTargets may depend on RunTargets, so annotate them that way. The Gnome module relies on this internally.
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 Baker6-50/+55
This is much cleaner, and more in line with the way we handle interpreter objects in modern meson practice
2022-01-18build: move configuration_data initial value handling to build.ConfigurationDataDylan Baker1-9/+8
It really belongs here, not in the interpreter
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 Baker6-30/+25
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
2022-01-18interpreterobjects: consistently use dependency. for error messagesDylan Baker1-16/+16
We currently use a mixture of dependency, Dependency, and dep
2022-01-18wraps: implement exponential backoff for downloading filesEli Schwartz1-1/+12
Implementation modeled after mesonlib.windows_proof_rmtree(). Implements the other half of #9688
2022-01-18wraps: on failure to apply a patch, delete the subproject directoryEli Schwartz1-2/+6
This code path is only called on initial download of a subproject, but if we raise an error and abort while downloading/applying a patch overlay we still have the upstream sources extracted... which appears to be a subproject, then turns out to be broken due to missing meson.build Partially implements #9688
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.