summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-10-29modules: Fix state.project_name valueXavier Claessens
It was the name of root project instead of current subproject. This is only used by pkgconfig generator. While at it, simplify the way we get the project version.
2025-10-29compilers/asm: Move arch support check to initializerDylan Baker
It really isn't a sanity check that a specific compiler doesn't work on a specific platform. This re-implements the check as a shared component in the ASMCompiler base class, which has the advantage of code sharing.
2025-10-29compilers/asm: Introduce an ASMCompiler base classDylan Baker
This will be able to hold some shared state between the different ASM compilers (or should that be assemblers?)
2025-10-29test cases/rust: adjust expected installed paths for shared librariesPaolo Bonzini
Make sure that they are checked against the correct extension on Darwin. Fixes: #7964 Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-10-29ci: opensuse: replace libboost_system-develSam James
See https://forums.opensuse.org/t/cant-find-libboost-system-devel-dependency/188865.
2025-10-29tests: don't skip HDF5 for Gentoo anymoreSam James
Stable HDF5 has a fixed .pc file, but we need to enable hdf5[cxx] for H5Cpp.h.
2025-10-29ci: add qtdeclarative to gentooEli Schwartz
2025-10-29ci: gentoo: don't accept unstable python-execEli Schwartz
Currently what this does is permit freethreaded builds, which are stablemasked but not masked, which means we get a binpackage cache miss for something we frankly very much do not care about at all. We can and do unmask implementations themselves later on in this file, which should handle all this for us anyway.
2025-10-29ci: gentoo: use a slimmer base imageEli Schwartz
We've been using the desktop profile until now, mostly because it automatically provides various frameworks we test e.g. wayland, gtk, qt etc that all install out of the box. It also guarantees that binpackages match. The image is also really fat though. :( Switch to the base profile, install a few packages that otherwise wouldn't be installed, and tweak individual USE flags for binary coverage.
2025-10-29ci: gentoo: make vala tests actually runEli Schwartz
Gentoo does a weirdo thing where you cannot detect vala without setting an environment variable. It's usually only set in ebuild recipes, and vala simply does not work on Gentoo at all, period, end of story, outside of that. Capitulate, and parse the output of portage to find the most recent vala installed and export that directly into meson's binary table lookup. We aren't interested in whether *Gentoo* works with Vala, we are interested in finding out whether newly packaged vala versions in Gentoo are compatible with meson. Bug: https://bugs.gentoo.org/513658
2025-10-29ci: gentoo: use stable BoostSam James
By doing some cleanups here, we can now use a binpkg for dev-build/b2 and often dev-libs/boost. Signed-off-by: Sam James <sam@gentoo.org>
2025-10-29ci: gentoo: cleanup old Python commentary/entriesSam James
This dates back to before we changed to Python 3.12 default in Gentoo. I don't remember why we specifically wanted/needed 3.12 in the CI builder though (maybe something to do with distutils removal to test that). The Python changes here shouldn't make much difference to binpkg eligibility right now because the binhost has a double builder for old targets, though it won't cover everything. Signed-off-by: Sam James <sam@gentoo.org>
2025-10-29ci: gentoo: handle llvm pkgmoveSam James
Bug: https://bugs.gentoo.org/910572
2025-10-28cargo: Add library API version into its nameXavier Claessens
It is required to have unique library names for rust_dependency_map to work. In the case we have foo crate in multiple versions, we have to make sure their .rlib file have a different name.
2025-10-28cargo: Dependency variable name must include its APIXavier Claessens
A crate can depend on 2 different API versions of the same crate: foo_1_dep and foo_2_dep. Make sure a Dependency always has a version. When it's defined by a git URL, or a path, the version could be omitted. Update once we fetched the dependency's package.
2025-10-28cargo: Fix version_arr paddingXavier Claessens
2025-10-27rust: drop +SUFFIX from crate namePaolo Bonzini
Allow multiple targets for the same crate name, which is useful when the same crate is used for both the host and the build machine. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-10-27rust: unify conversion from target name to crate namePaolo Bonzini
_get_rust_dependency_name was less lenient in accepting targets containing invalid characters for a crate name. This made it impossible to link to those targets without using a dependency map. Use the same algorithm to do the conversion. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-10-27cargo: edition and lint args are per packageXavier Claessens
edition and lint args were not set the Cargo subproject is a workspace.
2025-10-26wrap: fix deps name access with lower directory nameStéphane Cerveau
2025-10-24CI/gentoo: install reflexDylan Baker
To test the reflex (not RE/flex) path as well.
2025-10-24CI: install byacc instead of bison on ArchDylan Baker
So we can test the byacc path as well as the bison one
2025-10-24modules/codegen: Add support for bison/byacc/yaccDylan Baker
This adds a similar wrapper to the Lex wrapper for yacc/bison/byacc. The interface is equivalent.
2025-10-24modules/codegen: Add wrapper for lex/flex/reflexDylan Baker
This module is a bit of a dumping ground for code generators, particularly ones that are important and non-trivial to wrap, either due to multiple implementations, major command line changes, or complex outputs (such as those that may output a directory structure). The initially provided method is for lex. It provides a simple wrapper that handles win_flex, reflex, flex, and generic lex.
2025-10-24Switch C# test to use gtk-sharp-3Balló György
2025-10-24cmake: Set CMAKE_INSTALL_LIBDIR explicitlyDaniele Nicolodi
CMake and Meson may disagree on the default value of the libdir installation path. This results in shared libraries installed in the default location not assigned to the {libdir_shared} install location by the Meson CMake interpreter. This results in wrong install plan metadata and in those libraries being installed in the wrong location. Fixes #12960.
2025-10-24cmake: Do not pass install prefix explicitly to the CMake interpreterDaniele Nicolodi
There is no point in doing so as it can be readily obtained from the environment. This in preparation of extracting more installation location from the environment.
2025-10-23cargo: fix proc-macro=true without crate_typePaolo Bonzini
The default value is not passed further through the converter, therefore it must take proc-macro into account. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-10-23cargo: Use --env-set when we have nightly rustcXavier Claessens
2025-10-23rust: Add rust_nightly feature optionXavier Claessens
This is used for project to require a nightly Rust compiler, and also for Meson to enable nightly feature if available.
2025-10-23cargo: generate lint arguments from tablePaolo Bonzini
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-10-23cargo: parse lints tablePaolo Bonzini
The lints table in Cargo.toml has a very human-targeted syntax. When building manifest.from_raw, flatten everything into a single list, prefixing the tool name to every warning option and sorting by priority. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-10-23cargo: build default_options as a dictionaryPaolo Bonzini
This makes it possible to pass rust_args as a list. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-10-23cargo: remove duplicate proc_macro fieldPaolo Bonzini
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-10-23cargo: list a few entries that should not warnPaolo Bonzini
2025-10-23mtest: Display test name in format expected by "meson test" argumentXavier Claessens
This makes easier to run a single test after running them all. For example the test "test_accsadubl" in the suite "default" of project "orc" used to be displayed "orc:default / test_accsadubl". To run that test specifically the command line is `meson test -C builddir orc:test_accsadubl --suite default`. To make this more consistent the test is now displayed as "default - orc:test_accsadubl".
2025-10-23mtest: Fix test selection implementationXavier Claessens
Omitting test()'s `suite` kwarg used to default to `test.suite==['']` because of how stringlistify() works. That had inconsistent behavior with `suite: []` which makes `test.suite==[]`. That changed when porting to typed_kwarg (#8855), which made the default `test.suite==[]`. Change `suite: []`, and missing kwarg, back to `test.suite==['']` which was the original intention. It has impact on `meson test --suite` selection, an empty `test.suite` list means that test is never going to be selected when `--suite` is used, even when we want all tests from a given subproject. It was also unclear what `--suite foo` means. Is `foo` a suite or a project name? It can now be either, it selects all tests from project `foo` as well as all tests from any project in suite `foo`.
2025-10-23build: allow building staticlib and rlib togetherPaolo Bonzini
Fixes: #15028
2025-10-23cargo: use both_libraries when appropriatePaolo Bonzini
Fixes: #15028
2025-10-23cargo: convert proc_macro to crate_type in Library dataclass.Paolo Bonzini
Do not look anymore at proc_macro after init, keeping crate_type as the sole source of truth about the desired crate types.
2025-10-22cargo: The default executable is src/main.rsXavier Claessens
https://doc.rust-lang.org/cargo/guide/project-layout.html
2025-10-22cargo: reorder some code to keep from_raw() lastXavier Claessens
2025-10-22cargo: Move all conversions in _raw_to_dataclass()Xavier Claessens
This allows keeping the manifest unmodified which is better practice for a parser. Previously some places had e.g. raw.setdefault(). It also fix some values: - BuildTarget.doc_scrape_examples is removed. It seems to be some experimental cargo feature, but I haven't found documentation that says it should be part of the manifest. It was also missing from raw manifest. - BuildTarget.edition does not default to 2015, it default to package's edition, which itself default to 2015. - bench value defaults to False for tests. - Dependency.path must be relative to its Cargo.toml location. If the value comes from the package it can be used as-is, but if it comes from workspace it must be made relative. - Library.name default to its package name with dash replaced with underscores.
2025-10-20interpreter/dependencyfallbacks: use DependencyObjectKWsDylan Baker
This allows for a lot of type safety to be introduced, and almost all casting to be removed.
2025-10-20interpreter: Fix argument passing for dependencyfallbacks as subprojectDylan Baker
We passed a DoSubproject call without half of the fields we'd agreed to fill out. Which left things running on hopes and dreams.
2025-10-20interpreter: fix more default_options annotationsDylan Baker
2025-10-20dependencyfallbacks: move required/disabled check to interpreterDylan Baker
The lookup code only has two callers. One of them is an internal caller that never sets the `required` key, and the other is the interpreter. Moving this code to the interpreter allows us to simplify the common code, especially the types.
2025-10-20interpreter: Rework extract_required_kwarg to have better typingDylan Baker
This allows us to avoid making `feature` a union, therefore if we write code like: ```python disabled, required, feature = extract_required_kwarg(...) if disabled: ... ``` and now mypy knows that feature is a `str` inside the `if disabled` block
2025-10-20dependencies: Add remaining internal arguments to Dependency classesDylan Baker
These may be better replaced by setting instance attributes, honestly.
2025-10-20dependencies: Add `silent` to known keyword arguments to DependencyDylan Baker