| Age | Commit message (Collapse) | Author |
|
Do not call update() and Enum.__hash__ a gazillion times; operators
are the same for every instance of the class. In order to access
the class for non-trivial operators, the operators are first marked
using a decorator, and then OPERATORS is built via __init_subclass__.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
Do not call update() and Enum.__hash__ a gazillion times; trivial
operators are the same for every instance of the class.
Introduce the infrastructure to build the MRO-resolved operators (so
the outcome same as if one called super().__init__) for each subclass
of InterpreterObject.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
In preparation for moving them to the class, make the operator functions
binary. Adjust the lambdas for trivial operators, and store unbound
methods for non-trivial ones.
Note that this requires adding operators manually for every override,
even subclasses. It's decidedly ugly at this temporary stage; later
it will result in just an extra @InterpreterObject.operator decorator
on the subclasses.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
|
Allows to browse the documentation offline.
|
|
Without this commit, the rewriter and the static introspection tool
crash if `meson.build` contains something like
```meson
if false
foo = not_defined
endif
```
or
```meson
if false
message(not_defined)
endif
```
While it could be argued, that you should not write stuff like this,
this used to raise a `MesonBugException`, which we have to fix.
Fixes #14667
|
|
gdbus-docgen supports reStructuredText output since 2.71.1 and markdown
since 2.75.2, allow to simply generate it.
|
|
it uses the existing 14 configure file test case to configure
config 7 and 10 with cmake and meson and then compares the
relevant output to see if they are equal
|
|
cmake does preprocessing in a linear pass through the entire file
this allows recursive variable lookups which cannot be supported
by a basic regex implementation.
|
|
in cmake variables are pure strings with no minimal required length so
an empty string is a valid key and ${} needs to be handled accordingly.
|
|
just as with C defines cmakedefine supports a variable amount of
whitespace between the # symbol and the actual token.
|
|
|
|
|
|
Which doesn't give helpful error messages unless used with pytest
|
|
This is required to make sure that the generated .gir file actually contains all
the information to be used dynamically.
Valac supports this argument since 0.29.3 released in 2015.
|
|
Actually take an override into account, ie:
```meson
library(
...
override_options : {'b_lto' : false},
)
```
|
|
|
|
The weird format is to minimize the diff in the next fixup patch.
|
|
This wraps all of the compiler detections in this test case in
try/except blocks. These blocks will return a skipTest for Python >=
3.11 (where subTest and skipTest interact correctly), and continue if
they do not. For Meson CI runs they will fail the specific subtest,
which is also an improvement as it can help pinpoint exactly which
subtest failed.
Fixes: #14579
|
|
Add a few asserts for functions that could in theory return None, but if
they do something has gone *really* wrong with the test.
|
|
Which is a very large and complicated test function
|
|
Compilers are not ready at the time the backend is created. Do
not look at them until generate() runs.
Fixes: 4e9fac15d ("interpreter: add backend options before validating the command line options", 2025-05-16)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
Compilers are not ready at the time the backend is created. Do
not look at them until generate() runs.
Fixes: 4e9fac15d ("interpreter: add backend options before validating the command line options", 2025-05-16)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
Update reference table for eld
Mention eld support in release notes
Signed-off-by: Kushal Pal <kushpal@qti.qualcomm.com>
|
|
Signed-off-by: Kushal Pal <kushpal@qti.qualcomm.com>
|
|
ELD is Qualcomm's open-source embedded linker.
https://github.com/qualcomm/eld
Signed-off-by: Kushal Pal <kushpal@qti.qualcomm.com>
|
|
When git is used with worktrees, `.git` will be a file containing a link
to the original repo. Currently, we say that this is not git because
`.git` isn't a directory.
|
|
executables
|
|
script without interpreter
This is an indirect regression of e8c715786d85dcdbc367f3e379acae25a899c235; the code never accounted for ExternalPrograms that needed a harness.
|
|
These were supported for shared libraries, but for static libraries
the link_with property was never populated with `LINK_LIBRARIES` or
`INTERFACE_LINK_LIBRARIES`.
Fixes #13101
|
|
To avoid raceconditions, where one instance of meson currently downloads
a subproject defined in a wrapfile, while another either
a. starts the download itself too
b. attemts to evaluate the partially downloaded subproject
wraplock introduces a lockfile, which should prevent simultaneous access
of subprojects by wrap between different instances of meson.
|
|
DirectoryLock provides a generic locking implementation the replaces the
previously used BuildDirLock.
|
|
|
|
|
|
We'll need to evaluate those expressions before generating the AST.
Instead take a config key-value dictionary and evaluate the expression
to return a boolean.
|
|
Add cfg token to be able to parse the top level cfg() function.
Fix parser which was creating a new iterator when recursing which caused
the caller function's iterator to not have advanced when recursing
function returns.
|
|
|
|
The code that adds `--gresourcesdir=` arguments to valac based on the
source directories of GResource dependencies was incorrect. It added
the current target directory to the source path, but the GResource
source directories are already relative to the build directory.
|
|
This fixes compilation of glib-macros-0.20.4:
error[E0405]: cannot find trait `TryFrom` in this scope
--> ../subprojects/glib-macros-0.20.4/src/clone.rs:22:10
|
22 | impl<'a> TryFrom<&'a Ident> for CaptureKind {
| ^^^^^^^ not found in this scope
|
= note: 'std::convert::TryFrom' is included in the prelude starting in Edition 2021
help: consider importing this trait
|
3 + use std::convert::TryFrom;
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
|
|
|
Without this commit, the static introspection tool crashes when
introspecting systemd since certain values are `UnknownValue`
which was unexpected.
(I tested sytemd's commit hash fefcb935cd.)
|
|
Change the semantics of IntrospectionBuildTarget.source_nodes
and IntrospectionBuildTarget.extra_files .
The rewriter and the static introspection tool used to be very broken,
now it is *less* broken, hence we add some tests in this commit.
Fixes #11763
|
|
De-duplicate some code by extracting the common code into the new
`rm_src_or_extra` function.
|
|
|
|
|
|
`AstInterpreter.node_to_runtime_value` can now resolve function calls.
|
|
`resolve_node` is simply a half-broken, worse implementation of
`node_to_runtime_value` that we recently introduced.
In the example below, the static introspection tool/rewriter now
understands that the name of the executable is foo instead of bar:
```
var = 'foo'
name = var
var = 'bar'
executable(name, 'foo.c')
```
|
|
Without this commit, something like this crashes the static
introspection/rewrite tool:
```
default_options : ['warning_level='
+ run_command(['echo', '3']).stdout().strip()],
```
This commit does not reintroduce #14382.
|
|
Make the AstInterpreter create a directed acyclic graph (called
`dataflow_dag`) that stores the how the data flowes from one node in
the AST to another.
Add `AstInterpreter.node_to_runtime_value` which uses `dataflow_dag`
to find what value a variable at runtime will have.
We don't use dataflow_dag or node_to_runtime_value anywhere yet, but
it will prove useful in future commits.
|