summaryrefslogtreecommitdiff
path: root/mesonbuild/modules/hotdoc.py
AgeCommit message (Collapse)Author
2025-10-06hotdoc: remove HotdocTargetBuilder.get_valuePaolo Bonzini
The method is unused since commit c8aecc768 ("hotdoc module: add partially typed kwargs", 2022-10-24). Found while looking for callers of OptionStore.get_value. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-06-17modules: convert custom holders to InterpreterObject.methodPaolo Bonzini
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-03-10coredata: replace get_option with optstore.get_value_forDylan Baker
This is an old method, that is now just a wrapper around the OptionStore method, that doesn't add any value. It's also an option related method attached to the CoreData instead of the OptionStore, so useless and a layering violation.
2024-07-11Move OptionKey in the option source file.Jussi Pakkanen
2023-12-13Use SPDX-License-Identifier consistentlyDylan Baker
This replaces all of the Apache blurbs at the start of each file with an `# SPDX-License-Identifier: Apache-2.0` string. It also fixes existing uses to be consistent in capitalization, and to be placed above any copyright notices. This removes nearly 3000 lines of boilerplate from the project (only python files), which no developer cares to look at. SPDX is in common use, particularly in the Linux kernel, and is the recommended format for Meson's own `project(license: )` field
2023-08-10hotdoc module: add a bunch more type annotationsEli Schwartz
2023-08-10hotdoc module: avoid monkeypatch crime by properly subclassing ExternalProgramEli Schwartz
2023-08-10allow some ObjectHolder subclasses to continue to be genericEli Schwartz
ExternalProgram and CustomTarget have some use cases for producing subclassed interpreter holders with more specific types and methods. In order for those subclasses to properly refer to their held_object, we need a shared base class that is still generic, though bound. For the derived held objects, inherit from the base class and specify the final types as the module-specific type.
2023-07-19fix implicit_reexport issues and enforce them going forwardEli Schwartz
This detects cases where module A imports a function from B, and C imports that same function from A instead of B. It's not part of the API contract of A, and causes innocent refactoring to break things.
2023-03-16hotdoc: Install devhelp files at the right locationXavier Claessens
When devhelp is enabled, hotdoc generates a devhelp/ subdir that needs to be installed to /usr/share/devhelp/. Otherwise, the html/ subdir needs to be installed to /usr/share/doc/<project>/html/
2023-03-05hotdoc module: properly error out when configuring failsEli Schwartz
We used to just abort during configure because we ran in-process and hotdoc's argparse would leak into our own process space. Now we fail to handle this case and succeed at configuring, only for building to fail because the hotdoc config file doesn't exist.
2023-02-01treewide: add future annotations importEli Schwartz
2022-11-20hotdoc module: fix broken include pathsEli Schwartz
Since commit 32b14b1bb533e10c7344c2e04125a226553c9b9f, hotdoc is run during configure as an external program. It turns out though, that in some cases we passed NoneType in the cmd array, previously to hotdoc.run_hotdoc.run() and now via subprocesses. The former "worked" due to ignoring unknown arguments (?) but the latter was broken because command line interfaces don't accept python NoneType objects, naturally. End result: when for example building Meson's own documentation, this fails with a python traceback. The reason this happens to begin with turns out to be, once again, because of the legacy debt of homebrewed kwargs parsing. We have a function for `process_known_args` that handles args and ignores them if they are NoneType, and then include_paths is handled via a custom processor that internally adds them, then returns a *list* of NoneType which then gets appended to the global cmd, because the logic ends up as `[None, None] is None` which is a failed check, so we go ahead and add it. It's odd that we ever attempted to process it twice to begin with, so let's simply not do that.
2022-11-20hotdoc module: remove homebrew function-proxied OrderedSetEli Schwartz
We are just using this dictionary to get keys, and we could also just set it ourselves but with None values. But we have a code abstraction for this already; use it.
2022-11-17hotdoc module: run hotdoc as an external command during configureEli Schwartz
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-07hotdoc module: add dedicated depends kwarg, deprecate file deps in dependenciesEli Schwartz
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 Schwartz
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-24hotdoc module: add partially typed kwargsEli Schwartz
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 Chauhan
2022-10-04pylint: enable consider-merging-isinstanceDylan Baker
2022-09-12modules: Fix paths to (sub)project source/build directoriesDavid Ward
The subproject directory name (i.e. 'subprojects') was being added to the path even for the main project.
2022-08-17modules: use module level information about new and deprecationDylan Baker
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-03-29Pass environment down to base Target classXavier Claessens
2022-03-24hotdoc module: use typed_pos_args to check positional argumentsEli Schwartz
We cannot use typed_kwargs though, because we allow fully arbitrary kwargs and pass them as arguments to the hotdoc program.
2022-01-28build: replace kwargs in CustomTarget initializerDylan Baker
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!
2021-11-01various manual conversion of percent-formatted strings to f-stringsEli Schwartz
2021-10-04f-stringsEli Schwartz
2021-10-03docs: Hook up the new RefMan generator to MesonDaniel Mensinger
2021-08-17Add install tagsXavier Claessens
Fixes: #7007.
2021-06-29fix: Always explicitly set encoding for text files (fixes #8263)Daniel Mensinger
2021-06-18holders: remove unholderDaniel Mensinger
2021-05-28modules: Add methods dict everywhereXavier Claessens
This fix calling random internal methods from meson.build as long as they were not prefixed by underscore.
2021-05-28modules: Stop using ModuleReturnValue where it's not neededXavier Claessens
It is only needed in functions that need to add targets to the interpreter.
2021-05-12gnome: Fix gtkdoc generationXavier Claessens
install_scripts used to replace @BUILD_ROOT@ and @SOURCE_ROOT@ but it was not documented and got removed in Meson 0.58.0. gnome.gtkdoc() was relying on that behaviour, but it has always been broken in the case the source or build directory contains spaces. Fix this by changing get_include_args() to substitue paths directly which will then get escaped correctly. Add a unit test that builds GObject documentation which is where this issue has been spotted. Fixes: #8744
2021-03-19split program related classes and functions out of dependenciesDylan Baker
Dependencies is already a large and complicated package without adding programs to the list. This also allows us to untangle a bit of spaghetti that we have.
2021-03-04mass rewrite of string formatting to use f-strings everywhereEli Schwartz
performed by running "pyupgrade --py36-plus" and committing the results
2021-01-30Fix executable as script on WindowsXavier Claessens
On Windows this would fail because of missing DLL: ``` mylib = library(...) exe = executable(..., link_with: mylib) meson.add_install_script(exe) ``` The reason is on Windows we cannot rely on rpath to find libraries from build directory, they are searched in $PATH. We already have all that mechanism in place for custom_target() using ExecutableSerialisation class, so reuse it for install/dist/postconf scripts too. This has bonus side effect to also use exe_wrapper for those scripts. Fixes: #8187
2021-01-13Fix misspellsAntonin Décimo
Signed-off-by: Antonin Décimo <antonin.decimo@gmail.com>
2021-01-04Use a single coredata dictionary for optionsDylan Baker
This patches takes the options work to it's logical conclusion: A single flat dictionary of OptionKey: UserOptions. This allows us to simplify a large number of cases, as we don't need to check if an option is in this dict or that one (or any of 5 or 6, actually).
2020-03-24Make werror per subproject optionXavier Claessens
2019-11-11hotdoc: work around argparse syntax ambiguityMathieu Duponchelle
Fixes #5800
2019-04-24hotdoc: Handle werrorThibault Saunier
2019-04-24hotdoc: Take into account boolean value to pass flag like argumentsThibault Saunier
2019-03-10hotdoc: Set gi-c-source-rootThibault Saunier
The same way as we set '--sources-top-dirs' for gi
2018-11-15hotdoc: Fix has_extensions when several extensions are passed inThibault Saunier
2018-09-23hotdoc: Add support for {Build,Custom}Target as sourcesThibault Saunier
2018-09-10hotdoc: Make project_version mandatory as it should always have beenThibault Saunier
2018-09-10hotdoc: Handle IncludeDirs to specify directoriesThibault Saunier
2018-08-28docs: Use meson to build documentationThibault Saunier
Let's eat our own dogfood.
2018-08-28modules: Add an 'hotdoc' moduleThibault Saunier
hotdoc: http://github.com/hotdoc/hotdoc/