aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
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>
2022-02-01interpreter: support for forcibly verbose logging of some testsPaolo Bonzini6-3/+27
Add a new keyword argument to test() and benchmark(), completing the implementation of the feature. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-02-01mtest: support for forcibly verbose logging of some testsPaolo Bonzini2-13/+17
Store in TestSerialisation whether a particular test must always be logged verbosely. This is particularly useful for long-running tests or when a single Meson test() is wrapping an external test harness. In this case, TAP can be used by the external harness and Meson will log each subtest as it runs. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-02-01backends/ninja: generate symlink aliases for rust/cs/swift libraries tooEli Schwartz1-1/+3
Basically the last thing we did during target processing was to generate shlib symlinks for e.g. libfoo.so -> libfoo.so.1. In some cases we would dispatch to another function and return early, though, which meant we never got far enough to generate the symlinks. This then led to breakage when people tried to compile against libfoo.so This surely breaks -uninstalled.pc usage, and also caused problems in https://github.com/rust-lang/rust/pull/90260
2022-01-31gnome: add documentation for new kwargsEli Schwartz1-2/+6
This was forgotten in commit bc8c938148a55910dd1bd454fc3c5e8ab7477baa -- sorry!
2022-01-31doc: fix regression that deleted all methods from the reference manualEli Schwartz1-3/+3
Regressed in commit bfb12222c3f64c4dac45fa526a355fffa74dbecd. This needs to iterate over all methods, process them, and add them to a list. Instead, it deleted all methods, processed all remaining methods, and appended them to the in-use iterator. Use a second list, instead. Fixes #9922
2022-02-01Fix dep.get_variable() with empty string default_valueXavier Claessens3-1/+11
2022-01-31add types-PyYAML to lint workflowStone Tickle1-1/+1
2022-01-31print warning when using fastyaml loaderStone Tickle1-2/+7
2022-01-31mention fastyaml loader in the docsStone Tickle1-1/+4
2022-01-31add --quiet option to genrefmanStone Tickle1-0/+4
2022-01-31add fastyaml loaderStone Tickle2-65/+171
2022-01-29docs: find_program can return the current Python3 interpreterAndrea Pappacoda1-1/+3
This was the case since 067ff7eeae26eda8edc9f7f7432f551c3e373eaa, i.e. version 0.50.0. Fixes #3856
2022-01-30unittests: Fix warning about distutils deprecationNirbheek Chauhan1-2/+5
unittests/rewritetests.py:19: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives from distutils.dir_util import copy_tree
2022-01-30ninja backend: Fix usage of same constants file for native and crossNirbheek Chauhan5-32/+39
For example: ``` meson builddir \ --native-file vs2019-paths.txt \ --native-file vs2019-win-x64.txt \ --cross-file vs2019-paths.txt \ --cross-file vs2019-win-arm64.txt ``` This was causing the error: > ERROR: Multiple producers for Ninja target "/path/to/vs2019-paths.txt". Please rename your targets. Fix it by using a set() when generating the list of regen files, and add a test for it too.
2022-01-28modules/gnome: remove unnecessary type checkDylan Baker1-3/+0
This should have been removed when typed_kwargs was added
2022-01-28gnome: genmarshal: If the source includes the header, depend on itDylan Baker1-15/+18
Otherwise we're racing between the header generation and the source generation.
2022-01-28build: replace kwargs in CustomTarget initializerDylan Baker13-465/+497
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!
2022-01-28interpreter: use find_program_impl instead of shutil.which for vcs_tagDylan Baker1-2/+1
This is the right thing to do, using which is wrong.
2022-01-28interpreter: remove dead code from custom_targetDylan Baker1-2/+0
This has been completely replaced by typed_kwargs now
2022-01-28interpreter: use typed_kwargs for vcs_tagDylan Baker2-24/+45
2022-01-27add location data to various Feature checksEli Schwartz4-21/+22
2022-01-27pkgconfig module: fix incorrect Feature logging for uninstalled_variablesEli Schwartz1-2/+2
The utility function that processes this for both 'variables' and 'uninstalled_variables' accepts a kwarg for the name of the argument, but then hardcodes 'variables' in the warning message. This is misleading.