aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules/hotdoc.py
AgeCommit message (Collapse)AuthorFilesLines
2023-03-16hotdoc: Install devhelp files at the right locationXavier Claessens1-1/+14
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 Schwartz1-1/+2
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 Schwartz1-0/+1
2022-11-20hotdoc module: fix broken include pathsEli Schwartz1-2/+1
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 Schwartz1-10/+6
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 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-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-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-09-12modules: Fix paths to (sub)project source/build directoriesDavid Ward1-3/+2
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 Baker1-3/+6
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 Claessens1-2/+3
2022-03-24hotdoc module: use typed_pos_args to check positional argumentsEli Schwartz1-6/+4
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 Baker1-3/+4
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 Schwartz1-7/+6
2021-10-04f-stringsEli Schwartz1-2/+1
2021-10-03docs: Hook up the new RefMan generator to MesonDaniel Mensinger1-4/+9
2021-08-17Add install tagsXavier Claessens1-0/+1
Fixes: #7007.
2021-06-29fix: Always explicitly set encoding for text files (fixes #8263)Daniel Mensinger1-1/+1
2021-06-18holders: remove unholderDaniel Mensinger1-6/+5
2021-05-28modules: Add methods dict everywhereXavier Claessens1-0/+4
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 Claessens1-2/+1
It is only needed in functions that need to add targets to the interpreter.
2021-05-12gnome: Fix gtkdoc generationXavier Claessens1-2/+1
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 Baker1-1/+2
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 Schwartz1-3/+3
performed by running "pyupgrade --py36-plus" and committing the results
2021-01-30Fix executable as script on WindowsXavier Claessens1-6/+1
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écimo1-2/+2
Signed-off-by: Antonin Décimo <antonin.decimo@gmail.com>
2021-01-04Use a single coredata dictionary for optionsDylan Baker1-1/+1
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 Claessens1-1/+1
2019-11-11hotdoc: work around argparse syntax ambiguityMathieu Duponchelle1-3/+19
Fixes #5800
2019-04-24hotdoc: Handle werrorThibault Saunier1-0/+3
2019-04-24hotdoc: Take into account boolean value to pass flag like argumentsThibault Saunier1-1/+2
2019-03-10hotdoc: Set gi-c-source-rootThibault Saunier1-0/+14
The same way as we set '--sources-top-dirs' for gi
2018-11-15hotdoc: Fix has_extensions when several extensions are passed inThibault Saunier1-1/+1
2018-09-23hotdoc: Add support for {Build,Custom}Target as sourcesThibault Saunier1-3/+7
2018-09-10hotdoc: Make project_version mandatory as it should always have beenThibault Saunier1-0/+1
2018-09-10hotdoc: Handle IncludeDirs to specify directoriesThibault Saunier1-2/+12
2018-08-28docs: Use meson to build documentationThibault Saunier1-5/+1
Let's eat our own dogfood.
2018-08-28modules: Add an 'hotdoc' moduleThibault Saunier1-0/+390
hotdoc: http://github.com/hotdoc/hotdoc/