aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-04-15Add note in docs that multiline f-strings are not supportedPeter Lesslie1-2/+5
Companion to https://github.com/mesonbuild/meson/pull/10284
2022-04-14unittests: make datatests capable of parsing module subsections properlyEli Schwartz1-6/+12
We will need to update the tests for each module that gets newly added, apparently, but the basic structure for doing so is hopefully there.
2022-04-14simplify destdir_join for readabilityEli Schwartz1-3/+3
We can immediately short-circuit if there is no destdir, as we simply return the prefix unchanged. If there is some kind of destdir and the prefix contains a drive letter, then no matter what we need to remove the drive letter before joining. Technically, if the destdir is a relative path e.g. `destdir\` and `C:\prefix`, we should still install to `destdir\prefix` without the drive letter. But... we also guarantee that destdir is an absolute path (or empty) anyway. And even if we didn't, non-absolute destdir is a broken concept for a variety of complicated reasons. So none of this matters in practice. One way or another, we don't need to actually check whether destdir is an absolute path before cutting off the prefix drive letter.
2022-04-14docs: make upload target depend on building the docsEli Schwartz1-0/+1
Manually running hotdoc's upload command does not guarantee the docs have actually been built.
2022-04-14CI images: don't build on a schedule for forksEli Schwartz1-0/+2
It's a bit annoying having to *manually* disable a workflow for forks, because the scheduled build is a waste of time and also spammy. On the other hand, having the workflow enabled is in general a good thing, because it is in fact desirable to test it locally in forks.
2022-04-14qt module: move comment to the correct location after refactoringEli Schwartz1-2/+2
In commit f291b637b13ba32e20d1081906e68780d2a5ae5a the tools were moved around but a comment got forgotten. Now, in order to be meaningful and remind us of anything, it needs to be in a different location.
2022-04-14typoEli Schwartz1-1/+1
2022-04-14remove useless conditionEli Schwartz1-1/+0
not is_subproject() is the same check as self.subproject == ''
2022-04-14pyupgrade --py37-plusEli Schwartz3-13/+5
Some more old style code crept in again. Additionally, pyupgrade learned to catch more if/elsed code based on the python version, and delete it.
2022-04-14ac_converter: use better style for header check iterationEli Schwartz1-5/+5
underscorifying and upper casing the header name is superior to duplicating it.
2022-04-14Fix typo in commentBen Brown1-1/+1
2022-04-13dependencies: move DependencyVariableString handling to declare_dependencyEli Schwartz8-10/+38
This allows tracking which subproject it came from at the time of definition, rather than the time of use. As a result, it is no longer possible for one subproject which knows that another subproject installs some data files, to expose those data files via its own declare_dependency.
2022-04-13dependencies: allow get_variable to expose files from subprojectsEli Schwartz18-4/+154
There are somewhat common, reasonable and legitimate use cases for a dependency to provide data files installed to /usr which are used as command inputs. When getting a dependency from a subproject, however, the attempt to directly construct an input file from a subproject results in a sandbox violation. This means not all dependencies can be wrapped as a subproject. One example is wayland-protocols XML files which get scanned and used to produce C source files. Teach Meson to recognize when a string path is the result of fetching a dep.get_variable(), and special case this to be exempt from subproject violations. A requirement of this is that the file must be installed by install_data() or install_subdir() because otherwise it is not actually representative of what a pkg-config dependency would provide.
2022-04-13dependencies: tighten type checking and fix cmake API violation for get_variableEli Schwartz6-21/+21
dep.get_variable() only supports string values for pkg-config and config-tool, because those interfaces use text communication, and internal variables (from declare_dependency) operate the same way. CMake had an oddity, where get_variable doesn't document that it allows list values but apparently it miiiiiight work? Actually getting that kind of result would be dangerously inconsistent though. Also, CMake does not support lists so it's a lie. Strings that are *treated* as lists with `;` splitting don't count... We could do two things here: - raise an error - treat it as a string and return a string It's not clear what the use case of get_variable() on a maybe-list is, and should probably be a hard error. But that's controversial, so instead we just return the original `;`-delimited string. It is probably the wrong thing, but users are welcome to cope with that somehow on their own.
2022-04-13wayland: Make sure wayland-scanner has same version as wayland librariesXavier Claessens1-1/+6
2022-04-13Add regression test for Python dist.Jussi Pakkanen2-5/+22
2022-04-13compilers: fix broken CompCert support for release flagsEli Schwartz1-1/+1
This has been broken ever since the original implementation. Due to a typo, the optimization flag used a zero instead of an uppercase "o", which the compiler then breaks on during argument parsing because it is an invalid argument. Fixes #10267
2022-04-13mconf: Fix printing <inherited from main project> for yielding optionsXavier Claessens1-13/+9
In print_options() k was a string instead of OptionKey, but self.yielding_options expects OptionKey. Not sure how this has not been catched by mypy. Fix by keeping k as OptionKey which makes self.yielding_options useless. Fixes: #9503
2022-04-12qt module: also prefer the changed name scheme for the toolsEli Schwartz1-1/+3
Although Qt6 has decided these are "internal" commands and should never be run directly, so they don't get symlinked to /usr/bin at all, and are only available in the qt_dep.bindir anyway. But, the general naming pattern should be followed on principle.
2022-04-12qt dependency: adapt to the qmake command changed nameEli Schwartz2-3/+3
Qt now has official guidance for the symlinked names of the tools, which is great. Qt now officially calls the tools `fooX` instead of `foo-qtX` where the major version of Qt is X. Which is not great, because a bit of an unofficial standard had prior art and now needs to change, and we never adapted. Prefer the official name whenever looking up qmake, and in the testsuite, specifically look only for the official name on versions of qt which we know should have that.
2022-04-12qt dependency: find the correct -qtX configtool nameEli Schwartz2-3/+4
Fixes regression in commit c211fea51389728783cf59ae41156a5e0de9c41a. The original dependency lookup looked for `qmake-{self.name}`, i.e. `qmake-qt5`, but when porting to config-tool, it got switched to `qmake-{self.qtname}` i.e. `qmake-Qt6`, which was bogus and never worked. As a result, if `qmake-qt5` and `qmake` both existed, and the latter was NOT qt5, it would only try the less preferred name, and then fail. We need to define self.name early enough to define the configtool names, which means we need to set it before running the configtool __init__() even though configtool/pkgconfig would also set it to the same value. Mark the tests as passing on two distros that were failing to detect qmake due to this issue, and were marked for skipping because we assumed that the CI skipping there was an expected case rather than an old regression.
2022-04-12tests: fix incomplete Qt 6 supportStefan Hajnoczi4-3/+33
The "frameworks/4 qt" test covers Qt 4 and 5. There is already Qt 6 code in the test but it is incomplete because translations are missing and Qt 6 requires C++17 or later to compile.
2022-04-12Add support for Qt 6.1+John Lindgren2-0/+11
Qt 6.1 moved the location of some binaries from QT_HOST_BINS to QT_HOST_LIBEXECS as noted in the changelog: c515ee178f Move build tools to libexec instead of the bin dir - Tools that are called by the build system and are unlikely to be called by the user are now installed to the libexec directory. https://code.qt.io/cgit/qt/qtreleasenotes.git/tree/qt/6.1.0/release-note.txt It's possible to help the 'qt' module find the tools by adding Qt's libexec directory to the PATH environment variable, but this manual workaround is not ideal. To compensate, meson now needs to look for moc, rcc, uic, etc. in QT_HOST_LIBEXECS as well as QT_HOST_BINS. Co-authored-by: Stefan Hajnoczi <stefanha@jammr.net>
2022-04-12cmake: Always use all compilers for LLVM (fixes #10249)Daniel Mensinger3-4/+14
2022-04-12Update Zrythm entry in Users.mdalex-tee1-1/+1
Fixed broken link and updated outdated description.
2022-04-12add pypy3 to msys2 CI runmattip1-0/+20
2022-04-12add a pypy3 for windows toomattip1-1/+9
2022-04-12python module: windows dll name for pypy needs special casingMatti Picus2-2/+11
2022-04-11add pypy3 to the bionic imagemattip1-0/+16
2022-04-11mdist: use better approach to finding original configured optionsEli Schwartz1-4/+14
Instead of reading intro-buildoptions.json, a giant json file containing every option ever + its current value, use the private file that is internally used by msetup for e.g. --wipe to restore settings. This accurately tracks exactly the options specified on the command line, and avoids lengthy summary messages containing all the overridden defaults. It also avoids passing potentially incompatible options, such as explictly specifying -Dpython.install_env while also having a non-empty -Dpython.{x}libdir Fixes #10181
2022-04-10Use a temp file to invoke the introspection command.Jussi Pakkanen1-1/+6
This is more reliable as '-c' can, for example, exhaust the maximum command line length.
2022-04-10python module: restore logging for broken pythonEli Schwartz1-5/+12
This check was erroneously removed in commit c5c02b72e132a03ae0284bdd5e15d1675301a37d
2022-04-09packaging: make sure pyinstaller sees our distributed data filesEli Schwartz2-0/+8
Running pyinstaller to create a bundle, and using the resulting `pyinst-tmp/meson/meson setup ...` with the cmake module revealed that no data files were being bundled, unlike what we did for setup.cfg. Fix this oversight. Fixes #10163
2022-04-07Revert "wayland: Also lookup scanner in pkgconfig"Eli Schwartz4-30/+26
This reverts commit 7954a4c9cbf8355d8c8ea9b3d98df45d9f96f66e.
2022-04-07docs: YAML: Add `arg_flattening: false` where requiredDaniel Mensinger12-0/+27
2022-04-07docs: refman: Add `arg_flattening` supportDaniel Mensinger8-8/+27
2022-04-07docs: Document argument flatteningDaniel Mensinger1-0/+48
2022-04-07docs: Fix [[true]] --> `true`Daniel Mensinger1-2/+2
2022-04-04wayland: Also lookup scanner in pkgconfigXavier Claessens4-26/+30
This moves generally useful logic from GNOME module's _get_native_binary() into find_program() implementation. We could decide later to expose it as public API.
2022-04-03project tests: log the reason why a test is skippedEli Schwartz2-3/+35
We expose a reason after the string 'MESON_SKIP_TEST', but it is actually ignored when running the test, so it is only useful as documentation and really might as well be a comment. Make it even more useful by actually printing that string after the '[SKIPPED]' message. Also, sometimes a test can be skipped for multiple reasons, and it would be useful to know which one occurred.
2022-04-03project tests: do not use tqdm progress bars for a single testEli Schwartz1-9/+11
This can happen for example with `--only fpga` as that category has exactly one test.
2022-04-03Document and test env vars a bit betterJohn Ericson2-10/+8
2022-04-03cmake: Better error message when configuring a CMake subproject fails.Daniel Mensinger5-4/+46
2022-04-01Fix CMake error messageDaniel Mensinger1-2/+2
2022-04-01main: Make the msys/python check work again, in some casesChristoph Reiter1-8/+3
msys/python in MSYS2 pretends to be cygwin in all cases for some time now, so this check was impossible to hit. The underlying confusion it tried to prevent is still there, namely trying to build with mingw but wrongly using a msys/cygwin python/meson. We can use the MSYSTEM env var to detect if we are in a mingw shell, and in case the Python doesn't match we suggest installing mingw variants of both python and meson. Using msys/python + meson in a MSYS environment works fine on the other hand, so no need to error out in that case. Fixes #8726 Also addresses the concern raised in https://github.com/mesonbuild/meson/issues/3653#issuecomment-474122564
2022-04-01docs: fix inaccurate description of command targetsEli Schwartz2-2/+2
It isn't possible to have one target depend on a run_target, because those produce no outputs and are always out of date. But the docs didn't specify which types of target are valid here. Correct the docs to align with the implementation. Fixes #10198
2022-03-31i18n: don't let our maintainer targets run via wrapped envEli Schwartz1-2/+2
They are RunTargets because they are one-shot commands without outputs. But we implement them purely via our internal wrapper for gettext, so there is no reason to wrap them *again* in our internal wrapper for meson_exe and set a bunch of environment variables we know we absolutely do not need, use, or want. This avoids the ugly "wrapped due to env" status, and allows users to directly see the command being run without going into despair at obscure pickled nonsense. It also offers a tiny defense against upgrading Meson without reconfiguring. People should not do that, and we error out about this in a bunch of places, but `--internal gettext` has a perfectly stable interface just like most build tools that aren't part of Meson internals, since it uses command line arguments instead of pickling.
2022-03-31allow RunTarget to skip wrapping due to envEli Schwartz3-9/+13
Forcing serialization on when writing out the build rule makes very little sense. It was always "forced" on because we mandated a couple of environment variables due to legacy reasons. Add an attribute to RunTarget to say that a given target doesn't *need* those environment variables, and let ninja optimize them away and run the command directly if set.
2022-03-31docs: note that find_program accepts file objectsEli Schwartz1-4/+6
This was implemented in commit 280346da3ac5904ec097afe89ef45ad34bd4a173 but never properly documented (it predated the version-controlled docs).
2022-03-31Handle same Framework multiple times in Xcode.Jussi Pakkanen1-2/+4