aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules
AgeCommit message (Collapse)AuthorFilesLines
2022-11-17modules/rust: Also include generated sources for testsDylan Baker1-2/+5
When we create a test from a non-executable, we weren't copying the generated sources, just the static ones.
2022-11-17hotdoc module: run hotdoc as an external command during configureEli Schwartz1-5/+8
We need to run it as an external command at build time anyway, and we detect it by looking it up as an ExternalProgram. It seems odd to then import it into Meson's python interpreter and run the main function. Moreover, this errors out when you are running two different pythons, one for Meson and one for hotdoc. For example, when hotdoc is installed normally, but you're testing Meson against a nondefault newer version of python.
2022-11-14Raise an error, if the file element in a resource file has no text.Hagen Möbius1-3/+6
- minor cleanups in the vicinity
2022-11-07hotdoc module: add dedicated depends kwarg, deprecate file deps in dependenciesEli Schwartz1-2/+17
We consistently use the "dependencies" kwarg to refer to C-like CFLAGS/LDFLAGS interfaces. And for hotdoc, we actually accept libraries for this as well, as we may want to document their (generated?) sources, so we want their CFLAGS too. But we also accepted custom targets and just added a build order dependency on these, which was odd and typically we call that "depends". Let's deprecate this in favor of the depends kwarg.
2022-11-07hotdoc module: use less confusing namesEli Schwartz1-7/+7
Internally we pass this as extra_depends to the CustomTarget initializer, so it makes sense to call it that rather than confusing the topic by referring to "dependencies", a term that indicates CFLAGS/LDFLAGS interfaces.
2022-10-28gnome: allow generator outputs as gdbus-codegen inputsPaolo Bonzini1-3/+3
GeneratedLists as sources to `gnome.gdbus_codegen` worked until version 0.60 of Meson, but broke in 0.61 because of the conversion to typed_pos_args and typed_kwargs. Reinstate this by adding them to the decorators and annotations. Note that gdbus_codegen desugars to two custom_targets and therefore the generator is invoked twice. This is not optimal, but it should not be an issue and can be changed later. Fixes: 53a187ba2 ("modules/gnome: use typed_pos_args for gdbus_codegen", 2021-11-01) Fixes: ef52e6093 ("modules/gnome: use typed_kwargs for gdbus_codegen", 2021-11-08)
2022-10-28gnome: allow custom targets as gdbus-codegen inputsPaolo Bonzini1-4/+4
Custom targets as sources to `gnome.gdbus_codegen` worked until version 0.60 of Meson, but broke in 0.61 because of the conversion to typed_pos_args and typed_kwargs. Reinstate this by adding custom targets to the decorators and annotations. While generators also used to work, they are a bit tricky because gdbus_codegen desugars to two custom_targets and therefore the generator is invoked twice. This should not be a problem, but be explicit and leave that to a separate commit to highlight the problem. Fixes: 53a187ba2 ("modules/gnome: use typed_pos_args for gdbus_codegen", 2021-11-01) Fixes: ef52e6093 ("modules/gnome: use typed_kwargs for gdbus_codegen", 2021-11-08)
2022-10-24hotdoc module: add partially typed kwargsEli Schwartz1-40/+45
We accept a list of known kwargs of required types, but also arbitrary kwargs understood by the hotdoc program (sometimes via extensions). Now that we can partially type-check kwargs, do so here.
2022-10-14hotdoc: Fix typo in argumentNirbheek Chauhan1-1/+1
2022-10-04pylint: enable consider-merging-isinstanceDylan Baker1-1/+1
2022-10-04pylint: enable use-a-generatorDylan Baker2-2/+2
This catches some optimization problems, mostly in the use of `all()` and `any()`. Basically writing `any([x == 5 for x in f])` vs `any(x == 5 for x in f)` reduces the performance because the entire concrete list must first be created, then iterated over, while in the second f is iterated and checked element by element.
2022-10-03pylint: enable unnecessary-comprehensionDylan Baker2-5/+2
2022-09-28gnome: add support for update-mime-databasePaolo Borelli1-0/+10
Fixes https://github.com/mesonbuild/meson/issues/10865
2022-09-27gnome/yelp: fix `xml:lang` attributesJan Tojnar1-1/+1
itstool detects a language code from the mo file’s basename, so when https://github.com/mesonbuild/meson/commit/26c1869a142a952ffa23fe566a255b259304a39b changed the file name to be prefixed with project name, values like “my-project-xx” ended up in the `xml:lang` attribute of the generated page files, instead of the expected IETF BCP 47 language tag. Let’s fix it by passing a locale code to itstool explicitly.
2022-09-22modules/gnome: make_native_glib_version an instance varDylan Baker1-9/+6
This removes the need for the use of the global statement. I've also updated the test that overrides this to use mock.patch instead of hand monkey patching.
2022-09-19python module: allow specifying the pure kwarg in the installation objectEli Schwartz1-4/+13
Fixes #10523
2022-09-19pylint: enable use-maxsplit-argDylan Baker1-1/+1
This finds a bunch of places where we can do more efficient string splitting.
2022-09-19compilers: directly import from subpackagesEli Schwartz1-1/+1
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-18gnome: Add some missing install_tagXavier Claessens1-0/+6
2022-09-12modules: Fix paths to (sub)project source/build directoriesDavid Ward2-5/+4
The subproject directory name (i.e. 'subprojects') was being added to the path even for the main project.
2022-09-12i18n: Fix source root in Gettext targets for subprojectsDavid Ward2-6/+10
Gettext should search for input files relative to the (sub)project source root, not the global source root. This change exposes a root_subdir member in ModuleState.
2022-09-07modules/wayland: Change default value of include_core_only to trueMark Bolhuis1-1/+1
The use of wayland-<client|server>.h is discouraged, therefore change the default value of include_core_only to true.
2022-09-07modules/wayland: Rename core_only to include_core_onlyMark Bolhuis1-3/+3
Rename the core_only option in scan_xml to include_core_only to match the flag used by wayland-scanner.
2022-09-06modules/wayland: Support --include-core-onlyMark Bolhuis1-1/+7
wayland-scanner can generate header files that only include wayland-client-core.h using a flag. Add a core_only option to scan_xml to support this use case.
2022-09-06Fix install_subdirs not showing up in intro-install_plan.jsonThomas Li1-0/+1
2022-08-31Fix 2 typos in a single string which can be shown in error messages.Jehan1-1/+1
2022-08-31modules/cmake: Fix typoaleksander1-1/+1
2022-08-26Fix indentation issues reported by flake8, requiring code restructuringAlf Henrik Sauge1-5/+9
Strictly speaking code restructuring isn't needed, but making this PEP8 compliant results in indentation of the code that reduces the readability. By moving the offending code on the outside of the method call, the readability is maintained.
2022-08-26Fix purely white space issues reported by flake8Alf Henrik Sauge3-12/+13
2022-08-25Revert "Windows: Improve Python 3.8+ module check on Windows"Eli Schwartz1-13/+1
This reverts commit 99ad11bd9c3249f548dda0b275d9f8dd1b3f6d14. This breaks working setups in conda. It is either wrong or incomplete and thus cannot be used. Fixes #10737
2022-08-22introspection: untangle install_plan implemetation, fix a bunch of wrong onesEli Schwartz1-8/+13
Generally plumb through the values of get_option() passed to install_dir, and use this to establish the install plan name. Fixes several odd cases, such as: - {datadir} being prepended to "share" or "include" - dissociating custom install directories and writing them out as {prefix}/share/foo or {prefix}/lib/python3.10/site-packages This is the second half of #9478 Fixes #10601
2022-08-18modules/pkgconfig: make it a NewExtensionModuleDylan Baker1-5/+5
Since we no longer need Interpreter.extract_variables, we can remove the interpreter from the module!
2022-08-18modules/pkgconfig: mypy clean!Dylan Baker1-22/+25
2022-08-18modules/pkgconfig: Fix code to handle CustomTarget and CustomTargetIndexDylan Baker1-3/+4
2022-08-18modules/pkgconfig: remove type checking abstractionDylan Baker1-8/+7
Which confuses the heck out of mypy
2022-08-18modules/pkgconfig: get rid of modifications to the BuildTarget objectsDylan Baker1-24/+40
This would tack on extra attributes for meta data tracking. Do that with our own datastructures instead
2022-08-18modules/pkgconfig: ensure "name" is not NoneDylan Baker1-2/+9
The name can be None if a library is not passed as a positional argument, and the name keyword argument is not provided. We shouldn't allow that to happen.
2022-08-18modules/pkgconfig: Get most type annotations addedDylan Baker1-50/+80
There are still a lot of errors here due to a mixture of really bad design (adding extra attributes to objects), and legitimate type errors (passing a str where a List[str] is expected). I suspect a lot of these cases aren't hit for some reason.
2022-08-18modules/pkgconfig: Use typed_kwargsDylan Baker1-58/+98
2022-08-18modules/pkgconfig: use typed_pos_argsDylan Baker1-8/+6
2022-08-18modules/pkgconfig: fix typo in blocked variableDylan Baker1-1/+1
require_private -> requires_private.
2022-08-18modules/pkgconfig: Fix some low hanging typing issuesDylan Baker1-18/+20
2022-08-18modules/fs: Replace configure_file(copy:) with fs.copyfileDylan Baker1-5/+60
`configure_file` is both an extremely complicated implementation, and a strange place for copying. It's a bit of a historical artifact, since the fs module didn't yet exist. It makes more sense to move this to the fs module and deprecate this `configure_file` version. This new version works at build time rather than configure time, which has the disadvantage it can't be passed to `run_command`, but with the advantage that changes to the input don't require a full reconfigure.
2022-08-17interpreter: move handling of module stability to interpreterDylan Baker6-0/+0
Thanks to `ModuleInfo`, all modules are just named `foo.py` instead of `unstable_foo.py`, which simplifies the import method a bit. This also allows for accurate FeatureNew/FeatureDeprecated use, as we know when the module was added and if/when it was stabilized.
2022-08-17modules: Add stabilization information to ModuleInfoDylan Baker8-7/+9
We're going to do more with this in the next commit, but this just adds the information for now. This allows the next commit have 100% mv changes for some of the modules, which makes review easier
2022-08-17modules: use module level information about new and deprecationDylan Baker24-48/+105
Instead of using FeatureNew/FeatureDeprecated in the module. The goal here is to be able to handle information about modules in a single place, instead of having to handle it separately. Each module simply defines some metadata, and then the interpreter handles the rest.
2022-08-04typing: simplify type annotations for librariesEli Schwartz1-3/+3
In a bunch of places we need to list various types of libraries including custom_target outputs, and it gets very long. Use a common T.Union for this.
2022-07-25qt module: correctly compare program name for lrelease versionEli Schwartz1-1/+1
(b, name) will always have the canonical tool name, not just a potentially weird bin path. We need to check stderr for qt4 tools other than lrelease, but we keyed off of the tool bin path, so matches were by no means guaranteed, and specifically, would fail if the tool is looked up via bindir. This really should always have checked the canonical name, which is guaranteed to be correct. Partial fix for #10443
2022-07-17modules/wayland: Add full type checkingDylan Baker1-9/+32
2022-07-08implement the new preserve_path kwarg for install_data tooEli Schwartz1-4/+10
Primarily interesting to me because it is then available for the python module's install_sources method. Based on the new feature in install_headers.