aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-03-14mtest: fix logic bug that broke tests where the cmd is a Windows found programEli Schwartz2-3/+5
In this case, the test fname might have an implicit extension and cannot be found by `os.path.isfile()`. We cannot use `shutil.which()` to handle platform differences, because not all test fnames are executable -- for example Java jars. The test representation does have an "is built" attribute which in theory should work here, because all built targets definitely have their full filename known to Meson, but it turns out to be misnamed. Rename it correctly and add an actual "is built" attribute to check. Tests which aren't built by Meson can be assumed to exist without consulting their existence on the filesystem. Fixes #10027
2022-03-13give subproject interpreters a view of user defined optionsEli Schwartz1-1/+2
We need this for the python module, as implemented in commit e8375d20a9aeb8c3b0ad58f299ded0e5e978b447, but that then crashed in subprojects because those options were never forwarded to the subproject interpreter.
2022-03-13Merge pull request #9339 from dcbaker/submit/structured_sourcesJussi Pakkanen32-42/+534
Structured Sources
2022-03-12remove unused type ignore that mypy 0.940 no longer needsEli Schwartz1-1/+1
And now that it doesn't need it, it errors out when you use it.
2022-03-12fix regression in vcs_tag when the VCS program is not installedEli Schwartz2-1/+9
We are supposed to fallback on the fallback when running the vcstagger, but instead we errored out during configure. Fixes regression in commit b402817fb6f0392812bfa272bdbc05c9c30139fa. Before this, we used shutil.which || relative paths, and in the latter case if it could not be found we still wrote out that path but it failed to run in vcstagger. Now, we use find_program under the hood, so it needs to be run in non-fatal mode, and if it is not found, we simply keep the original command string. It's a VCS command, so if we magically end up finding it at runtime because it was installed after running configure, that is *fine*.
2022-03-10Remove a spurious debug print in Python moduleRalf Gommers1-1/+0
This prints many lines of unwanted "done /absolute/path", I noticed this when testing 0.62.0rc1 with SciPy. [ci skip]
2022-03-10Bump version numbers for rc1 release.0.62.0rc1Jussi Pakkanen2-2/+2
2022-03-09Add new env2mfile command.Jussi Pakkanen4-1/+440
2022-03-09Fix exponential regex in doc regeneration.Jussi Pakkanen1-1/+18
2022-03-09Move dataonly pkgconfig file to datadir/pkgconfigTristan Partin3-2/+7
dataonly files are architecture independent (lib vs lib64 for example). Fixes #9902
2022-03-09fix python traceback when gtkdoc needs an exe_wrapper but doesn't have oneEli Schwartz1-2/+4
In commit c88bfdbefc2f79ac2dfa9bff5847c350de5f5db8 we added support for an exe_wrapper to gtkdoc, which checked twice whether the environment says it is needed, and didn't check at all whether one was provided. The result: File "/usr/lib/python3/dist-packages/mesonbuild/modules/gnome.py", line 1354, in gtkdoc t_args.append('--run=' + ' '.join(state.environment.get_exe_wrapper().get_command())) AttributeError: 'NoneType' object has no attribute 'get_command' Instead, check whether we have a valid exe_wrapper (if we don't need one, then even when one is defined in the cross file, we get an EmptyExternalProgram) and if we do, use it. If we don't have one, but need one, then we revert back to the behavior before commit c88bfdbefc2f79ac2dfa9bff5847c350de5f5db8, which probably means "executing the doc target causes the command to error out with "Exec format error".
2022-03-09install: Add --strip optionXavier Claessens6-11/+47
2022-03-09Replace freezing regex with plain text operations.Jussi Pakkanen1-2/+14
The regex in question causes Python's regex parser to freeze indefinitely in certain Python versions. That might be due to a bug or because the re does infinite backtracking and it just happened to work on earlier implementations.
2022-03-08add early sanity check for test programs existingEli Schwartz1-1/+4
It used to be possible to do this: ``` bomb = find_program('nonexisting', required: false) test('traceback during meson test', bomb) ``` and it would in fact bomb out, with: ``` [0/1] Running all tests. Traceback (most recent call last): File "/usr/lib/python3.10/site-packages/mesonbuild/mesonmain.py", line 149, in run return options.run_func(options) File "/usr/lib/python3.10/site-packages/mesonbuild/mtest.py", line 2017, in run return th.doit() File "/usr/lib/python3.10/site-packages/mesonbuild/mtest.py", line 1685, in doit runners.extend(self.get_test_runner(test) for test in tests) File "/usr/lib/python3.10/site-packages/mesonbuild/mtest.py", line 1685, in <genexpr> runners.extend(self.get_test_runner(test) for test in tests) File "/usr/lib/python3.10/site-packages/mesonbuild/mtest.py", line 1586, in get_test_runner return SingleTestRunner(test, env, name, options) File "/usr/lib/python3.10/site-packages/mesonbuild/mtest.py", line 1308, in __init__ self.cmd = self._get_cmd() File "/usr/lib/python3.10/site-packages/mesonbuild/mtest.py", line 1374, in _get_cmd test_cmd = self._get_test_cmd() File "/usr/lib/python3.10/site-packages/mesonbuild/mtest.py", line 1352, in _get_test_cmd if self.options.no_rebuild and not os.path.isfile(testentry): File "/usr/lib/python3.10/genericpath.py", line 30, in isfile st = os.stat(path) TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType ERROR: Unhandled python exception This is a Meson bug and should be reported! ``` This is something we explicitly check for elsewhere, for example when using a not-found program as a command in a custom target or generator. Check for it when making a test too, and error out with a similar error. Fixes #10091
2022-03-08Revert "Add new env2cross command."Eli Schwartz3-411/+1
This reverts commit e257a870fe5e676c55a2282b0e7fc9be34bba2ac. The PR adding this command had infinitely hanging CI, and now that it is merged to master we cannot get any CI on any PR to succeed.
2022-03-08tests: bitcode: add missing b_bitcode optionMarvin Scholz1-1/+2
The bitcode test did not actually have bitcode enabled, making it not really useful.
2022-03-08Add new env2cross command.Jussi Pakkanen3-1/+411
2022-03-07docs: add forgotten documentation for the new openssl dependencyEli Schwartz2-0/+17
2022-03-07fix correctly detecting whether python is found if link args are emptyEli Schwartz1-1/+1
There are two cases where we can assume we found the python dependency with its requisite libraries using sysconfig: - we found the library with find_library and are prepared to link to it - the library is not actually part of the dependency, so its presence or absence is irrelevant In the latter case, we should consider it found if link_libpython is False. Originally we did this, but the logic was inverted in commit 5b422fce87826beff3bca85e9c9081f22b3f45b7 in an unrelated change and without explanation, likely by accident. Normally this doesn't much matter, since a python invariably comes with a predictably located libpython and the first condition evaluates true. But that is not true for pypy, and in fact that is the reason the link_libpython check was originally added in commit 1bd14b52b26b0f4ec207bf7e38813b82bfc15f86. Restore that original logic. Fixes #8570
2022-03-07move a bunch of imports into TYPE_CHECKING blocksEli Schwartz11-22/+32
These are only used for type checking, so don't bother importing them at runtime. Generally add future annotations at the same time, to make sure that existing uses of these imports don't need to be quoted.
2022-03-07treewide: string-quote the first argument to T.castEli Schwartz17-37/+39
Using future annotations, type annotations become strings at runtime and don't impact performance. This is not possible to do with T.cast though, because it is a function argument instead of an annotation. Quote the type argument everywhere in order to have the same effect as future annotations. This also allows linters to better detect in some cases that a given import is typing-only.
2022-03-07merge various TYPE_CHECKING blocks into oneEli Schwartz6-65/+52
A bunch of files have several T.TYPE_CHECKING blocks that each do some things which could just as well be done once, with a single `if` statement. Make them do so.
2022-03-07Fix @typed_pos_args on java.generate_native_headersTristan Partin6-22/+39
2022-03-07docs: document the rust_crate_type build_target keywordDylan Baker1-0/+20
2022-03-07Add support for rust proc-macro cratesDylan Baker6-3/+55
2022-03-07docs: Add a document on using Rust in MesonDylan Baker2-0/+57
This is hardly complete, but it's a start.
2022-03-07docs: Add docs for structured_sourcesDylan Baker4-1/+51
2022-03-07tests/rust: Add a test for structured inputsDylan Baker13-0/+139
2022-03-07backends/ninja: Add support for structured sources with rustDylan Baker1-0/+43
2022-03-07build: plumb structured sources into BuildTargetsDylan Baker6-35/+105
2022-03-07interpreter: add an implementation for structured_sourcesDylan Baker3-0/+28
2022-03-07interpreter: Add a holder for StructuredSourcesDylan Baker2-0/+7
And teach the interpreter how to use it
2022-03-07interpreter: teach source_strings_to_files about StructuredSourcesDylan Baker1-1/+1
2022-03-07dependencies: Dependency Sources can be StructuredSourcesDylan Baker1-3/+6
2022-03-07build: Add structured sourcesDylan Baker1-0/+55
2022-03-07backend/ninja: add rules to copy files to the build dirDylan Baker1-0/+12
2022-03-07scripts: Add a script to copy files.Dylan Baker1-0/+18
2022-03-07build: fix typo in type aliasDylan Baker1-1/+1
The declaration is `EnvInitValueType`, but when it's used it's `EnvValueType`.
2022-03-07build: fix type annotation issueDylan Baker1-1/+1
I noticed by inspection
2022-03-07mesonlib: Add a from_node initializer to MesonExceptionDylan Baker1-0/+10
This is useful when creating an exception with a node option, with less typing.
2022-03-07remove unused code after subproject conversion to typed_kwargsEli Schwartz1-2/+0
This should have been removed in commit 4a2058cb836242a6423870e671b6b76fa48167f3 but was forgotten.
2022-03-07Fix mypy CI.Jussi Pakkanen1-1/+1
2022-03-07Merge pull request #10043 from dcbaker/submit/type-checking-for-subprojectJussi Pakkanen11-115/+194
Add typing for subproject()
2022-03-07Fix default install tag for shared lib symlinksXavier Claessens7-28/+65
Versioned shared libraries should have .so file in devel, .so.1 and .so.1.2.3 in runtime. Fixes: #9811
2022-03-07Merge pull request #9743 from mensinda/cmakeGeneratorFixedJussi Pakkanen8-9/+149
cmake: Add TARGET_ generator expression support (fixes #9305)
2022-03-06find_program: add a version() method to match the one for dependenciesEli Schwartz4-0/+28
It is often useful to check the found version of a program without checking whether you can successfully find `find_program('foo', required: false, version: '>=XXX')`
2022-03-06i18n.merge_file: do not disable in the absence of gettext toolsEli Schwartz2-4/+16
Disabling targets because the tools used to build them aren't available is a pretty suspicious thing to do. Users who want this are probably, in general, advised to check themselves whether it is possible to build those targets with find_program(..., required: false) The i18n.gettext() invocation is a bit unusual because the product of running it is non-critical files, specifically, translation catalogs. If users don't have the tools needed to build them, they may not be able to use them either, because perhaps they have NLS disabled on their platform or it's difficult to put it in the bootstrap path. So, for this reason, it was made non-fatal and the message catalogs are just not created, and the resulting build is still perfectly usable *unless* you want to use it in another language, at which point it "works" but the text is all inscrutable to the end user, and that's a feature of the target platform. That's an acceptable tradeoff for translation catalogs. It is NOT an acceptable tradeoff for merge_file, which produces desktop files or MIME database catalogs or other files which have crucial roles to perform, without which the software in question simply doesn't work at all. In such cases, this just fails to install crucial files, users report bugs to the project in question, and the project adds `find_program('xgettext')` to guarantee the hard error due to lack of confidence in Meson. Fixes #6165 Fixes #8436
2022-03-06i18n module: report initial call site when disabling translation supportEli Schwartz1-4/+5
2022-03-06i18n module: detect gettext tools at configure timeEli Schwartz1-13/+27
Use this instead of shutil.which to detect whether they will be available, and pass the ExternalProgram object to CustomTarget invocations, or else make use of the new functionality to specify the correct program path in wrapper scripts. Drop duplicate reporting for itstool missing. Since we use find_program in required mode, its absence is already fatal, and already has a really good error description.
2022-03-06scripts: accept the path of the gettext commands to run as an argumentEli Schwartz3-11/+18
Don't assume itstool, msgfmt et al. are just magically on the path. Normally for commands being processed in build.ninja we'd look up the program in order to run it. Offer the same guarantee for programs being passed through an awkward script wrapper.