14 hours agolog running commands a bit better by doing proper shell quoting master
Eli Schwartz [Thu, 6 Oct 2022 09:16:49 +0000 (05:16 -0400)] 
log running commands a bit better by doing proper shell quoting

30 hours agorunpython: make it work for -c as well
Eli Schwartz [Mon, 16 Jan 2023 01:15:03 +0000 (20:15 -0500)] 
runpython: make it work for -c as well

In commit 4e4f97edb3d475273108b203bc02b04bd6840b06 we added support for
runpython to accept `-c 'code to execute'` in addition to just script
files. However, doing so would mangle the sys.argv in the executed code
-- which assumes, as python itself does, that argv is the stuff after
the code to execute. We correctly handled this for script files, but the
original addition of -c support pushed this handling into a script-file
specific block.

2 days agomlog: do not squelch console output for errors
Eli Schwartz [Sun, 22 Jan 2023 21:40:14 +0000 (16:40 -0500)] 
mlog: do not squelch console output for errors

We have functionality to squelch logging, and we use this for situations
where we run a fake interpreter and then emit output. e.g. `introspect`.

It's reasonable to avoid logging your bog-standard noisy `mlog.log()`
here, but unfortunately, we also avoided logging the output of
`mlog.exception()` followed by `sys.exit(2)`, because that went through
mlog! :P Special-case this to keep on printing, even if mlog.disable()
was used -- in such a case, we really do want to emit log output no
matter what. Users need this info to ensure they have any clue why Meson
returned a non-zero exit code.

2 days agointrospect: avoid crashing when add_languages for an optional language fails
Eli Schwartz [Sun, 22 Jan 2023 21:27:58 +0000 (16:27 -0500)] 
introspect: avoid crashing when add_languages for an optional language fails

Because that is what the real interpreter does, too. It logs a failure
and carries on.

2 days add @dcantrell /bsdutils
andy5995 [Thu, 26 Jan 2023 05:38:35 +0000 (23:38 -0600)] add @dcantrell /bsdutils

3 days agotests/llvm: require cmake 3.11
Konstantin [Sat, 28 Jan 2023 15:57:42 +0000 (18:57 +0300)] 
tests/llvm: require cmake 3.11

This is a weird but working way to skip this test from running on
bionic (where it should not run).

3 days agocmake: allow dynamic linking with LLVM
Konstantin [Fri, 15 Jul 2022 12:46:31 +0000 (15:46 +0300)] 
cmake: allow dynamic linking with LLVM

llvm-config is unsuitable for standard cross-compile,
because we need to build llvm especially for it, which
is not done is almost any distros, so, for example,
standard bootstrap chroot will be unsuitable.

This patch is trying to acheive feature parity between
config-tool searching of LLVM and CMake-based one,
which is arch-agnostic.

Signed-off-by: Konstantin <>
4 days agognome: Deduplicate include dirs to generate gir
Thibault Saunier [Wed, 25 Jan 2023 19:41:40 +0000 (16:41 -0300)] 
gnome: Deduplicate include dirs to generate gir

Ensuring the order is respected

5 days agotests: avoid unexpected failure when cmake is not installed
Eli Schwartz [Sun, 22 Jan 2023 01:57:59 +0000 (20:57 -0500)] 
tests: avoid unexpected failure when cmake is not installed

This test case checks stdout and demands a `dependency()` lookup fail.
The resulting error message can be different depending on whether cmake
is installed, or not. For cmake-specific tests we would simply skip the
test if cmake is not installed, but here we can just fine-tune the
pattern matching we use to determine if the test failed "correctly".

Fixes #11320

8 days agomtest: do not warn when the TAP stream version is 12
Eli Schwartz [Wed, 4 Jan 2023 21:49:19 +0000 (16:49 -0500)] 
mtest: do not warn when the TAP stream version is 12

Partial rollback of commit b7a5c384a1f1ba80c09904e7ef4f5160bdae3345. The
rationale was based on a confusing wording of the TAP14 spec, which is
under discussion for clarification / amendment.

TAP14 doesn't (shouldn't) really say that missing a version line is
potentially an error. Rather, this is the correct way to denote TAP12,
which a TAP14 harness may not understand or try to parse. The intention
was never to suggest that harnesses "should" take exception to the
missing version line on the grounds that one should really add a version

So, stop emitting an annoying warning for something that's valid usage.
Meson understands TAP12 and that's okay.

However, we do need to keep the part of that commit which set the
version to 12 if it was otherwise unspecified. But instead of
distinguishing between None and a version, just default to 12.

8 days agoRevert "debug cygwin CI"
Eli Schwartz [Sun, 22 Jan 2023 17:43:58 +0000 (12:43 -0500)] 
Revert "debug cygwin CI"

This reverts commit 79d7891746a7864a1407d48eac8a753b225ec6c3.

This debug print probably should not have ended up live. Moreover, the
function it debugs is, surprisingly, called rather often. Adding I/O to
it causes it to begin to noticeably lag, on the scale of adding actual
*minutes* to a setup run.

Fixes #11322

9 days agomeson init --build should call meson setup and vsenv
Charles Brunet [Tue, 10 Jan 2023 18:34:48 +0000 (13:34 -0500)] 
meson init --build should call meson setup and vsenv

11 days agoHaiku pkgconfig directory layout support
X512 [Fri, 4 Nov 2022 22:55:32 +0000 (07:55 +0900)] 
Haiku pkgconfig directory layout support

11 days agohaiku: set default prefix and library paths
X512 [Fri, 10 Jun 2022 13:34:00 +0000 (22:34 +0900)] 
haiku: set default prefix and library paths

11 days agodevenv should import env vars from vsenv
Charles Brunet [Fri, 20 Jan 2023 12:30:52 +0000 (07:30 -0500)] 
devenv should import env vars from vsenv

11 days agodocs: Qt compile_moc() parameter error
groveer [Fri, 20 Jan 2023 05:27:20 +0000 (13:27 +0800)] 
docs: Qt compile_moc() parameter error

"extra_arguments" should be "extra_args"

11 days agooptinterpreter: pass deprecated keyword directly to Option initializer
Dylan Baker [Wed, 18 Jan 2023 00:17:29 +0000 (16:17 -0800)] 
optinterpreter: pass deprecated keyword directly to Option initializer

11 days agoDeprecate passing strings to non-string options
Dylan Baker [Wed, 11 Jan 2023 19:23:52 +0000 (11:23 -0800)] 
Deprecate passing strings to non-string options

Currently Meson allow the following (Muon does not):
option('foo', type : 'boolean', value : 'true')
option('bar', type : 'integer', value : '42')

This is possibly a holdover from very old code, but it's a bad idea and
we should stop doing it. This deprecation is the first stop on that

11 days agouse typed_kwargs for the various option subparsers
Dylan Baker [Wed, 4 Jan 2023 00:13:28 +0000 (16:13 -0800)] 
use typed_kwargs for the various option subparsers

We make use of allow_unknown=True here, which allows us to only look at
the common arguments in the main option parser, and then look at the
specific options in the dispatched parsers. This allows us to do more
specific checking on a per overload basis.

11 days agodecorators: don't unsort sorted values for printing
Dylan Baker [Wed, 11 Jan 2023 19:59:14 +0000 (11:59 -0800)] 
decorators: don't unsort sorted values for printing

Currently in our deprecated/new feature printing we carefully sort all
of the values, then put them in a set to print them. Which unsorts them.
I'm assuming this was done because a set looks nice when printed (which
is true). Let's keep the formatting, but print them in a stable order.

11 days agocoredata: allow deprecation to be passed to Option initializer
Dylan Baker [Tue, 17 Jan 2023 21:46:01 +0000 (13:46 -0800)] 
coredata: allow deprecation to be passed to Option initializer

Instead of requiring it to be set outside the initializer

11 days agocoredata: get rid of UserArrayOption `**kwargs`
Dylan Baker [Tue, 17 Jan 2023 21:41:41 +0000 (13:41 -0800)] 
coredata: get rid of UserArrayOption `**kwargs`

Let's just pass the two arguments explicitly.

11 days agocoredata: use DEFAULT_YIELDING as the default value for Options
Dylan Baker [Tue, 17 Jan 2023 21:36:20 +0000 (13:36 -0800)] 
coredata: use DEFAULT_YIELDING as the default value for Options

Instead of setting it to `Optional[bool] = None`, and then in the
initializer replacing `None` with `DEFAULT_YIELDING`, just set to to

11 days agocoredata: use a frozenset instead of a dict where values are always None
Dylan Baker [Tue, 3 Jan 2023 23:14:35 +0000 (15:14 -0800)] 
coredata: use a frozenset instead of a dict where values are always None

11 days agoremove dead code
Eli Schwartz [Thu, 19 Jan 2023 20:46:05 +0000 (15:46 -0500)] 
remove dead code

We shouldn't be hardcoding library dirs anyway. And we usually get this
from the compiler.

This function has been unused since its users were moved to use the
compiler method, in the following commits:

12 days agodependencies: fix pcap-config which now errors on --version
Eli Schwartz [Tue, 10 Jan 2023 07:06:16 +0000 (02:06 -0500)] 
dependencies: fix pcap-config which now errors on --version

The latest release of libpcap added argument validation to pcap-config,
but still doesn't support --version. The next version of libpcap will
support --version.

Add support for config-tool dependencies which expect to break on
--version, to fallback to an option that does not error out or print
version info, for sanity checking.

12 days agointerpreter: use typed_pos_args for build_targets
Dylan Baker [Fri, 21 Jan 2022 17:23:40 +0000 (09:23 -0800)] 
interpreter: use typed_pos_args for build_targets

We have to allow through build.BuildTarget and build.ExtractedObjects,
which is what our previous level of checking did, even though they are
ignored. I've used FeatureDeprecated calls here, so that we have a clear
time of "this was officially deprecated in 1.1.0"

12 days agocoredata: Make a deepcopy of global state before mutating
Dylan Baker [Fri, 16 Dec 2022 00:23:48 +0000 (16:23 -0800)] 
coredata: Make a deepcopy of global state before mutating

When a compiler is initialized, it adds specific options that it
supports, but taking some global UserOption objects and adding them to
itself. When it does so, it mutates then if necessary. This means that
each compiler initialized mutates global state, this is bad. This is
worse because in our test suite we do in process testing, so these
mutations are preserved *between tests*, potentially leading to
incorrect results. The simple fix is to do the right thing, and copy the
UserOption before mutating. A deepcopy is required because the option
might be an ArrayOption, and a shallow copy is not sufficient in that

13 days agodoc: Fix typo in release notes
Xavier Claessens [Wed, 18 Jan 2023 16:31:28 +0000 (11:31 -0500)] 
doc: Fix typo in release notes

13 days agoFix typo in doc of sourceset module
Yue Yang [Wed, 18 Jan 2023 15:42:14 +0000 (23:42 +0800)] 
Fix typo in doc of sourceset module

13 days agodevenv: Allow dumping into file and select a format
Xavier Claessens [Fri, 13 Jan 2023 21:42:09 +0000 (16:42 -0500)] 
devenv: Allow dumping into file and select a format

It is often more useful to generate shell script than dumping to stdout.
It is also important to be able to select the shell format.

Formats currently implemented:
- sh: Basic VAR=prepend_value:$VAR
- export: Same as 'sh', but also export VAR
- vscode: Same as 'sh', but without substitutions because they don't
  seems to work. To be used in launch.json's envFile.

13 days ago Fix nasm when target has threads as added dependency
Gijs Peskens [Mon, 14 Nov 2022 11:27:27 +0000 (12:27 +0100)] 
 Fix nasm when target has threads as added dependency

13 days agomparser: Use a literal for the ComparisonNode
Dylan Baker [Thu, 24 Feb 2022 23:51:19 +0000 (15:51 -0800)] 
mparser: Use a literal for the ComparisonNode

And fix a bug where `not in` is in the wrong order.

2 weeks agoproperly type utils/ and add it to mypy
Eli Schwartz [Thu, 6 Oct 2022 09:12:30 +0000 (05:12 -0400)] 
properly type utils/ and add it to mypy

EnvironmentVariables was always broken, it used MutableMapping because
everyone <3 abstract interfaces, especially when they are broken and
don't actually do what you want.

This needs a dict interface, exposing `.copy()`. We either use a dict or
os._Environ, and the latter also supports that.

Also fix a broken import, and the fallout from forgetting to update the
signature of self.envvars in commit b926374205bd761085031755c87152d08bc10e9d.

2 weeks agoBUG: Fix generated sources not being included as dependencies in cython transpilation
Thomas Li [Fri, 4 Nov 2022 22:19:44 +0000 (18:19 -0400)] 
BUG: Fix generated sources not being included as dependencies in cython transpilation

2 weeks agotests: track when an entire category is skipped and be quieter
Eli Schwartz [Wed, 11 Jan 2023 04:32:47 +0000 (23:32 -0500)] 
tests: track when an entire category is skipped and be quieter

There is no need to state for every single test that "preconditions were
not met". And logging the skip reason for a single test is easy to read,
but making every second line alternate is less so.

2 weeks agotests: properly log the reason why a test got unexpectedly skipped
Eli Schwartz [Wed, 11 Jan 2023 04:00:36 +0000 (23:00 -0500)] 
tests: properly log the reason why a test got unexpectedly skipped

2 weeks agoremove totally invalid gcc arguments from cross file
Eli Schwartz [Thu, 12 Jan 2023 01:59:20 +0000 (20:59 -0500)] 
remove totally invalid gcc arguments from cross file

Partial revert of commit cf23e341878286790885352fd1d6548be5798391. This
mostly moved existing arguments to the "right" location, but also
introduced new arguments that didn't previously exist -- which was

... also, these cross files are used by CI (if they have a corresponding
.json file) and this change broke the CI. Because --target isn't a valid
gcc option, although clang/rustc do accept it. For GCC, the argument
parser decides you wanted --target-help, which prints documentation text
and then quits.

2 weeks agocross: move multilib options to [binaries] section
Paolo Bonzini [Mon, 9 Jan 2023 10:15:42 +0000 (11:15 +0100)] 
cross: move multilib options to [binaries] section

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:

   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 <>
2 weeks agocoredata: Remove dead code
Xavier Claessens [Wed, 11 Jan 2023 17:25:15 +0000 (12:25 -0500)] 
coredata: Remove dead code

2 weeks agobackends: Stop passing generator exes to ExecutableSerialisation as strings
Dylan Baker [Mon, 9 Jan 2023 19:12:15 +0000 (11:12 -0800)] 
backends: Stop passing generator exes to ExecutableSerialisation as strings

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

Fixes: #11264

2 weeks agodocs: Add ld64.lld to linker reference table
Dylan Baker [Tue, 10 Jan 2023 20:01:56 +0000 (12:01 -0800)] 
docs: Add ld64.lld to linker reference table

I forgot to ask the original author to add this to the original MR

3 weeks agolinkers: detect ld64 as AppleDynamicLinker
jack [Thu, 5 Jan 2023 04:17:40 +0000 (17:17 +1300)] 
linkers: detect ld64 as AppleDynamicLinker

3 weeks agomodules: fully type the Qt* modules
Dylan Baker [Fri, 6 Jan 2023 19:39:54 +0000 (11:39 -0800)] 
modules: fully type the Qt* modules

The base module is fully typed, but the numbered version are not, though
it's pretty trivial to do so.

3 weeks agomodules: add type annotations to the `__init__` module
Dylan Baker [Fri, 6 Jan 2023 19:23:55 +0000 (11:23 -0800)] 
modules: add type annotations to the `__init__` module

3 weeks agomodules/external_project: `make` should be immutable
Dylan Baker [Fri, 6 Jan 2023 19:34:01 +0000 (11:34 -0800)] 
modules/external_project: `make` should be immutable

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.

3 weeks agomodules/i18n: fix type annotations
Dylan Baker [Fri, 6 Jan 2023 19:29:54 +0000 (11:29 -0800)] 
modules/i18n: fix type annotations

Again, state.find_program is wrong

3 weeks agomodules/icestorm: fix type annotations
Dylan Baker [Fri, 6 Jan 2023 19:28:44 +0000 (11:28 -0800)] 
modules/icestorm: fix type annotations

This is also due to the incorrect annotations of state.find_program()

3 weeks agomodules/qt: Fix annotations for state.find_program
Dylan Baker [Fri, 6 Jan 2023 19:27:27 +0000 (11:27 -0800)] 
modules/qt: Fix annotations for state.find_program

Because this too, has the wrong assumptions

3 weeks agomodules/rust: Fix annotation for _bindgen_bin
Dylan Baker [Fri, 6 Jan 2023 19:23:32 +0000 (11:23 -0800)] 
modules/rust: Fix annotation for _bindgen_bin

Which suffers from the same issue as the gnome module

3 weeks agomodules/gnome: fix type annotations from `__init__`, which are wrong
Dylan Baker [Fri, 6 Jan 2023 19:21:14 +0000 (11:21 -0800)] 
modules/gnome: fix type annotations from `__init__`, which are wrong

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.

3 weeks agobuild: Add a found method to Executable
Dylan Baker [Fri, 6 Jan 2023 19:25:38 +0000 (11:25 -0800)] 
build: Add a found method to Executable

Again, this is necessary for polymorphism with ExternalProgram

3 weeks agobuild: Add a get_path method to Executable
Dylan Baker [Fri, 6 Jan 2023 19:14:57 +0000 (11:14 -0800)] 
build: Add a get_path method to Executable

This is needed to make Executable Polymorphic with ExternalProgram. This
can happen when a build program overrides a lookup.

3 weeks agolinkers: Do not use numeric windows subsystems with lld
Jan Janssen [Mon, 9 Jan 2023 08:37:20 +0000 (09:37 +0100)] 
linkers: Do not use numeric windows subsystems with lld

Fixes: #11258

3 weeks agolinkers: Fix lld detection
Jan Janssen [Mon, 9 Jan 2023 16:09:57 +0000 (17:09 +0100)] 
linkers: Fix lld detection

This was actually probing bfd without always_args passed.

Fixes: #10763

3 weeks agoCI: fix cuda image breakage
Eli Schwartz [Wed, 19 Oct 2022 23:19:48 +0000 (19:19 -0400)] 
CI: fix cuda image breakage

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.

3 weeks agoCI: get wxgtk2 via aur_pkgs as it was dropped from the official repos
Eli Schwartz [Wed, 19 Oct 2022 23:07:38 +0000 (19:07 -0400)] 
CI: get wxgtk2 via aur_pkgs as it was dropped from the official repos

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

3 weeks agoavoid detecting masm as a MSVC-like compiler for detecting showincludes
Eli Schwartz [Sun, 8 Jan 2023 20:35:22 +0000 (15:35 -0500)] 
avoid detecting masm as a MSVC-like compiler for detecting showincludes

It's msvc-like but, just like Intel Fortran, doesn't support this

3 weeks agomsvc: handle filename extensions for incdetect based on the compiler language
Eli Schwartz [Sun, 8 Jan 2023 20:29:46 +0000 (15:29 -0500)] 
msvc: handle filename extensions for incdetect based on the compiler language

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

3 weeks add slapt-get
andy5995 [Wed, 4 Jan 2023 18:24:28 +0000 (12:24 -0600)] add slapt-get

@jaos please review

3 weeks agobe more explicit about asyncio usage
Eli Schwartz [Sun, 25 Dec 2022 07:04:49 +0000 (02:04 -0500)] 
be more explicit about asyncio usage

`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.

3 weeks agomtest: simplify deprecated access to current loop
Eli Schwartz [Sun, 1 Jan 2023 19:33:23 +0000 (14:33 -0500)] 
mtest: simplify deprecated access to current loop

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.

3 weeks agomtest: clean up asyncio event loop instantiation
Eli Schwartz [Sun, 25 Dec 2022 06:45:01 +0000 (01:45 -0500)] 
mtest: clean up asyncio event loop instantiation

Fix a TODO comment about moving to, 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 creates the loop on its own, we need
to set the default policy instead -- which we probably should have done
all along.

3 weeks agomtest: delay creation of asyncio lock until event loop exists
Eli Schwartz [Sun, 1 Jan 2023 22:37:01 +0000 (17:37 -0500)] 
mtest: delay creation of asyncio lock until event loop exists

In 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.

3 weeks agoadd a hidden environment variable to make Meson complain hard on deprecations
Eli Schwartz [Sun, 25 Dec 2022 07:19:14 +0000 (02:19 -0500)] 
add a hidden environment variable to make Meson complain hard on deprecations

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.

3 weeks agoclang-cl: supports /std:c++20 now.
Luke Elliott [Tue, 27 Dec 2022 17:21:06 +0000 (17:21 +0000)] 
clang-cl: supports /std:c++20 now.


3 weeks agodocument declare_dependency(object: ...)
Paolo Bonzini [Mon, 19 Dec 2022 11:38:55 +0000 (12:38 +0100)] 
document declare_dependency(object: ...)

3 weeks agoforbid using declare_dependency(objects: ...) with pkg-config module
Paolo Bonzini [Mon, 19 Dec 2022 11:35:22 +0000 (12:35 +0100)] 
forbid using declare_dependency(objects: ...) with pkg-config module

Signed-off-by: Paolo Bonzini <>
3 weeks agoadd testcase for declare_dependency(objects: ...)
Paolo Bonzini [Mon, 19 Dec 2022 11:33:54 +0000 (12:33 +0100)] 
add testcase for declare_dependency(objects: ...)

Signed-off-by: Paolo Bonzini <>
3 weeks agoadd objects keyword argument to declare_dependencies
Paolo Bonzini [Mon, 19 Dec 2022 11:33:32 +0000 (12:33 +0100)] 
add objects keyword argument to declare_dependencies

3 weeks agoallow passing generated objects in the "objects" keyword argument
Paolo Bonzini [Mon, 19 Dec 2022 12:31:40 +0000 (13:31 +0100)] 
allow passing generated objects in the "objects" keyword argument

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 <>
4 weeks agomodules/gnome: use `mlog.log(once=True)` in a few more places
Dylan Baker [Fri, 8 Jul 2022 19:04:13 +0000 (12:04 -0700)] 
modules/gnome: use `mlog.log(once=True)` in a few more places

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.

4 weeks agoAdd fatal=False to many mlog.warnings()
Dylan Baker [Fri, 8 Jul 2022 17:13:31 +0000 (10:13 -0700)] 
Add fatal=False to many mlog.warnings()

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

4 weeks agowrap: use log once instead of hand rolling
Dylan Baker [Fri, 8 Jul 2022 18:50:51 +0000 (11:50 -0700)] 
wrap: use log once instead of hand rolling

4 weeks agomparser: Don't create an exception to pass to mlog.warning
Dylan Baker [Fri, 8 Jul 2022 18:48:49 +0000 (11:48 -0700)] 
mparser: Don't create an exception to pass to mlog.warning

Just call `mlog.code_line` directly, since the exception is never raised.

4 weeks agomlog: move code for printing code with a caret to the mlog module
Dylan Baker [Wed, 14 Dec 2022 23:03:20 +0000 (15:03 -0800)] 
mlog: move code for printing code with a caret to the mlog module

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.

4 weeks agoreformat some warnings for better code readability
Dylan Baker [Fri, 8 Jul 2022 18:43:57 +0000 (11:43 -0700)] 
reformat some warnings for better code readability

4 weeks agobackends/backends: Add helpful message for getting rid of warning
Dylan Baker [Fri, 8 Jul 2022 18:38:56 +0000 (11:38 -0700)] 
backends/backends: Add helpful message for getting rid of warning

4 weeks agomlog: use an enum instead of strings
Dylan Baker [Fri, 8 Jul 2022 16:46:56 +0000 (09:46 -0700)] 
mlog: use an enum instead of strings

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.

4 weeks agomlog: Remove using of `**kwargs: T.Any`
Dylan Baker [Fri, 8 Jul 2022 16:42:52 +0000 (09:42 -0700)] 
mlog: Remove using of `**kwargs: T.Any`

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.

4 weeks agomsetup: do some stupid casting to make mypy happy
Dylan Baker [Fri, 8 Jul 2022 16:41:04 +0000 (09:41 -0700)] 
msetup: do some stupid casting to make mypy happy

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.

4 weeks agodependencies/dev: refactor some code to make mypy happy
Dylan Baker [Fri, 8 Jul 2022 16:32:06 +0000 (09:32 -0700)] 
dependencies/dev: refactor some code to make mypy happy

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.

4 weeks agomparser: don't pass a SimpleNamespace where a BaseNode is expected
Dylan Baker [Fri, 8 Jul 2022 16:28:22 +0000 (09:28 -0700)] 
mparser: don't pass a SimpleNamespace where a BaseNode is expected

mypy spotted this as well. And it turns out that we're not setting the
column either for the warning, so improvements!

4 weeks agomesonlib: remove filename parameter to mlog.warning
Dylan Baker [Fri, 8 Jul 2022 16:26:44 +0000 (09:26 -0700)] 
mesonlib: remove filename parameter to mlog.warning

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

4 weeks agoCI: bypass the cache and install codeql latest
Eli Schwartz [Sun, 1 Jan 2023 18:19:57 +0000 (13:19 -0500)] 
CI: bypass the cache and install codeql latest

fixes instability in precise version of tools resulting in some runners
getting a downgraded version and producing spuriously fixed/reintroduced
codeql alerts.

4 weeks agoadd builtin option to install licenses
Eli Schwartz [Thu, 8 Dec 2022 03:25:26 +0000 (22:25 -0500)] 
add builtin option to install licenses

Unless `meson.install_dependency_manifest()` is explicitly used, this
will cause a default implied one to be installed.

4 weeks agoadd license_files kwarg to project
Eli Schwartz [Tue, 6 Dec 2022 21:14:22 +0000 (16:14 -0500)] 
add license_files kwarg to project

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.

5 weeks agotests: fix test that has source code incompatible with modern C
Eli Schwartz [Sun, 18 Dec 2022 05:45:55 +0000 (00:45 -0500)] 
tests: fix test that has source code incompatible with modern C

Delayed until clang 16, -Werror=incompatible-function-pointer-types is
the default. GCC 14 is "likely to do the same".


5 weeks agodocs: update IDE-integrations [skip-ci]
Stephan Lachnit [Tue, 27 Dec 2022 13:29:18 +0000 (14:29 +0100)] 
docs: update IDE-integrations [skip-ci]

- change asabil.meson to vscode-meson
- remove unmaintained Meson-UI and Meson Cmake Wrapper
- remove note that Ecplise CDT support is experimental

5 weeks agodocs: add mmeson to IDE integrations [skip-ci]
Stephan Lachnit [Tue, 27 Dec 2022 13:27:25 +0000 (14:27 +0100)] 
docs: add mmeson to IDE integrations [skip-ci]

5 weeks agoemscripten: remove no longer relevant comment
Kleis Auke Wolthuizen [Sun, 25 Dec 2022 16:02:21 +0000 (17:02 +0100)] 
emscripten: remove no longer relevant comment

This was fixed in Emscripten 1.39.16, see:

5 weeks agoemscripten: enforce version 1.39.19 or higher
Kleis Auke Wolthuizen [Sun, 25 Dec 2022 16:01:26 +0000 (17:01 +0100)] 
emscripten: enforce version 1.39.19 or higher

5 weeks agoemscripten: remove redundant `thread_flags` implementation
Kleis Auke Wolthuizen [Sun, 30 Oct 2022 10:56:55 +0000 (11:56 +0100)] 
emscripten: remove redundant `thread_flags` implementation

Since it's the same as the one in `CLikeCompiler`.

5 weeks agoemscripten: use single arguments when specifying options
Kleis Auke Wolthuizen [Sun, 30 Oct 2022 10:43:33 +0000 (11:43 +0100)] 
emscripten: use single arguments when specifying options

i.e. without a space between the "-s" and option name. See:

This is supported since Emscripten 1.39.19, see:

5 weeks agoemscripten: prefer `-pthread` over `-s USE_PTHREADS=1`
Kleis Auke Wolthuizen [Sat, 31 Oct 2020 12:40:00 +0000 (13:40 +0100)] 
emscripten: prefer `-pthread` over `-s USE_PTHREADS=1`


This is supported since Emscripten 1.38.33, see:

5 weeks agodependencies: better logging of pkg-config call outputs
Eli Schwartz [Sun, 25 Dec 2022 21:42:00 +0000 (16:42 -0500)] 
dependencies: better logging of pkg-config call outputs

If `pkg-config --modversion foobar` fails, we don't know why. The
general issue here, though, is that call_pkgbin routinely logs stdout
for informational purposes, but not stderr.

Fixes #11076

5 weeks agointerpreter: use static_lib's already calculated pic value
Dylan Baker [Thu, 8 Dec 2022 18:22:35 +0000 (10:22 -0800)] 
interpreter: use static_lib's already calculated pic value

Instead of re-calculating it when building both libraries

5 weeks agoBump version number for new development.
Jussi Pakkanen [Fri, 23 Dec 2022 17:32:00 +0000 (19:32 +0200)] 
Bump version number for new development.

5 weeks agoThis is it. The 1.0.0. 1.0.0
Jussi Pakkanen [Fri, 23 Dec 2022 16:11:11 +0000 (18:11 +0200)] 
This is it. The 1.0.0.

5 weeks agoCreated release note page for 1.0.0.
Jussi Pakkanen [Fri, 23 Dec 2022 16:13:14 +0000 (18:13 +0200)] 
Created release note page for 1.0.0.