aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-01-11cross: move multilib options to [binaries] sectionPaolo Bonzini6-28/+25
c_args are meant to be overridden by the user if needed (even via the environment CFLAGS variables + -Doptimization=plain, for example), so they should not contain any option that affect the multilib search path. For example, a hypothetical native file like this: [binaries] c = gcc [built-in options] c_args = ['-m32'] would *not* build 32-bit binaries if -Dc_args is passed to meson. Such options, instead should be in the [binaries] section. Adjust the sample cross files included with meson. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-01-11coredata: Remove dead codeXavier Claessens1-11/+0
2023-01-10backends: Stop passing generator exes to ExecutableSerialisation as stringsDylan Baker10-7/+87
The code below this already handles being passed an Executable or ExternalProgram, and it does it correctly, since it handles host binaries that need an exe_wrapper correctly, while the code in the generator paths doesn't. The xcode backend is, like always, problematic, it doesn't handle things the same way as the ninja and vscode backends, and generates a shell script instead of using meson as a wrapper when needed (it seems likely that just forcing the meson path for xcode would be better). I don't have a working mac to develop a fix for, so I've left a todo comment there. Fixes: #11264
2023-01-10docs: Add ld64.lld to linker reference tableDylan Baker1-0/+1
I forgot to ask the original author to add this to the original MR (#11243)
2023-01-10linkers: detect ld64 as AppleDynamicLinkerjack2-6/+28
2023-01-10modules: fully type the Qt* modulesDylan Baker4-9/+29
The base module is fully typed, but the numbered version are not, though it's pretty trivial to do so.
2023-01-10modules: add type annotations to the `__init__` moduleDylan Baker2-8/+10
2023-01-10modules/external_project: `make` should be immutableDylan Baker1-1/+6
In some cases we'll get an `ImmutableListProtocol[str]` anyway (and actually, we should probably be getting one in call cases), since we don't mutate it anyway, just store it as immutable.
2023-01-10modules/i18n: fix type annotationsDylan Baker1-1/+1
Again, state.find_program is wrong
2023-01-10modules/icestorm: fix type annotationsDylan Baker1-1/+1
This is also due to the incorrect annotations of state.find_program()
2023-01-10modules/qt: Fix annotations for state.find_programDylan Baker1-3/+3
Because this too, has the wrong assumptions
2023-01-10modules/rust: Fix annotation for _bindgen_binDylan Baker1-2/+2
Which suffers from the same issue as the gnome module
2023-01-10modules/gnome: fix type annotations from `__init__`, which are wrongDylan Baker1-9/+10
Mainly thi sis that `state.find_program()` is annotated incorrectly, it returns `ExternalProgram | Executable | OverrideProgram`, but it's annotated to return only `ExteranlProgram`, and thus a bunch of the annotations in the gnome module are wrong.
2023-01-10build: Add a found method to ExecutableDylan Baker1-0/+4
Again, this is necessary for polymorphism with ExternalProgram
2023-01-10build: Add a get_path method to ExecutableDylan Baker1-0/+5
This is needed to make Executable Polymorphic with ExternalProgram. This can happen when a build program overrides a lookup.
2023-01-09linkers: Do not use numeric windows subsystems with lldJan Janssen1-12/+25
Fixes: #11258
2023-01-09linkers: Fix lld detectionJan Janssen1-1/+1
This was actually probing bfd without always_args passed. Fixes: #10763
2023-01-08CI: fix cuda image breakageEli Schwartz1-1/+1
From the Zen of Python: "Explicit is better than implicit." As it turns out, it's no longer a safe assumption that pip uses setuptools??? Well, anyway, install it properly regardless.
2023-01-08CI: get wxgtk2 via aur_pkgs as it was dropped from the official reposEli Schwartz1-2/+2
Note: this does not actually fix the image builder. It just lets us get far enough to see the testsuite error (the same docker bug that opensuse has).
2023-01-08avoid detecting masm as a MSVC-like compiler for detecting showincludesEli Schwartz1-2/+2
It's msvc-like but, just like Intel Fortran, doesn't support this argument.
2023-01-08msvc: handle filename extensions for incdetect based on the compiler languageEli Schwartz1-2/+3
It is possible, albeit possibly inadvisable, for the exact combination of MSVC and "$CXX has C++ specific flags in it" to occur. When this happens, and cl.exe is given a filename ending in .c, it complains that you cannot compile a .c file with that option. Instead, pick the first filename matching that language and use that as the temporary filename. This more or less matches what we do in compiler-time checks. And it's the proper thing to do, rather than assume that cl.exe, when detected as the current C++ compiler, can *also* compile C because it's *also* a C compiler. Fixes #11257
2023-01-04Users.md: add slapt-getandy59951-0/+1
@jaos please review
2023-01-04be more explicit about asyncio usageEli Schwartz1-1/+2
`get_event_loop()` would always implicitly create one on demand, but Python upstream has decided it's a bad/confusing API. Explicitly starting our own, then setting it, is exactly equivalent other than not being scheduled for deprecation.
2023-01-04mtest: simplify deprecated access to current loopEli Schwartz1-9/+11
These functions constantly want the current asyncio loop, and we run a function call each time to get it. And the function call is a deprecated one. Python 3.7 brings the more explicit get_running_loop for use when we know we're inside one, with the aim of getting rid of get_event_loop once support for python <3.7 disappears. Meson no longer supports python <3.7 either. Switch to the new API, and save the reference for reuse instead of constantly re-calculating it.
2023-01-04mtest: clean up asyncio event loop instantiationEli Schwartz1-7/+6
Fix a TODO comment about moving to asyncio.run, now that we use sufficiently new python to do it. Note that we create an event loop for Windows using the new python defaults, but in a completely different part of the code from where we need to use it. Since asyncio.run creates the loop on its own, we need to set the default policy instead -- which we probably should have done all along.
2023-01-04mtest: delay creation of asyncio lock until event loop existsEli Schwartz1-1/+4
In https://bugs.python.org/issue42392 this stopped implicitly creating an event loop if none exists. We created it before running _run_tests(), so it would auto-create an event loop and set the default, which means we cannot create one explicitly on our own schedule or we end up with two of them. Delay this until we actually start the logger. This happens inside the actual testsuite loop, so it finds the running loop and doesn't create a new one, even on python <3.10.
2023-01-04add a hidden environment variable to make Meson complain hard on deprecationsEli Schwartz1-0/+7
Useful for running the testsuite with this environment variable and catching obscure issues. Just like with the encoding warning later down, we have to do this inside meson itself, not externally injected.
2023-01-04clang-cl: supports /std:c++20 now.Luke Elliott2-1/+4
See https://github.com/llvm/llvm-project/commit/a8f75d49
2023-01-04document declare_dependency(object: ...)Paolo Bonzini3-2/+14
2023-01-04forbid using declare_dependency(objects: ...) with pkg-config modulePaolo Bonzini1-0/+2
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-01-04add testcase for declare_dependency(objects: ...)Paolo Bonzini4-0/+30
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-01-04add objects keyword argument to declare_dependenciesPaolo Bonzini5-8/+13
2023-01-04allow passing generated objects in the "objects" keyword argumentPaolo Bonzini4-8/+22
Generated objects can already be passed in the "objects" keyword argument as long as you go through an extract_objects() indirection. Allow the same even directly, since that is more intuitive than having to add them to "sources". Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-01-03modules/gnome: use `mlog.log(once=True)` in a few more placesDylan Baker1-2/+2
It's probably not useful to spam the user with warnings that old versions of software may not behave correctly when the first warning was perfectly valid.
2023-01-03Add fatal=False to many mlog.warnings()Dylan Baker5-11/+16
There are lots of warnings that become fatal, that are simply unfixable by the end user. Things like using old versions of software (because they're using some kind of LTS release), warnings about compilers not supporting certain kinds of checks, or standards being upgraded due to skipped implementations (MSVC has c++98 and c++14, but not c++11). None of these should be fatal, they're informative, and too important to reduce to notices, but not important enough to stop meson if they're printed.
2023-01-03wrap: use log once instead of hand rollingDylan Baker1-5/+1
2023-01-03mparser: Don't create an exception to pass to mlog.warningDylan Baker1-5/+4
Just call `mlog.code_line` directly, since the exception is never raised.
2023-01-03mlog: move code for printing code with a caret to the mlog moduleDylan Baker2-1/+12
We need this outside the constructor for the ParseException class, so let's pull it out. mlog seemed like a good place since it's a text formatting function, and has no dependencies.
2023-01-03reformat some warnings for better code readabilityDylan Baker2-5/+7
2023-01-03backends/backends: Add helpful message for getting rid of warningDylan Baker1-1/+1
2023-01-03mlog: use an enum instead of stringsDylan Baker1-11/+19
enum comparisons are ultimately ints, so they're faster, plus they're exhaustive, so mypy can statically determine that we've passed a valid value rather than via an assertion at runtime.
2023-01-03mlog: Remove using of `**kwargs: T.Any`Dylan Baker1-29/+59
This is annoying because we can't get proper auto-completion of mlog, and because ultimately it was allowing keyword arguments to be silently dropped on the floor. This does make the code a little more verbose, but I think the trade-offs of completion + better safety are worth it. PEP692, which will be part of python 3.12, provides a more elegant solution using `TypedDicts` to annotate `**kwargs`, which we should consider in the future.
2023-01-03msetup: do some stupid casting to make mypy happyDylan Baker1-4/+5
mypy is pretty dumb when it comes to unions of callables (pylance is also dumb in this regard), and can't figure out that our use of `mlog.debug | mlog.log` is perfectly safe. We also can't annotate them properly to cast them to a valid subset of arguments because you can't have splats in `typing.Callable`, so I've done enough to make it work.
2023-01-03dependencies/dev: refactor some code to make mypy happyDylan Baker1-4/+10
There should be a way to make mypy happy without casting, but I can't figure it out, since the mlog.error and mlog.debug actually have different signatures.
2023-01-03mparser: don't pass a SimpleNamespace where a BaseNode is expectedDylan Baker1-2/+1
mypy spotted this as well. And it turns out that we're not setting the column either for the warning, so improvements!
2023-01-03mesonlib: remove filename parameter to mlog.warningDylan Baker1-1/+1
After tracing all the way down to the bottom of this (or really, adding annotations so mypy can) it turns out that passing file would just be ignored at the end of the mlog call stack, so it should be removed
2023-01-01CI: bypass the cache and install codeql latestEli Schwartz1-0/+2
fixes instability in precise version of tools resulting in some runners getting a downgraded version and producing spuriously fixed/reintroduced codeql alerts.
2022-12-27add builtin option to install licensesEli Schwartz6-6/+27
Unless `meson.install_dependency_manifest()` is explicitly used, this will cause a default implied one to be installed.
2022-12-27add license_files kwarg to projectEli Schwartz12-8/+60
Hook this up to installed dependency manifests. This is often needed above and beyond just an SPDX string -- e.g. many licenses have custom copyright lines.
2022-12-27tests: fix test that has source code incompatible with modern CEli Schwartz2-1/+12
Delayed until clang 16, -Werror=incompatible-function-pointer-types is the default. GCC 14 is "likely to do the same". See https://wiki.gentoo.org/wiki/Modern_C_porting