Commit Graph

13239 Commits

Author SHA1 Message Date
Paolo Bonzini b38bf09b94 add more testcases for prebuilt objects
Cover more cases including passing objects via ExtractedObjects and
CustomTarget.
2022-12-21 13:36:18 -08:00
Paolo Bonzini 9e1baebb23 fix build_target(objects: ...) documentation
The documentation for build_target(...) does not list file or str as
the possible types for the "objects" keyword argument, even though in
theory the argument is meant for prebuild object files that are part
of the sources.

Of course that is only the theory, because an ExtractedObjects object
is probably used a lot more than a file in the source tree.  But
at least make the reference manual's typing information accurate.
2022-12-21 13:36:18 -08:00
Michael Hirsch 99713ae257
meta: add python 3.11 classifer 2022-12-21 15:04:18 -05:00
Michael Hirsch 08b9829256
LGTM is discontinued. Remove badge and config 2022-12-21 15:04:18 -05:00
Xavier Claessens a0b37a77ab doc: Add missing include_directories kwarg to compiler.preprocess()
Fixes: #11202
2022-12-21 08:31:30 -05:00
Amit D 2e54f772d3 Users.md: Add PostgreSQL 2022-12-19 12:28:37 -05:00
Jussi Pakkanen 9c1b6a95b0 Bump version number for rc2. 2022-12-17 00:27:25 +02:00
Eli Schwartz b7a5c384a1 mtest: handle TAP tests with unknown version.
TAP 14 states:
> Harnesses may treat any TAP stream lacking a version as a failed test.

TAP 13 states:
> In the absence of any version line version 12 is assumed. It is an
> error to explicitly specify any version lower than 13.

So, modern TAP is saying that we should treat a missing version as a
test definition bug, it's no longer okay to use a missing version as
saying "let's use TAP 12". But, we can choose whether to treat it that
way or error out.

Let's do a diagnostic, as we do elsewhere. But allow TAP streams that
aren't well defined, if they used to be well defined (back in TAP 12).
2022-12-17 00:26:38 +02:00
Jussi Pakkanen 27bd499772
Merge pull request #11174 from bgilbert/jar-manifest
depfixer: silence `fix_jar()` and make it do something
2022-12-16 20:51:12 +02:00
Jussi Pakkanen 6c26cb96b8
Merge pull request #11181 from tristan957/backends
JNISystemDependency fixes
2022-12-16 20:30:53 +02:00
Tristan Partin 71cddebf2c
Enable Java project tests on Darwim 2022-12-15 20:36:43 -06:00
Tristan Partin fb6fda3853
Change double quote doc comment to sinqle quote 2022-12-15 20:24:26 -06:00
Tristan Partin 7254db36a7
Try to find the jni dependency when javac is a Darwin stub
Darwin-based systems, at least macOS, provide various JDK executable
stubs in
/System/Library/Frameworks/JavaVM.framework/Versions/*/Commands.
These stubs are placed in such a way that they break the heuristics of
the JNI system dependency. If a javac being analyzed to find a Java home
is a stub, use /usr/libexec/java_home.

See https://stackoverflow.com/a/15133344/7572728 for more details.

Closes #11173
2022-12-15 20:24:25 -06:00
Eli Schwartz 2ef94a71f8
delay importing ctypes unless it is actually used
ctypes uses FFI, and surprisingly often people's Python installations
will be broken because ctypes is broken (e.g. the system libffi has been
updated and Python needs to be recompiled). That is not our fault, but
it does manifest as Meson failing to run. It turns out we aren't even
using it though. At least, pretty often.

We have two uses of ctypes, and both of them are for Windows. One of
them is already conditionally imported in the function that uses it, but
the other is imported at startup. Move this down into the invoking
function.

On non-Windows systems, it is now impossible for Meson to fail to run
when ctypes is broken, because we don't use it. Anecdotally, this issue
tends to come up on Linux systems primarily.

Fixes #11111
Closes #11112
2022-12-15 16:44:35 -05:00
Tristan Partin f287cac862
Deduplicate code in JNISystemDependency conditional 2022-12-14 19:08:19 -06:00
Eli Schwartz 57f91bb593
docs: clarify the semantics of the required: kwarg everywhere
Link to feature options consistently, and point out that it controls
"whether" the function finds what it's trying to find. This clues people
in to the fact that disabled features exist.
2022-12-14 18:59:26 -05:00
Eli Schwartz a910e1b971
docs: simplify the documentation on required kwarg for subproject
It's a clone of dependency() anyway.
2022-12-14 18:59:26 -05:00
Eli Schwartz a1de195d7d
docs: update description of supported functions for feature options
We support these for a couple more things now.
2022-12-14 18:59:26 -05:00
Benjamin Gilbert 35e230e48c depfixer: silence fix_jar() and make it do something
fix_jar() tries to remove an existing Class-Path entry from the jar
manifest by postprocessing the manifest and passing it to `jar -um`.
However, `jar -um` can only add/replace manifest entries, not remove
them, and it also complains loudly when replacing an entry:

    Dec 13, 2022 7:11:19 PM java.util.jar.Attributes read
    WARNING: Duplicate name in Manifest: Manifest-Version.
    Ensure that the manifest does not have duplicate entries, and
    that blank lines separate individual sections in both your
    manifest and in the META-INF/MANIFEST.MF entry in the jar file.

Thus fix_jar() produces one such warning for each entry in the manifest
and accomplishes nothing else.

Use jar -uM instead.  This completely removes the manifest from the jar
and allows adding it back as a normal zip member, fixing fix_jar() and
avoiding the warnings.

Fixes: https://github.com/mesonbuild/meson/issues/10491
Fixes: c70a051e93 ("java: remove manifest classpath from installed jar")
2022-12-14 15:37:59 -05:00
Benjamin Gilbert 51c889ddbc depfixer: don't extract MANIFEST.MF verbosely
Avoids non-actionable output when installing a jar:

    inflated: META-INF/MANIFEST.MF

Fixes: c70a051e93 ("java: remove manifest classpath from installed jar")
2022-12-13 21:41:50 -05:00
Brad Smith dd25b88f00 Revert "openbsd: execinfo is not a compiler lib"
OpenBSD now has execinfo as compiler lib. DragonFly has all along.

This reverts commit 0241948d8f.
2022-12-13 21:00:53 +02:00
Andreas Deininger b249470a4c Fixing typos
Convert http to https in some links
2022-12-12 12:10:37 -05:00
Phil Jones 41ab2ef8af mlog: set LV environment variable for pager. 2022-12-12 08:14:18 -05:00
Phil Jones 8bfc29f91f mlog: set LESS environment variable for pager.
Rather than passing arguments directly to less, set the LESS environment
variable to contain the desired arguments instead. This allows passing
arguments in case the user has PAGER=less set in their environment.
2022-12-12 08:14:18 -05:00
Eli Schwartz 100456de07
fix broken fs.copyfile function that crashed if you tried to use it
At least, if you tried to use it when passing an install_dir. Because
T.Sequence is horrible and we should never use it, and the annotations
are a lie that produces bugs.

So, fix the annotations on CustomTarget to never allow this to happen
again, and also fix the function too. Move some definitions elsewhere
inline to satisfy the linter.

Fixes #11157
2022-12-11 18:28:39 -05:00
Eli Schwartz e5a9272034
typing: fix some broken Sequence annotations
T.Sequence is a questionable concept. The idea is to hammer out generic,
maximally forgiving APIs that operate on protocols, which is a fancy way
of saying "I don't care if you use tuples or lists". This is rarely
needed, actually, and in exchange for this fancy behavior you get free
bugs.

Specifically, `somestr` is of type `T.Sequence[str]`, and also
`somestr[0]` is another string of type you guessed it. It's ~~turtles~~
strings all the way down.

It's worth noting that trying to code for "protocols" is a broken
concept if the contents have semantic meaning, e.g. it operates on
"the install tags of this object" rather than "an iterable that supports
efficient element access".

The other way to use T.Sequence is "I don't like that T.List is
invariant, but also I don't like that T.Tuple makes you specify exact
ordering". This sort of works. In fact it probably does work as long as
you don't allow str in your sequences, which of course everyone allows
anyway.

Use of Sequence has cute side effects, such as actually passing lists
around, knowing that you are going to get a list and knowing that you
need to pass it on as a list, and then having to re-allocate as
`list(mylist)` "because the type annotations says it could be a str or
tuple".

Except it cannot be a str, because if it is then the application is
fatally flawed and logic errors occur to disastrous end user effects,
and the type annotations:
- do not enforce their promises of annotating types
- fail to live up to "minimal runtime penalties" due to all the `list()`

Shun this broken concept, by hardening the type annotations. As it turns
out, we do not actually need any of this covariance or protocol-ism for
a list of strings! The whole attempt was a slow, buggy waste of time.
2022-12-11 18:28:39 -05:00
Eli Schwartz cbf4496434
simplify install_tag handling according to the accepted API
There are two problems here: a typing problem, and an algorithm problem.

We expect it to always be passed to CustomTarget() as a list, but we ran
list() on it, which became horribly mangled if you violated the types
and passed a string instead. This caused weird*er* errors and didn't
even do anything. We want to do all validation in the interpreter,
anyway, and make the build level dumb.

Meanwhile we type it as accepting a T.Sequence, which technically
permits... a string, actually. This isn't intentional; the point of
using T.Sequence is out of a misguided idea that APIs are supposed to be
"technically correct" by allowing "anything that fulfills an interface",
which is a flawed concept because we aren't using interfaces here, and
also because "technically string fulfills the same interface as a list,
if we're talking sequences".

Basically:
- mypy is broken by design, because it typechecks "python", not "what we
  wish python to be"
- we do not actually need to graciously permit passing tuples instead of
  lists

As far as historic implementations of this logic go, we have formerly:
- originally, typeslistified anything
- switched to accepting list from the interpreter, redundantly ran list()
  on the list we got, and mishandling API violations passing a string
  (commit 11f9638035)
- switched to accepting anything, stringlistifying it if it was not
  `None`, mishandling `[None]`, and invoking list(x) on a brand new list
  from stringlistify (commit 157d438835)
- stopped stringlistify, just accept T.List[str | None] and re-cast to
  list, violates typing because we use/handle plain None too
  (commit a8521fef70)
- break typing by declaring we accept a simple string, which still
  results in mishandling by converting 'foo' -> ['f', 'o', 'o']
  (commit ac576530c4)

All of this. ALL of it. Is because we tried to be fancy and say we
accept T.Tuple; the only version of this logic that has ever worked
correctly is the original untyped do-all-validation-in-the-build-phase
typeslistified version.

Let's just call it what it is. We want a list | None, and we handle it too.
2022-12-11 18:28:38 -05:00
Jussi Pakkanen 248c1d9bd5
Merge pull request #11071 from tristan957/java-module
Java module 1.0.0 updates
2022-12-12 01:12:23 +02:00
Ewout ter Hoeven 9c1bf2bf4c DOCS: Rust-module: Remove note about unstable API
Remove the note about the unstable API of the Rust module, since it's no longer unstable as of Meson 1.0.0.
2022-12-11 16:34:00 -05:00
Tristan Partin dfea023ced
Fix package kwarg type 2022-12-11 14:50:26 -06:00
Tristan Partin 2e600ef710
Rename java.generate_native_headers to java.native_headers
This follows the Meson naming scheme which typically leaves off a verb
like generate.
2022-12-11 14:50:26 -06:00
Tristan Partin b746e92f62
Remove java.generate_native_header
This API existed for 2 minor releases and was worthless for pretty much
every usecase.
2022-12-11 14:50:23 -06:00
Eli Schwartz 5bea2ca198 CI: skip libgcrypt test on msys2
This is no longer implicitly installed due to libxslt. Actually though,
we don't need to test this in order to ensure that the custom dependency
works -- we have other jobs that test it, and the config-tool handling
itself won't suddenly fail on msys2 specifically.
2022-12-11 22:43:31 +02:00
Eli Schwartz 79d7891746 debug cygwin CI 2022-12-11 22:43:31 +02:00
Olexa Bilaniuk 255f335d8e CUDA: Update compute-capability limits logic for CUDA 12.
In particular, CUDA 12 removes support for Kepler (3.x) entirely.
Unusually, however, it does not introduce any new architectures,
or even compute capabilities.
2022-12-11 00:11:43 +02:00
Olexa Bilaniuk 36751d5d4c CUDA: Add listing for newly-released CUDA 12 in minimum driver version table. 2022-12-11 00:11:43 +02:00
Jussi Pakkanen dbb33aaf92
Merge pull request #11024 from dcbaker/submit/bindgen-dependencies
Add a `dependencies` keyword argument to bindgen
2022-12-11 00:09:27 +02:00
Jussi Pakkanen c8766468a3 Bump version numbers for rc1. 2022-12-10 18:48:22 +02:00
Xavier Claessens 17c0a7f76a doc: Add date in release notes 2022-12-09 23:38:26 +02:00
Jussi Pakkanen 2ec3fe7a4a
Merge pull request #10990 from xclaesse/devenv
devenv: various improvements
2022-12-09 15:26:06 +02:00
Eli Schwartz 7b2c47eb45 python module: don't overwrite and destroy the .pc dependency name
When finding a py.dependency() we try to use pkg-config. We then apply
our own custom base class, which replaces self.name with the informative
comment "override the name from the "real" dependency lookup", to which
I can only say "uhhh why". Why do we want to do that???

It turns out we don't, it was just a really old legacy design because we
had a SystemDependency with a .pkgdep attribute hiding the real
dependency bizarro-land style. We cleaned that up in commit
4d67dd19e5 and as part of that, we
*shifted over* the self.name assignment to preserve the visible effects,
sort of. We didn't have a *reason* to override the name, we just did it
because... we weren't sure whether it mattered.

Unfortunately it very much does matter the other way -- we don't want
it. We can pass this dependency to the pkgconfig module, which uses the
name attribute to fill out the `Requires: ` field. Also, the name should
name what we have. :p

Get rid of this bizarre historic quirk. Since we have proper
dependencies here, we should go all in.

Fixes https://github.com/ufo-kit/ufo-core/pull/185#issuecomment-1328224996
2022-12-09 14:23:18 +02:00
L. E. Segovia d490636328 utils: Fix pylint warning using-constant-test 2022-12-07 13:29:04 -05:00
L. E. Segovia 35599c5362 wrap: Don't use --branch with shallow clones against HEAD
Fixes #10931
2022-12-07 13:29:04 -05:00
Xavier Claessens 09cbc53f57 devenv: Document recent changes 2022-12-07 11:59:07 -05:00
Xavier Claessens 2dbe976278 devenv: Set QEMU_LD_PREFIX to sys_root
When the cross file has a sys_root, it is most probably needed to run
executables with qemu.
2022-12-07 11:59:06 -05:00
Xavier Claessens 548c9adad4 Remove useless EmptyExternalProgram
It is only used by Environment.get_exe_wrapper() and every callers were
handling None already. Type annotation was wrong, it already could
return None for the case an exe wrapper is needed but none is provided.
2022-12-07 11:58:36 -05:00
Xavier Claessens 302a29593a devenv: Always include env for HOST machine
Cross compiled executables could still be run with an exe wrapper, or
with proper binfmt installed.

Fixes: #10999
2022-12-07 11:58:36 -05:00
Xavier Claessens f73970cc8f devenv: Add executables locations to both PATH and WINEPATH
Handles the case when wine-binfmt is installed, which makes .exe files
executable without without specifying an exe wrapper.
2022-12-07 11:58:36 -05:00
Xavier Claessens b926374205 devenv: Do not include system values in --dump
This makes --dump print variables like `FOO=/path:$FOO:/another/path`.
2022-12-07 11:58:35 -05:00
Marvin Scholz bcd50e71d5 test: Add get_define test with prefix array 2022-12-06 10:59:00 -05:00