aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-12-21LGTM is discontinued. Remove badge and configMichael Hirsch2-6/+0
2022-12-21doc: Add missing include_directories kwarg to compiler.preprocess()Xavier Claessens1-0/+2
Fixes: #11202
2022-12-19Users.md: Add PostgreSQLAmit D1-0/+1
2022-12-17Bump version number for rc2.1.0.0rc2Jussi Pakkanen1-1/+1
2022-12-17mtest: handle TAP tests with unknown version.Eli Schwartz1-1/+4
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-16Merge pull request #11174 from bgilbert/jar-manifestJussi Pakkanen5-2/+63
depfixer: silence `fix_jar()` and make it do something
2022-12-16Merge pull request #11181 from tristan957/backendsJussi Pakkanen3-16/+36
JNISystemDependency fixes
2022-12-15Enable Java project tests on DarwimTristan Partin1-1/+1
2022-12-15Change double quote doc comment to sinqle quoteTristan Partin1-2/+2
2022-12-15Try to find the jni dependency when javac is a Darwin stubTristan Partin2-11/+31
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-15delay importing ctypes unless it is actually usedEli Schwartz1-1/+1
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-14Deduplicate code in JNISystemDependency conditionalTristan Partin1-2/+2
2022-12-14docs: clarify the semantics of the required: kwarg everywhereEli Schwartz3-8/+23
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-14docs: simplify the documentation on required kwarg for subprojectEli Schwartz1-4/+1
It's a clone of dependency() anyway.
2022-12-14docs: update description of supported functions for feature optionsEli Schwartz1-3/+7
We support these for a couple more things now.
2022-12-14depfixer: silence fix_jar() and make it do somethingBenjamin Gilbert5-1/+62
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-13depfixer: don't extract MANIFEST.MF verboselyBenjamin Gilbert1-1/+1
Avoids non-actionable output when installing a jar: inflated: META-INF/MANIFEST.MF Fixes: c70a051e93 ("java: remove manifest classpath from installed jar")
2022-12-13Revert "openbsd: execinfo is not a compiler lib"Brad Smith1-6/+2
OpenBSD now has execinfo as compiler lib. DragonFly has all along. This reverts commit 0241948d8fa37f59eb93088a26e9b7ae642cc2d0.
2022-12-12Fixing typosAndreas Deininger5-5/+5
Convert http to https in some links
2022-12-12mlog: set LV environment variable for pager.Phil Jones1-0/+3
2022-12-12mlog: set LESS environment variable for pager.Phil Jones1-5/+11
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-11fix broken fs.copyfile function that crashed if you tried to use itEli Schwartz5-8/+11
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-11typing: fix some broken Sequence annotationsEli Schwartz5-6/+6
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-11simplify install_tag handling according to the accepted APIEli Schwartz2-5/+5
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 11f96380351a88059ec55f1070fdebc1b1033117) - 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 157d43883515507f42618b065a64fb26501734a0) - stopped stringlistify, just accept T.List[str | None] and re-cast to list, violates typing because we use/handle plain None too (commit a8521fef70ef76fb742d80aceb2e9ed634bd6a70) - break typing by declaring we accept a simple string, which still results in mishandling by converting 'foo' -> ['f', 'o', 'o'] (commit ac576530c43734495815f22456596772a8f6a8cc) 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-12Merge pull request #11071 from tristan957/java-moduleJussi Pakkanen4-47/+70
Java module 1.0.0 updates
2022-12-11DOCS: Rust-module: Remove note about unstable APIEwout ter Hoeven1-2/+0
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-11Fix package kwarg typeTristan Partin1-2/+3
2022-12-11Rename java.generate_native_headers to java.native_headersTristan Partin4-1/+67
This follows the Meson naming scheme which typically leaves off a verb like generate.
2022-12-11Remove java.generate_native_headerTristan Partin2-45/+1
This API existed for 2 minor releases and was worthless for pretty much every usecase.
2022-12-11CI: skip libgcrypt test on msys2Eli Schwartz1-1/+1
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-11debug cygwin CIEli Schwartz1-0/+1
2022-12-11CUDA: Update compute-capability limits logic for CUDA 12.Olexa Bilaniuk1-0/+8
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-11CUDA: Add listing for newly-released CUDA 12 in minimum driver version table.Olexa Bilaniuk1-0/+1
2022-12-11Merge pull request #11024 from dcbaker/submit/bindgen-dependenciesJussi Pakkanen9-17/+112
Add a `dependencies` keyword argument to bindgen
2022-12-10Bump version numbers for rc1.1.0.0rc1Jussi Pakkanen2-2/+2
2022-12-09doc: Add date in release notesXavier Claessens1-0/+5
2022-12-09Merge pull request #10990 from xclaesse/devenvJussi Pakkanen8-63/+84
devenv: various improvements
2022-12-09python module: don't overwrite and destroy the .pc dependency nameEli Schwartz1-1/+0
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 4d67dd19e5b7dcec6716840d30984fa41eef55c6 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-07utils: Fix pylint warning using-constant-testL. E. Segovia1-1/+1
2022-12-07wrap: Don't use --branch with shallow clones against HEADL. E. Segovia2-4/+21
Fixes #10931
2022-12-07devenv: Document recent changesXavier Claessens2-0/+17
2022-12-07devenv: Set QEMU_LD_PREFIX to sys_rootXavier Claessens1-1/+6
When the cross file has a sys_root, it is most probably needed to run executables with qemu.
2022-12-07Remove useless EmptyExternalProgramXavier Claessens4-31/+6
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-07devenv: Always include env for HOST machineXavier Claessens2-3/+9
Cross compiled executables could still be run with an exe wrapper, or with proper binfmt installed. Fixes: #10999
2022-12-07devenv: Add executables locations to both PATH and WINEPATHXavier Claessens1-7/+12
Handles the case when wine-binfmt is installed, which makes .exe files executable without without specifying an exe wrapper.
2022-12-07devenv: Do not include system values in --dumpXavier Claessens2-13/+14
This makes --dump print variables like `FOO=/path:$FOO:/another/path`.
2022-12-06test: Add get_define test with prefix arrayMarvin Scholz1-0/+7
2022-12-06interpreter: compiler: Allow array for the prefix kwargMarvin Scholz3-6/+32
2022-12-06docs: Add missing import to the windows module example.Angelo Haller1-0/+1
2022-12-06devenv: Add more info how to get gdb scripts workingXavier Claessens1-3/+12
Now that top builddir is not the default workdir any more, the .gdbinit file we write there won't be loaded automatically unless user cd there, or use --init-command. There is also a global setting that user has to set to allow automatically loading .gdbinit file.