Age | Commit message (Collapse) | Author | Files | Lines |
|
When meson is installed as editable, setuptools adds
`__editable___meson_1_0_99_finder` to the list. This contains the string
"meson" which isn't really accurate to what we want, which is modules
that are part of the `mesonbuild.*` namespace.
|
|
|
|
|
|
Clang, clang-cl, and MSVC all rely on RC.EXE to build resource files.
Fixes #11845
|
|
bug
Fixes: #11382
|
|
Although they could be moved to annotations, the truth is that they are
unneeded because they get inherited from the parent class.
|
|
We now warn everyone equally that totally ignored sources are bad and
should not be used.
|
|
an int only accepts operations on other ints, just like other primitive
types only accept operations on values of the same type.
But due to using isinstance in baseobjects "operator_call", an int
primitive allowed operations on a bool, even though reversing the
operator and having a bool perform operations on an int, would fail with
a type error.
Really, we should fail with a type error in both directions. But for
stability reasons, make this a loud warning and break --fatal-meson-warnings
builds.
|
|
This is useful for totally terrible stuff that we really dislike, but
for some reason we are afraid to just use `mlog.deprecation()` and
unconditionally tell people so.
Apparently this is because it is totally absolutely vital that, when
telling people something is so broken they should never ever ever use it
no matter what, ever... we can't actually tell them that unless they
bump the minimum version of Meson, because that's our standard way of
introducing a **version number** to tell them when we first started
warning about this.
Sigh. We really want to warn people if they are doing totally broken
stuff no matter what version of Meson they support, because it's not
like fixing the thing that never worked is going to suddenly break old
versions of meson.
So. Here's some new functionality that always warns you, but also tells
you when we started warning.
|
|
The version output scraping for identifying strings checked for "IFORT"
in parentheses after the executable name, which is probably a mistake by
Intel. Current versions of ifx have "IFX" in parentheses there.
Detect both.
Fixes #11873
|
|
|
|
|
|
|
|
When a project targets a dev version of Meson (e.g. 1.1.99) for
experimenting, this allows to use:
project(..., meson_version: '>=1.2.0')
It avoids getting warnings when using FeatureNew for features introduced
in 1.2.0.
|
|
|
|
|
|
|
|
Specifically, when those files can be created by a build rule with one
version of meson.build, and created as e.g. a shared_library alias
symlink in another version of meson.build, the cleandead command will
delete important files just because they don't happen to be created by
ninja itself.
Work around this by making a dummy rule that exists solely to insert the
files into the build graph to trick ninja into not deleting them.
Closes #11861
|
|
|
|
Fixes an issue with rust.bindgen if a cmake LLVM dependency with the
system include_type is getting used as a dependency.
|
|
This converts a Cargo TOML file into Meson AST
Co-Authored-By: Thibault Saunier <tsaunier@igalia.com>
|
|
This uses a recursive descent parser + lexer to create an IR from cfg()
expressions, which it then converts into meson IR.
|
|
|
|
This is a helper, currently only used by cargo. It could be moved later
if there are other users.
|
|
Co-Authored-By: Thibault Saunier <tsaunier@igalia.com>
|
|
Azure pipelines is removing python2 from the hostedtoolcache, see
https://github.com/actions/runner-images/issues/7401
We want to test that meson can still build modules for it, anyway.
|
|
If py2 is not found *and* the compiler is MSVC, we didn't take into
account that py2 is not found. This also meant that we didn't take into
account the expected count when it *is* found, because the python module
has a better finder than just "is the binary on PATH".
|
|
We don't use parentheses for the if function, because it's not a
function.
|
|
This is now fixed upstream and expected to be backported to the next
point release.
|
|
It's a lot more readable to not repeat big arrays.
|
|
In commit 89146e84c9eab649d3847af101d61047cac45765 we added some
complicated code to verify the llvm framework's "combination" matrix
lookup. It expects to find llvm with both cmake and config-tool, with
the same version. But the sanity check is wonky -- it checks that both
have the same found status, instead, so if both are not found then we
proceed to try to convert the string "unknown" to a mapping of semver
integers, and this is guaranteed to fail.
This can happen for example if the system llvm exists in the general
case, but actual modules cannot be found because the system llvm does
not distribute static modules. For example, this is the case on Gentoo.
Abort more obviously by just insisting that both be found. If they
aren't both found, then investigative efforts know to look at why they
weren't found.
|
|
When retrieving variables from the tool, log some debug output the same
way that pkg-config does.
|
|
include directory
e.g. QtQml with Qt 6.4.0 referencing QtQmlIntegration is one such example
|
|
rustc enables PIC by default and Meson currently has no way to force
disabling PIC, it can only force enable or use compiler's default.
|
|
This override transparently upgrades anyone using it to this better
functionality.
Fixes #8511
|
|
vc++20 support was added in 012ec7d5b3379b035f1dd1369d74cafd26ff6ab0
|
|
Fixes: #8651
|
|
py.find_installation().dependency() was not logging whether it is found
or not. Use find_external_dependency() for consistency.
|
|
This fallbacks to short commit id in case the git repository does
not contain any annotated tag, for example before the first release of a
project.
|
|
- Include BaseNode position in hash methods, integer is the most
straightforward way of differentiating nodes.
- Exclude non hashable fields from hash method.
- Avoid using default values in BaseNode that way subclasses can have
fields wihtout default value without repeating init=False.
- Nodes that does not add fields does not need `@dataclass`.
- Make all node types hashable because they can be used for feature_key
in FeatureCheckBase.use().
- Remove unused type annotations
|
|
This makes use of dataclasses, but without a dataclass generated
initializer. This means that we get nice `__repr__` and `__eq__` methods
without having to type them by hand.
Pylance understands `dataclass(init=False)`, but mypy doesn't.
https://github.com/microsoft/pyright/issues/1753
https://github.com/python/mypy/issues/10309
|
|
Where it belongs. Otherwise it isn't rendered correctly
|
|
Replace a long comment explaining that we need StringProtocol, with
StringProtocol
|
|
This is a pretty common pattern in python (the standard library uses it
a ton): A class is created, with a single private instance in the
module, and then it's methods are exposed as public API. This removes
the need for the global statement, and is generally a little easier to
reason about thanks to encapsulation.
|
|
This comment is out of date, we have StringProtocol which is exactly
what we wanted, and it's part of TV_Loggable already
|
|
This was never meant to be public API, log(once=True) is for that.
|
|
|
|
We actually do not and should not care about wrap-mode at all for this.
We want to cache dependency lookups whenever humanly possible, but only
use them in cases where we would anyways be using them -- which in
particular means if we said to force a subproject fallback for this dep,
we want to bypass the cache.
Currently, we handle this by always looking up the cache for all
dependencies, but clearing the cache at startup if a reconfigure means
we are changing our resolution strategy. This is bad -- we might have
many dependencies that are worth caching, and only one dependency that
should stop being cached and use a subproject instead.
The simple solution is to handle the forcefallback case when doing a
cache lookup, and not do a cache lookup at all. Now we don't have to
nuke the entire cache. In fact, if a future reconfigure changes the
forcefallback state back to not being forced, we can reuse the original
cached dependency, which is still there.
Closes #11828
|
|
ninja's configured command for regenerating a build directory on any
action that *requires* reconfiguring, specifies the source and build
directories as they were known during initial project generation. This
means that if the build directory is no longer the *same* build
directory, we will regenerate... the original location, rather than the
location we want.
After that, ninja notices that build.ninja is still out of date, so it
goes and reconfigures again. And again. And again.
This is probably broken intentions, but endless reconfigure loops are a
kind of evil beyond all evils. There are no valid options here
whatsoever other than:
- doing what the user actually meant
- spawning a clear error message describing why meson refuses to work,
then exiting with a fatal error
But it turns out that it's actually pretty easy to do what the user
actually meant, and reconfigure the current build directory instead of
the original one. This permanently breaks the link between the two.
Fixes #6131
|
|
Fedora's java package no longer supports 7.
|