aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-06-27interpreter: use os.listdir instead of os.scandir to avoid ResourceWarningNathan Goldbaum1-1/+2
2023-06-27Added a little more useful info to 'link_whole' documentation, describing ↵Dan Hawson1-2/+4
the use of /LINKWHOLE with MSVC and the behaviour of re-exporting symbols of individual objects in a static library.
2023-06-26mintro: record subproject in install_planDaniele Nicolodi6-0/+56
2023-06-26Revert "modules: move gnome targets into gnome module"Eli Schwartz5-26/+23
This reverts commit a2def550c586aeba4269588e79a1a308467f2582. This results in a 2k line file being unconditionally imported at startup, and transitively loading two more (for a total cost of 2759 lines of code), and it's not clear it was ever needed to begin with...
2023-06-26linkers: delay implementations import until detect is runEli Schwartz26-222/+117
This saves on a 1500-line import at startup and may be skipped entirely if no compiled languages are used. In exchange, we move the implementation to a new file that is imported instead. Followup to commit ab20eb5bbc21ae855bcd211131132d2778602bcf.
2023-06-26fix regression in handling output overwriting for ar-like linkersEli Schwartz2-2/+4
Linkers that aren't actually ar, were refactored into a base class in commit 253ff71e6b801786290b6ecb23aea61dcfeebeca, which however didn't take into account that we were doing checks for this.
2023-06-26WIP: cmake: do not re-export unused top-level objectsEli Schwartz1-12/+3
We should try to figure out what is a cross-submodule object and what isn't.
2023-06-26stop importing cmake when it isn't usedEli Schwartz3-19/+4
We don't need a CMakeInterpreter until and unless we actually attempt to use a cmake subproject via the cmake module. Minus 10 files and 3679 lines of code imported at startup.
2023-06-26dependencies: switch the delayed-import mechanism for custom dependenciesEli Schwartz14-69/+114
Simply store the module it is expected to be found in. That module then appends to the packages dict, which guarantees mypy can verify that it's got the right type -- there is no casting needed.
2023-06-26dependencies: defer importing a custom dependency until it is usedEli Schwartz12-111/+83
This lessens the amount of code imported at Meson startup by mapping each dependency to a dictionary entry and using a programmable import to dynamically return it. Minus 16 files and 6399 lines of code imported at startup.
2023-06-26dependencies: delay often-unused importsEli Schwartz3-7/+6
We expose detect.py as the mesonbuild.dependencies entrypoint and import it upfront everywhere. But unless the `dependency()` function is actually invoked, we don't need *any* of the private implementations for this. Avoid doing so until, as part of actual dependency lookup, we attempt that specific dependency method. This avoids importing big modules if `method:` is specified, and in most cases hopefully pkg-config works and we can avoid importing the cmake implementation particularly. Actually avoiding most of these imports requires more refactoring. But even so, the garden path no longer needs to import the dub dependency impl.
2023-06-26dependencies: Don't Repeat Yourself when it comes to lookup methodsEli Schwartz1-24/+17
We need to extend the candidates the same way per method, but we handle each method twice: once in explicit method checks, and once for auto. We can just handle auto as a special list of methods, though.
2023-06-26dependencies: move dub to a hidden package internal detailEli Schwartz2-6/+5
Do not import it and expose it at the package scope, it's never used elsewhere except inside the dub module.
2023-06-26tree-wide: reduce unneeded imports on specific Dependency implsEli Schwartz4-13/+12
We can check something's subtype using properties, without importing the module up front and doing isinstance checks on specific subclasses of the interface -- or worse, solving cyclic imports by doing the import inside the function. ;)
2023-06-26pkgconfig: move uninstalled devenv handling from setup to the module hookEli Schwartz2-5/+10
msetup.py doesn't need to know the gory details of PkgConfigDependency, or directly import it at program startup. It's also slightly wasteful to generate a devenv for the -uninstalled directory when a project doesn't even, in the end, use the pkgconfig module anyway.
2023-06-26add profiling startup import check and testcase to count itEli Schwartz4-15/+318
2023-06-25tests: move script loaded modules test to platform-agnosticEli Schwartz2-30/+31
We have the same platform startup logic here for all platforms and I do not believe it's important to test this on the slow CI machines.
2023-06-25msetup: place profiling logs in the log directoryEli Schwartz1-3/+3
2023-06-25fully type mconf.pyEli Schwartz3-31/+39
2023-06-25fully type mdist.pyEli Schwartz2-21/+30
2023-06-25mdist: consolidate facts about the current dist using a dataclassEli Schwartz1-51/+67
And avoid passing variables around several functions just to finally get where they need to be. These function signatures were kind of ugly... Also the use of dataclasses makes a big chunk of this file now typed properly.
2023-06-25mdist: refactor lots of code into VCS-specific classesEli Schwartz1-153/+161
Most of the dist handling is either git-specific or hg-specific. Tangling it all together makes it much harder to analyze what is going on.
2023-06-25Add CppNorth talk.Jussi Pakkanen1-1/+5
2023-06-23coredata: Also clear compiler and run cachesXavier Claessens2-2/+4
2023-06-23mconf: Allow changing options and clearing cache at the same timeXavier Claessens1-5/+6
Setting options or clearing cache is also an error without a valid build directory.
2023-06-23coredata: Malformed machine file is not a Meson bugXavier Claessens1-1/+4
Fixes: #11899
2023-06-21rust: fix -C prefer-dynamic behaviorAlyssa Ross3-10/+20
I noticed when building a project that uses a proc macro that Meson passed -C prefer-dynamic for the executable, and not the proc macro, while cargo passed -C prefer-dynamic for the proc macro, but not for the executable. Meson's behavior broke setting -C panic=abort on the executable. As far as we can tell, because we explicitly pass each library path to rustc, the only thing -C prefer-dynamic affects in Meson is how the standard libraries are linked. Generally, one does not want the standard libraries to be dynamically linked, because if the Rust compiler is ever updated, anything linked against the old standard libraries will likely break, due to the lack of a stable Rust ABI. Therefore, I've reorganised Meson's behavior around the principle that the standard libraries should only be dynamically linked when Rust dynamic linking has already been opted into in some other way. The details of how this manifests are now explained in the documentation.
2023-06-21Clarify `environment` docs.Paolo Borelli1-3/+2
The object is not used only for tests, but also for `custom_target` etc.
2023-06-20doc: Dictionaries are ordered since Meson 0.62.0Xavier Claessens1-1/+2
This is a side effect of requiring Python >= 3.7 which itself guarantees dictionary order. This is now a Meson language guarantee as well which is required for passing default_options as dict and is generally expected by users.
2023-06-20interpreter: Accept more types in default_options dict valuesXavier Claessens9-16/+46
2023-06-20interpreter: allow default_options and override_options as a dictDylan Baker10-46/+66
2023-06-20backends/vs: add sundry type annotationsEli Schwartz1-25/+28
We went from 192 mypy errors down to 144.
2023-06-20backends/xcode: simplify an obviously too-complicated functionEli Schwartz1-6/+3
This function has a pretty unique name, and a simple grep shows that it is only ever called as: ``` add_comment(PbxComment('...........')) ``` It doesn't need to include logic such as handling str. Moreover it looks like that handling was broken anyway... it handled the case where comment is type str, by constructing a new PbxComment(str) instead of PbxComment(comment), a condition that cannot ever be valid (and crashed due to other assertions). Fixes: mesonbuild/backend/xcodebackend.py:148:42: error: Argument 1 to "PbxComment" has incompatible type "type[str]"; expected "str" [arg-type]
2023-06-20delete dead code that has never been referencedEli Schwartz1-5/+0
2023-06-20backends/xcode: various sundry low-effort typing fixesEli Schwartz1-36/+36
I slapped the obvious type annotations onto a bunch of places, and got the errors down from 668 to 112.
2023-06-20backends/ninja: add sundry typing improvementsEli Schwartz1-18/+20
2023-06-20use truncating division for code that explicitly needs an intEli Schwartz1-1/+1
We are going to truncate it down below with int() anyway, no need to carry extra precision. And mypy complains if the type changes between float and int.
2023-06-20ninja backend: simplify code by using dataclassesEli Schwartz1-2/+2
2023-06-20add str.splitlines methodMartin Dørum4-0/+44
The new splitlines method on str is intended to replace usage of fs.read('whatever').strip().split('\n'). The problem with the .strip().split() approach is that it doesn't have a way to represent empty lists (an empty string becomes a list with one empty string, not an empty list), and it doesn't handle Windows-style line endings.
2023-06-19compilers: don't recommend deprecated env varAlyssa Ross1-1/+1
RUST_LD was deprecated in Meson 0.54 in favor of RUSTC_LD.
2023-06-19Add kernel and subsystem properties to machine objects.Jussi Pakkanen9-8/+127
2023-06-19Alphabetize methods in MesonMain.Jussi Pakkanen1-21/+21
2023-06-16unittests: fix test_scripts_loaded_modules matching exactly our own modulesCharles Brunet1-1/+1
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.
2023-06-16unittests: skip test using symlink if not availableCharles Brunet1-1/+4
2023-06-16unittests: ensure terminal has 80 chars widthCharles Brunet1-0/+1
2023-06-15windows: Fix windres detection for Microsoft shipped ClangL. E. Segovia1-1/+2
Clang, clang-cl, and MSVC all rely on RC.EXE to build resource files. Fixes #11845
2023-06-15Interpreter: Using executable in run_command/configure_file is not aXavier Claessens1-1/+1
bug Fixes: #11382
2023-06-14remove unnecessary typing commentsEli Schwartz1-2/+2
Although they could be moved to annotations, the truth is that they are unneeded because they get inherited from the parent class.
2023-06-14convert some FeatureDeprecated for totally broken stuff, to FeatureBrokenEli Schwartz1-6/+6
We now warn everyone equally that totally ignored sources are bad and should not be used.
2023-06-14detect and warn on non-commutative int/bool operationsEli Schwartz1-7/+9
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.