aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-02-16flake8: fix wrong numbers of blank line separatorsEli Schwartz4-2/+4
2022-02-16flake8: fix typoed whitespace surrounding tokensEli Schwartz4-5/+5
2022-02-16remove outdated reference to deleted files in setuptools packagingEli Schwartz1-2/+0
It produced annoying status messages stating that these files could not be found.
2022-02-16flake8: use plain strings instead of f-strings when no variables usedEli Schwartz2-2/+2
2022-02-15fine-tune the logic for reporting context on tracebacksEli Schwartz1-11/+13
Do not report a MesonBugException if the command is `runpython`, because that is 100% other people's code, not ours. It's only used as an alternative to sys.executable for reporting a path to python, in the event of a Windows MSI install. While we are at it, refactor the logic for PermissionError to be a bit more unified (and sadly use isinstance instead of except, but it is what it is).
2022-02-15fix missing documentation for testsuite option in test.jsonEli Schwartz1-0/+5
stdout line matching supports count since commit 66d62a224e92c41d6012dc6c23912a965da4da8f to fail if certain output is present (count: 0) but it was never documented in the contribution guidelines.
2022-02-15pkgconfig module: allow custom variables to reference builtin directoriesEli Schwartz4-12/+107
Automatically generate additional variables and write them into the generated pkg-config file. This means projects no longer need to manually define the ones they use, which is annoying for dataonly usages (it used to forbid setting the base library-relevant "reserved" ones, and now allows it only for dataonly. But it's bloat to manualy list them anyway). It also fixes a regression in commit 248e6cf4736ef9ec636228da66c28f9be03aa74f which caused libdir to not be set, and to be unsettable, if the pkg-config file has no libraries but uses the ${libdir} expansion in a custom variable. This could be considered likely a case for dataonly, but it's not guaranteed.
2022-02-14shared module: Allow linking on AndroidNirbheek Chauhan3-9/+20
Android requires shared modules that use symbols from other shared modules to be linked before they can be dlopen()ed in the correct order. Not doing so leads to a missing symbol error: https://github.com/android/ndk/issues/201 We need to always allow linking for this. Also add a soname, although it's not confirmed that it's needed, and it doesn't really hurt if it isn't needed.
2022-02-14comment out broken Feature checks that fail mypyEli Schwartz1-3/+10
We currently cannot make this work because inside dependency() we don't know the current subproject. We would also like the optional but extremely useful location node, but we don't have that either... Convert the broken code to a FIXME for visibility.
2022-02-14FeatureNew: add mypy type annotations for subproject argEli Schwartz9-12/+28
Use a derived type when passing `subproject` around, so that mypy knows it's actually a SubProject, not a str. This means that passing anything other than a handle to the interpreter state's subproject attribute becomes a type violation, specifically when the order of the *four* different str arguments is typoed.
2022-02-14Add wx-config-3.1 provided by mingw-w64-x86_64-wxmsw3.1apoorv5691-1/+1
On Windows using MSYS2 MinGW installing the package `mingw-w64-x86_64-wxmsw3.1` provides `wx-config-3.1`. I have tried building my software by making this exact change and it build correctly.
2022-02-14run_unittests: check for pytest and pytest-xdist separatelyEli Schwartz1-7/+10
Do not quit from using pytest at all, when pytest is present, simply because xdist isn't available. Even without xdist, pytest is still useful. There doesn't seem to be any particular reason to require xdist. It just happens to have been implemented that way, back in commit 4200afc74d1e6ba6d117e900799d0d82a85bae8a when we originally added a check to avoid pytest erroring out with unknown options when xdist options are passed and xdist is not installed.
2022-02-14unittests: fine-tune the check for whether we are in CIEli Schwartz2-1/+2
The $CI environment variable may be generally set by Github or Gitlab actions, and is not a reliable indicator of whether we are running "CI". It could also, for an absolutely random example that didn't *just happen*, be Alpine Linux's attempt to enable the Meson testsuite in their packaging, which... uses Gitlab CI. In this case, we do want to perform normal skipping on not-found requirements. Instead of checking for $CI, check for $MESON_CI_JOBNAME as we already use that in all of our own CI jobs for various reasons. This makes it easier for linux distros to package Meson without accumulating hacks like "run the testsuite using `env -u CI`".
2022-02-14packaging: fix the MSI bundling of distutils sub-packagesEli Schwartz1-0/+1
Fixes regression in commit 05b5a1e56fe8f5400b65d0d69680cc6531fe74f8. This added usage of another module in the python module's introspection of `meson.exe runpython`, but the MSI packaging didn't adapt, causing it to fail to be detected due to ImportError. Fixes #9975
2022-02-12formatting improvement for include_directories sandbox violation warningEli Schwartz1-2/+2
Print the location the warning was encountered, and quote the string that triggered it. This makes it easier to read what actually happened.
2022-02-12validate the literal directory "subprojects" when checking sandbox violationsEli Schwartz1-1/+2
We do not want anyone touching this entire directory tree, but due to the way it was implemented, we only checked if its direct parent was a subproject violation. This generally worked, unless people tried to add `subprojects/` as an include directory. Patch this hole. It now provides the same warning any sandbox violation does (but is not currently an error, just a "will become an error in the future").
2022-02-10implement 'dist --allow-dirty' flagandy59954-12/+40
closes #9824
2022-02-10ninjabackend: fix rust program names with dashesAlyssa Ross4-7/+8
This substitution matches the behaviour of rustc[1] when inferring crate name based on file name. [1]: https://github.com/rust-lang/rust/tree/4e8fb743ccbec27344b2dd42de7057f41d4ebfdd/compiler/rustc_session/src/output.rs#L88
2022-02-10Contributing.md: fix typoAlyssa Ross1-1/+1
2022-02-09add some forgotten FeatureNew annotationsEli Schwartz1-0/+3
Forgotten in #8512.
2022-02-09fix UI regression in compiler.compiles loggingEli Schwartz1-1/+1
In commit b30dddd4e5b4ae6e5e1e812085a00a47e3edfcf1, various refactorings were done, during which a kwarg got accidentally dropped from the function that determined part of the log message. As a result, a ':' suddenly appeared in the log message where none should be. Example expected output: Checking if "-Werror=shadow with local shadowing" compiles: YES What actually happened: Checking if "-Werror=shadow with local shadowing" : compiles: YES Fixes #9974
2022-02-09minstall: raise explicit errors, by using MesonExceptionEli Schwartz1-7/+7
RuntimeError is way too generic when we have an explicit class for "Meson reports to the user, something went wrong". Moreover we now tell people that generic exceptions are "Meson bugs and should be reported", so our failure to do the technically correct thing and report the right kind of exception means we get haunted by demons of confusion. Specifically, people complain to us that Meson told them "there is a bug in Meson" when their install fails due to meson.build or build environment issues.
2022-02-09meson: Allow directory options outside of prefixJan Tojnar8-57/+51
This bring us in line with Autotools and CMake and it is useful for platforms like Nix, which install projects into multiple independent prefixes. As a consequence, `get_option` might return absolute paths for some directory options, if a directory outside of prefix is passed. This is technically a backwards incompatible change but its effect should be minimal, thanks to widespread use of `join_paths`/`/` operator and pkg-config generator module. It should only cause an issue when a path were constructed by concatenating the value of directory path option. Also remove a comment about commonpath since we do not use that since <https://github.com/mesonbuild/meson/commit/00f5dadd5b7d71c30bd7393d165a87f554eb92e5>. Fixes: https://github.com/mesonbuild/meson/issues/2561
2022-02-09setup.py: better requirementsHenry Schreiner1-1/+2
The first version of setuptools to properly support pyproject.toml was 42 (40-41 were buggy). It is also necessary to specify `build-backend = "setuptools.build_meta"`, otherwise you get the (horrible) default `build-backend = "setuptools.build_meta:__legacy__"`.
2022-02-09setup.cfg: update classifier, drop deprecatedHenry Schreiner1-2/+1
This adds 3.10 (didn't check to see if it was tested on 3.10, that should be done, but I'm using it on 3.10). setup_requires is deprecated and should be producing warnings on modern setuptools, and never worked for setuptools anyway - setuptools can't update itself, and setuptools is what is reading this anyway!
2022-02-09pypi: include a ninja extraHenry Schreiner1-0/+2
This will really help with pipx run, as `pipx run meson[ninja]` will now work on any system with pipx 0.17 or newer, no dependencies required. This now includes GitHub Actions, which just updated to pipx 1.0.0. Pipx run lets you use recent (always <1 week old) versions of anything on PyPI.
2022-02-07mdist: fix dist scripts in subprojects being marked as superproject scriptsEli Schwartz1-7/+7
This has never worked for built/found programs, only for script files. In commit 2fabd4c7dc22373e99fc63823d80083ad30704b8 scripts learned an attribute stating which subproject they came from. In commit 3990754bf55727ef5593769b48f0a03c6b7a3671 dist scripts learned to run even from a subproject, and relied on that attribute to know when, in fact, they came from a subproject. Unfortunately the original attribute was only set in one half of an if/else, and the other half returned early with only part of the work done. Fixes #9964
2022-02-06add FeatureNew check for compiler.* methods with dependency on internal depEli Schwartz1-2/+3
In commit 0deab2ee9efc2ffe9e43f2787611e34656e6a304 we added the ability to pass a declare_dependency() to any compiler method that accepts "dependencies", but we never marked the version it is available since. Fixes #9957
2022-02-06dlang: fix #9250 invalid include flag for root directoryTobias Pankrath1-0/+2
2022-02-06dlang: add test case for root include_directory #9250Tobias Pankrath4-0/+23
2022-02-05Guard against empty string in subdir().Jussi Pakkanen1-0/+2
2022-02-04Drop emacs meson-modeMarc-André Lureau1-31/+0
The one on MELPA is way more advanced: https://melpa.org/#/meson-mode https://github.com/wentasah/meson-mode Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-04mesonlib: Fix Popen_safe_legacy() stderr assumptionOle André Vadla RavnÄs1-1/+1
It may be None. This was encountered with radare's build system on Windows, where symbolextractor.py crashes without any output displayed.
2022-02-03docs: strongly recommend the use of SPDX instead of array of licenseDylan Baker1-9/+17
The array of licenses is not clear, where and SPDX expression using AND and OR is very clear, take for example this: `['Apache', 'GPLv2']`. What does that mean? Any Apache license you like and GPLv2? Using a valid SPDX license identifier however makes it extremely clear what is meant: `'Apache-2.0 OR GPL-2.0-only'`. It is very clear that you mean, "this is Apache 2.0, however, you can use as GPL-2.0 for the purpose of linking it into your GPL-2.0 project".
2022-02-03cmake: ci: Skip tests on Ubuntu Bionic where CMake is stuck on 3.10Daniel Mensinger7-5/+24
2022-02-03cmake: Deprecate CMake <3.17 supportDaniel Mensinger3-12/+15
2022-02-03cmake: Drop CMake server support and bump min. CMake to >= 3.14Daniel Mensinger4-434/+26
2022-02-03Remove unnecessary check during VS activationNazar Mokrynskyi1-2/+0
2022-02-02Merge pull request #9834 from bonzini/test-verbose-kwargJussi Pakkanen9-16/+51
New keyword argument `verbose` for tests and benchmarks
2022-02-02ninjabackend: treat link_whole_targets like link_targets for Rust targetsZach Reizner6-2/+32
For static library crates that depend on other internal static library crates, all link_with targets get promoted to link_whole targets. Due to a bug, only link_with targets are considered when generating a Rust target for the ninja backend. This made it impossible to link a Rust static library with another internal Rust static library. This change fixes that issue by chaining link_whole_targets with link_targets, just like many other languages within the ninja backend.
2022-02-02openssl dependency: add cmake supportEli Schwartz2-4/+11
This is gross and looks terrible, but I'm not entirely sure how else to do this. And cmake is an inferior methodology, TBH, since it is effectively the same as our own builtins. However, cmake also handles some bizarre Windows library names whose provenance I'm not entirely sure of, in addition to implementing the usual excessive pattern of hardcoded search directories. So, this may be useful, at least on Windows, as a fallback. (I am not really interested in offering feature compatibility with cmake for a bunch of bizarre naming schemes that ***aren't the official cmake library names***, so if cmake allows that and people really feel they need it, all the more power to them.) Nevertheless, I believe if it got found via our system dependency class, it will always provide results which are just as functional as cmake. cmake can only find openssl installations that would otherwise be missed. This also avoids the case where users did ``` dependency('OpenSSL', modules: [...], method: 'cmake') ``` and expected it to work, since our builtin dependency supersedes the divergent case and didn't previously allow the cmake method. I don't know why they would do such a thing, but who knows... it is always possible.
2022-02-02dependencies: add a system dependency for OpenSSLEli Schwartz2-1/+71
On some platforms, this is provided by the base system, which nevertheless refrains from providing the .pc files that go along with it. As a result, it's impossible to sensibly find these dependencies. I'm looking at you, FreeBSD... Upstream tracking bug: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257659 This is also a problem on macOS, but that's unfixable (and I believe they provide some truly ancient and out-of-support version anyway) and you probably want to use the homebrew OpenSSL. Still, meson can now detect these old versions and even set their version number.
2022-02-02Genericise TI compiler and add MSP430 supportWilliam Toohey12-72/+144
2022-02-01cmake: add arch_independent kwargAndrea Pappacoda3-2/+15
CMake's write_basic_package_version_file has supported since version 3.14 an ARCH_INDEPENDENT option that makes it skip its architecture check in the Version file. With this patch Meson now supports it as well, and the change is also compatible with older CMake versions, as they will simply ignore the option. This also slightly changes the contents of the generated Version file when arch_independent is not set: previously, the if() needed to skip the arch check was always filled with an empty string, while CMake puts "FALSE" (or "TRUE") in it. Now, that if() will always be filled with either "False" or "True", better matching CMake's behaviour.
2022-02-01cmake: typed_kwargs for write_basic_package_version_fileAndrea Pappacoda1-18/+24
2022-02-01minstall: stop running ldconfig for the userEli Schwartz3-46/+6
This was a nice idea in theory, but in practice it had various problems: - On the only platform where ldconfig is expected to be run, it is really slow, even when the user uses a non-default prefix and ldconfig doesn't even have permission to run, nor can do anything useful due to ld.so.conf state - On FreeBSD, it bricked the system: #9592 - On cross builds, it should not be used and broke installing, because ldconfig may not be runnable without binfmt + qemu: #9707 - it prints weird and confusing errors in the common "custom prefix" layout: #9241 Some of these problems can be or have been fixed. But it's a constant source of footguns and complaints and for something that was originally supposed to be just "it's the right thing to do anyway, so just do it automatically" it is entirely too risky. Ultimately I do not think there is justification for keeping this feature in since it doesn't actually make everyone happy. Better for users to decide whether they need this themselves. This is anyways the case for cmake and autotools and generally any other build system, so it should not be too intimidating... Fixes #9721
2022-02-01Updated precompiled library documentationGuillaume Quenneville1-0/+8
Fix link, change wording
2022-02-01new custom dependency lookup for libdlAndrew Krasavin4-0/+47
2022-02-01pkgconfig: set libdir only if usedAndrea Pappacoda1-1/+2
This should address some concerns outlined in https://github.com/yhirose/cpp-httplib/pull/1182
2022-02-01unittests: check that "verbose: true" works on testsPaolo Bonzini2-1/+8
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>