fix various spelling issues

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
pull/11673/head
Josh Soref 2 years ago committed by Eli Schwartz
parent e238b81ba0
commit cf9fd56bc9
  1. 4
      ci/run.ps1
  2. 2
      cross/iphone.txt
  3. 2
      cross/tvos.txt
  4. 2
      docs/markdown/Adding-new-projects-to-wrapdb.md
  5. 4
      docs/markdown/Contributing.md
  6. 4
      docs/markdown/Fs-module.md
  7. 2
      docs/markdown/IDE-integration.md
  8. 2
      docs/markdown/MesonCI.md
  9. 2
      docs/markdown/Qt6-module.md
  10. 4
      docs/markdown/Reference-tables.md
  11. 2
      docs/markdown/Release-notes-for-0.40.0.md
  12. 2
      docs/markdown/Release-notes-for-0.45.0.md
  13. 2
      docs/markdown/Release-notes-for-0.46.0.md
  14. 4
      docs/markdown/Release-notes-for-0.48.0.md
  15. 4
      docs/markdown/Release-notes-for-0.50.0.md
  16. 4
      docs/markdown/Release-notes-for-0.52.0.md
  17. 2
      docs/markdown/Release-notes-for-0.54.0.md
  18. 4
      docs/markdown/Release-notes-for-0.55.0.md
  19. 4
      docs/markdown/Release-notes-for-0.59.0.md
  20. 4
      docs/markdown/Release-notes-for-0.60.0.md
  21. 4
      docs/markdown/Release-notes-for-0.62.0.md
  22. 2
      docs/markdown/Release-notes-for-0.63.0.md
  23. 2
      docs/markdown/Release-notes-for-1.0.0.md
  24. 2
      docs/markdown/Release-procedure.md
  25. 2
      docs/markdown/Rewriter.md
  26. 2
      docs/markdown/Rust-module.md
  27. 2
      docs/markdown/Simple-comparison.md
  28. 2
      docs/markdown/Subprojects.md
  29. 2
      docs/markdown/Syntax.md
  30. 2
      docs/markdown/Users.md
  31. 4
      docs/markdown/Vala.md
  32. 2
      docs/markdown/Windows-module.md
  33. 6
      docs/markdown/Yaml-RefMan.md
  34. 2
      docs/markdown/_include_qt_base.md
  35. 2
      docs/markdown/i18n-module.md
  36. 2
      docs/refman/generatormd.py
  37. 4
      docs/refman/loaderbase.py
  38. 2
      docs/yaml/elementary/str.yml
  39. 4
      docs/yaml/functions/_build_target_base.yaml
  40. 2
      docs/yaml/functions/install_headers.yaml
  41. 2
      docs/yaml/functions/project.yaml
  42. 2
      docs/yaml/objects/build_tgt.yaml
  43. 4
      docs/yaml/objects/compiler.yaml
  44. 2
      docs/yaml/objects/module.yaml
  45. 2
      manual tests/12 wrap mirror/meson.build
  46. 2
      manual tests/3 git wrap/meson.build
  47. 2
      manual tests/4 standalone binaries/readme.txt
  48. 2
      manual tests/6 hg wrap/meson.build
  49. 4
      mesonbuild/arglist.py
  50. 18
      mesonbuild/ast/interpreter.py
  51. 4
      mesonbuild/ast/introspection.py
  52. 26
      mesonbuild/backend/ninjabackend.py
  53. 2
      mesonbuild/backend/vs2010backend.py
  54. 10
      mesonbuild/build.py
  55. 2
      mesonbuild/cmake/common.py
  56. 8
      mesonbuild/cmake/traceparser.py
  57. 6
      mesonbuild/compilers/compilers.py
  58. 8
      mesonbuild/compilers/detect.py
  59. 4
      mesonbuild/compilers/mixins/clike.py
  60. 2
      mesonbuild/compilers/mixins/visualstudio.py
  61. 14
      mesonbuild/coredata.py
  62. 4
      mesonbuild/dependencies/boost.py
  63. 4
      mesonbuild/dependencies/cmake.py
  64. 2
      mesonbuild/dependencies/data/CMakeListsLLVM.txt
  65. 2
      mesonbuild/dependencies/misc.py
  66. 2
      mesonbuild/dependencies/pkgconfig.py
  67. 4
      mesonbuild/dependencies/qt.py
  68. 4
      mesonbuild/envconfig.py
  69. 2
      mesonbuild/environment.py
  70. 6
      mesonbuild/interpreter/compiler.py
  71. 18
      mesonbuild/interpreter/interpreter.py
  72. 2
      mesonbuild/interpreter/kwargs.py
  73. 2
      mesonbuild/interpreter/mesonmain.py
  74. 6
      mesonbuild/interpreter/type_checking.py
  75. 4
      mesonbuild/interpreterbase/decorators.py
  76. 12
      mesonbuild/interpreterbase/interpreterbase.py
  77. 2
      mesonbuild/linkers/detect.py
  78. 4
      mesonbuild/linkers/linkers.py
  79. 4
      mesonbuild/minstall.py
  80. 2
      mesonbuild/modules/gnome.py
  81. 2
      mesonbuild/modules/keyval.py
  82. 2
      mesonbuild/modules/windows.py
  83. 2
      mesonbuild/mtest.py
  84. 2
      mesonbuild/programs.py
  85. 14
      mesonbuild/rewriter.py
  86. 2
      mesonbuild/scripts/cmake_run_ctgt.py
  87. 2
      mesonbuild/scripts/depfixer.py
  88. 6
      mesonbuild/utils/universal.py
  89. 2
      mesonbuild/utils/vsenv.py
  90. 2
      run_project_tests.py
  91. 2
      test cases/cmake/9 disabled subproject/meson.build
  92. 2
      test cases/common/14 configure file/meson.build
  93. 2
      test cases/common/158 disabler/meson.build
  94. 2
      test cases/common/182 find override/meson.build
  95. 2
      test cases/common/189 check header/meson.build
  96. 2
      test cases/common/196 subproject with features/meson.build
  97. 2
      test cases/common/20 global arg/prog.c
  98. 2
      test cases/common/220 fs module/meson.build
  99. 8
      test cases/common/222 native prop/meson.build
  100. 0
      test cases/common/227 very long command line/codegen.py
  101. Some files were not shown because too many files have changed in this diff Show More

@ -3,7 +3,7 @@ if ($LastExitCode -ne 0) {
exit 0 exit 0
} }
# remove Chocolately, MinGW, Strawberry Perl from path, so we don't find gcc/gfortran and try to use it # remove Chocolatey, MinGW, Strawberry Perl from path, so we don't find gcc/gfortran and try to use it
# remove PostgreSQL from path so we don't pickup a broken zlib from it # remove PostgreSQL from path so we don't pickup a broken zlib from it
$env:Path = ($env:Path.Split(';') | Where-Object { $_ -notmatch 'mingw|Strawberry|Chocolatey|PostgreSQL' }) -join ';' $env:Path = ($env:Path.Split(';') | Where-Object { $_ -notmatch 'mingw|Strawberry|Chocolatey|PostgreSQL' }) -join ';'
@ -76,7 +76,7 @@ foreach ($prog in $progs) {
echo "" echo ""
echo "Ninja / MSBuld version:" echo "Ninja / MSBuild version:"
if ($env:backend -eq 'ninja') { if ($env:backend -eq 'ninja') {
ninja --version ninja --version
} else { } else {

@ -1,6 +1,6 @@
# This is a cross compilation file from OSX Yosemite to iPhone # This is a cross compilation file from OSX Yosemite to iPhone
# Apple keeps changing the location and names of files so # Apple keeps changing the location and names of files so
# these might not work for you. Use the googels and xcrun. # these might not work for you. Use the googles and xcrun.
[binaries] [binaries]
c = ['clang', '-arch', 'arm64', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk'] c = ['clang', '-arch', 'arm64', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk']

@ -1,6 +1,6 @@
# This is a cross compilation file from OSX Yosemite to Apple tvOS # This is a cross compilation file from OSX Yosemite to Apple tvOS
# Apple keeps changing the location and names of files so # Apple keeps changing the location and names of files so
# these might not work for you. Use the googels and xcrun. # these might not work for you. Use the googles and xcrun.
[binaries] [binaries]
c = ['clang', '-arch', 'arm64', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk'] c = ['clang', '-arch', 'arm64', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk']

@ -170,6 +170,6 @@ The first command is to ensure the wrap is correctly fetched from the
latest packagefiles. The second command configures meson and selects a latest packagefiles. The second command configures meson and selects a
set of subprojects to enable. set of subprojects to enable.
The Github project contains automatic CI on pushing to run the project The GitHub project contains automatic CI on pushing to run the project
and check the metadata for obvious mistakes. This can be checked from and check the metadata for obvious mistakes. This can be checked from
your fork before submitting a PR. your fork before submitting a PR.

@ -14,7 +14,7 @@ Thank you for your interest in participating to the development.
## Submitting patches ## Submitting patches
All changes must be submitted as [pull requests to All changes must be submitted as [pull requests to
Github](https://github.com/mesonbuild/meson/pulls). This causes them GitHub](https://github.com/mesonbuild/meson/pulls). This causes them
to be run through the CI system. All submissions must pass a full CI to be run through the CI system. All submissions must pass a full CI
test run before they are even considered for submission. test run before they are even considered for submission.
@ -110,7 +110,7 @@ Meson's merge strategy should fulfill the following guidelines:
These goals are slightly contradictory so the correct thing to do These goals are slightly contradictory so the correct thing to do
often requires some judgement on part of the person doing the often requires some judgement on part of the person doing the
merge. Github provides three different merge options, The rules of merge. GitHub provides three different merge options, The rules of
thumb for choosing between them goes like this: thumb for choosing between them goes like this:
- single commit pull requests should always be rebased - single commit pull requests should always be rebased

@ -90,7 +90,7 @@ Examples:
x = 'foo.txt' x = 'foo.txt'
y = 'sub/../foo.txt' y = 'sub/../foo.txt'
z = 'bar.txt' # a symlink pointing to foo.txt z = 'bar.txt' # a symlink pointing to foo.txt
j = 'notafile.txt' # non-existent file j = 'notafile.txt' # nonexistent file
fs.is_samepath(x, y) # true fs.is_samepath(x, y) # true
fs.is_samepath(x, z) # true fs.is_samepath(x, z) # true
@ -99,7 +99,7 @@ fs.is_samepath(x, j) # false
p = 'foo/bar' p = 'foo/bar'
q = 'foo/bar/baz/..' q = 'foo/bar/baz/..'
r = 'buz' # a symlink pointing to foo/bar r = 'buz' # a symlink pointing to foo/bar
s = 'notapath' # non-existent directory s = 'notapath' # nonexistent directory
fs.is_samepath(p, q) # true fs.is_samepath(p, q) # true
fs.is_samepath(p, r) # true fs.is_samepath(p, r) # true

@ -260,7 +260,7 @@ The list of all _found_ dependencies can be acquired from
`intro-dependencies.json`. Here, the name, version, compiler and `intro-dependencies.json`. Here, the name, version, compiler and
linker arguments for a dependency are listed. linker arguments for a dependency are listed.
### Scanning for dependecie with `--scan-dependencies` ### Scanning for dependencies with `--scan-dependencies`
It is also possible to get most dependencies used without a build It is also possible to get most dependencies used without a build
directory. This can be done by running `meson introspect directory. This can be done by running `meson introspect

@ -32,7 +32,7 @@ The Dockerfile is generated from the `image.json` file and basically
only adds a few common files and runs the `install.sh` script which only adds a few common files and runs the `install.sh` script which
should contain all distribution specific setup steps. The `common.sh` should contain all distribution specific setup steps. The `common.sh`
can be sourced via `source /ci/common.sh` to access some shared can be sourced via `source /ci/common.sh` to access some shared
functionalety. functionality.
To generate the image run `build.py -t build <image>`. A generated To generate the image run `build.py -t build <image>`. A generated
image can be tested with `build.py -t test <image>`. image can be tested with `build.py -t test <image>`.

@ -80,7 +80,7 @@ This method takes the following keyword arguments:
- `ui_files`: (string | File | CustomTarget)[]: Passed the `uic` compiler - `ui_files`: (string | File | CustomTarget)[]: Passed the `uic` compiler
- `moc_sources`: (string | File | CustomTarget)[]: Passed the `moc` compiler. - `moc_sources`: (string | File | CustomTarget)[]: Passed the `moc` compiler.
These are converted into .moc files meant to be `#include`ed These are converted into .moc files meant to be `#include`ed
- `moc_headers`: (string | File | CustomTarget)[]: Passied the `moc` compiler. - `moc_headers`: (string | File | CustomTarget)[]: Passed the `moc` compiler.
These will be converted into .cpp files These will be converted into .cpp files
- `include_directories` (IncludeDirectories | string)[], the directories to add - `include_directories` (IncludeDirectories | string)[], the directories to add
to header search path for `moc` to header search path for `moc`

@ -144,7 +144,7 @@ These are provided by the `.system()` method call.
| cygwin | The Cygwin environment for Windows | | cygwin | The Cygwin environment for Windows |
| darwin | Either OSX or iOS | | darwin | Either OSX or iOS |
| dragonfly | DragonFly BSD | | dragonfly | DragonFly BSD |
| emscripten | Emscripten's Javascript environment | | emscripten | Emscripten's JavaScript environment |
| freebsd | FreeBSD and its derivatives | | freebsd | FreeBSD and its derivatives |
| gnu | GNU Hurd | | gnu | GNU Hurd |
| haiku | | | haiku | |
@ -329,7 +329,7 @@ machine](#Environment-variables-per-machine) section for details.
| C# | CSC | CSC | The linker is the compiler | | C# | CSC | CSC | The linker is the compiler |
| nasm | NASM | | Uses the C linker | | nasm | NASM | | Uses the C linker |
*The old environment variales are still supported, but are deprecated *The old environment variables are still supported, but are deprecated
and will be removed in a future version of Meson.* and will be removed in a future version of Meson.*
## Environment variables per machine ## Environment variables per machine

@ -119,7 +119,7 @@ qt5_dep = dependency('qt5', modules : 'core', method : 'qmake')
## Link whole contents of static libraries ## Link whole contents of static libraries
The default behavior of static libraries is to discard all symbols The default behavior of static libraries is to discard all symbols
that are not not directly referenced. This may lead to exported that are not directly referenced. This may lead to exported
symbols being lost. Most compilers support "whole archive" linking symbols being lost. Most compilers support "whole archive" linking
that includes all symbols and code of a given static library. This is that includes all symbols and code of a given static library. This is
exposed with the `link_whole` keyword. exposed with the `link_whole` keyword.

@ -97,7 +97,7 @@ int_255 = 0xFF
The value `if-release` can be given for the `b_ndebug` project option. The value `if-release` can be given for the `b_ndebug` project option.
This will make the `NDEBUG` pre-compiler macro to be defined for This will make the `NDEBUG` pre-compiler macro to be defined for
release type builds as if the `b_ndebug` project option had had the release type builds as if the `b_ndebug` project option had the
value `true` defined for it. value `true` defined for it.
## `install_data()` defaults to `{datadir}/{projectname}` ## `install_data()` defaults to `{datadir}/{projectname}`

@ -269,7 +269,7 @@ helper = static_library(
final = shared_library( final = shared_library(
'final', 'final',
['final.c'], ['final.c'],
dependencyes : dep, dependencies : dep,
) )
``` ```

@ -12,7 +12,7 @@ use, such as *debug* and *minsize*. There is also a *plain* type that
adds nothing by default but instead makes it the user's responsibility adds nothing by default but instead makes it the user's responsibility
to add everything by hand. This works but is a bit tedious. to add everything by hand. This works but is a bit tedious.
In this release we have added new new options to manually toggle e.g. In this release we have added new options to manually toggle e.g.
optimization levels and debug info so those can be changed optimization levels and debug info so those can be changed
independently of other options. For example by default the debug independently of other options. For example by default the debug
buildtype has no optimization enabled at all. If you wish to use GCC's buildtype has no optimization enabled at all. If you wish to use GCC's
@ -79,7 +79,7 @@ which has special properties such as not buffering stdout and
serializing all targets in this pool. serializing all targets in this pool.
The primary use-case for this is to be able to run external commands The primary use-case for this is to be able to run external commands
that take a long time to exeute. Without setting this, the user does that take a long time to execute. Without setting this, the user does
not receive any feedback about what the program is doing. not receive any feedback about what the program is doing.
## `dependency(version:)` now applies to all dependency types ## `dependency(version:)` now applies to all dependency types

@ -227,7 +227,7 @@ Furthermore, the `filename` and `install_filename` keys in the targets
introspection are now lists of strings with identical length. introspection are now lists of strings with identical length.
The `--target-files` option is now deprecated, since the same information The `--target-files` option is now deprecated, since the same information
can be acquired from the `--tragets` introspection API. can be acquired from the `--targets` introspection API.
## Meson file rewriter ## Meson file rewriter
@ -317,7 +317,7 @@ A complete introspection dump is also stored in the `meson-info`
directory. This dump will be (re)generated each time meson updates the directory. This dump will be (re)generated each time meson updates the
configuration of the build directory. configuration of the build directory.
Additionlly the format of `meson introspect target` was changed: Additionally the format of `meson introspect target` was changed:
- New: the `sources` key. It stores the source files of a target and their compiler parameters. - New: the `sources` key. It stores the source files of a target and their compiler parameters.
- New: the `defined_in` key. It stores the Meson file where a target is defined - New: the `defined_in` key. It stores the Meson file where a target is defined

@ -94,7 +94,7 @@ linker internal re-architecture this has become possible
## Compiler and dynamic linker representation split ## Compiler and dynamic linker representation split
0.52.0 includes a massive refactor of the representaitons of compilers to 0.52.0 includes a massive refactor of the representations of compilers to
tease apart the representations of compilers and dynamic linkers (ld). This tease apart the representations of compilers and dynamic linkers (ld). This
fixes a number of compiler/linker combinations. In particular this fixes fixes a number of compiler/linker combinations. In particular this fixes
use GCC and vanilla clang on macOS. use GCC and vanilla clang on macOS.
@ -160,7 +160,7 @@ lib2 = static_library(other_sources, link_whole : lib1, install : true)
``` ```
- `link_with:` of a static library with an uninstalled static library. In the - `link_with:` of a static library with an uninstalled static library. In the
example below, lib2 now implicitly promote `link_with:` to `link_whole:` because example below, lib2 now implicitly promote `link_with:` to `link_whole:` because
the installed lib2 would oterhwise be unusable. the installed lib2 would otherwise be unusable.
```meson ```meson
lib1 = static_library(sources, install : false) lib1 = static_library(sources, install : false)
lib2 = static_library(sources, link_with : lib1, install : true) lib2 = static_library(sources, link_with : lib1, install : true)

@ -286,7 +286,7 @@ This old behavior is inconsistent with the way Autotools works, which
undermines the purpose of distro-integration that is the only reason undermines the purpose of distro-integration that is the only reason
environment variables are supported at all in Meson. The new behavior environment variables are supported at all in Meson. The new behavior
is not quite the same, but doesn't conflict: Meson doesn't always is not quite the same, but doesn't conflict: Meson doesn't always
repond to an environment when Autoconf would, but when it does it respond to an environment when Autoconf would, but when it does it
interprets it as Autotools would. interprets it as Autotools would.
## Added 'pkg_config_libdir' property ## Added 'pkg_config_libdir' property

@ -93,7 +93,7 @@ Meson now supports passing configuration options to CMake and
overriding certain build details extracted from the CMake subproject. overriding certain build details extracted from the CMake subproject.
The new CMake configuration options object is very similar to the The new CMake configuration options object is very similar to the
[[@cfg_data]] object object returned [[@cfg_data]] object returned
by [[configuration_data]]. It by [[configuration_data]]. It
is generated by the `subproject_options` function is generated by the `subproject_options` function
@ -175,7 +175,7 @@ changed), but is now deprecated.
## String concatenation in meson_options.txt ## String concatenation in meson_options.txt
It is now possible to use string concatenation (with the `+` It is now possible to use string concatenation (with the `+`
opperator) in the `meson_options.txt` file. This allows splitting long operator) in the `meson_options.txt` file. This allows splitting long
option descriptions. option descriptions.
```meson ```meson

@ -196,7 +196,7 @@ executable(
## New `build target` methods ## New `build target` methods
The [[@build_tgt]] object now supports The [[@build_tgt]] object now supports
the following two functions, to ensure feature compatebility with the following two functions, to ensure feature compatibility with
[[@external_program]] objects: [[@external_program]] objects:
- `found()`: Always returns `true`. This function is meant - `found()`: Always returns `true`. This function is meant
@ -205,7 +205,7 @@ the following two functions, to ensure feature compatebility with
use-cases where an executable is used instead of an external program. use-cases where an executable is used instead of an external program.
- `path()`: **(deprecated)** does the exact same as `full_path()`. - `path()`: **(deprecated)** does the exact same as `full_path()`.
**NOTE:** This function is solely kept for compatebility **NOTE:** This function is solely kept for compatibility
with `external program` objects. It will be with `external program` objects. It will be
removed once the, also deprecated, corresponding `path()` function in the removed once the, also deprecated, corresponding `path()` function in the
`external program` object is removed. `external program` object is removed.

@ -286,7 +286,7 @@ be flattened.
## The qt modules now accept generated outputs as inputs for qt.compile_* ## The qt modules now accept generated outputs as inputs for qt.compile_*
This means you can uset `custom_target`, custom_target indices This means you can use `custom_target`, custom_target indices
(`custom_target[0]`, for example), or the output of `generator.process` as (`custom_target[0]`, for example), or the output of `generator.process` as
inputs to the various `qt.compile_*` methods. inputs to the various `qt.compile_*` methods.
@ -357,7 +357,7 @@ are found, and silently continue if Visual Studio activation fails.
`meson setup --vsenv` command line argument can now be used to force Visual Studio `meson setup --vsenv` command line argument can now be used to force Visual Studio
activation even when other compilers are found. It also make Meson abort with an activation even when other compilers are found. It also make Meson abort with an
error message when activation fails. This is especially useful for Github Action error message when activation fails. This is especially useful for GitHub Actions
because their Windows images have gcc in their PATH by default. because their Windows images have gcc in their PATH by default.
`--vsenv` is set by default when using `vs` backend. `--vsenv` is set by default when using `vs` backend.

@ -19,9 +19,9 @@ directory, that file is loaded by gdb automatically.
## Print modified environment variables with `meson devenv --dump` ## Print modified environment variables with `meson devenv --dump`
With `--dump` option, all envorinment variables that have been modified are With `--dump` option, all environment variables that have been modified are
printed instead of starting an interactive shell. It can be used by shell printed instead of starting an interactive shell. It can be used by shell
scripts that wish to setup their environment themself. scripts that wish to setup their environment themselves.
## New `method` and `separator` kwargs on `environment()` and `meson.add_devenv()` ## New `method` and `separator` kwargs on `environment()` and `meson.add_devenv()`

@ -112,7 +112,7 @@ and the resulting directory tree will look like
## JAR Resources ## JAR Resources
The ability to add resources to a JAR has been added. Use the `java_resources` The ability to add resources to a JAR has been added. Use the `java_resources`
keyword argument. It takes a `sturctured_src` object. keyword argument. It takes a `structured_src` object.
```meson ```meson
jar( jar(

@ -54,7 +54,7 @@ Meson function name styling.
The `bindgen` method of the `rust` module now accepts a dependencies argument. The `bindgen` method of the `rust` module now accepts a dependencies argument.
Any include paths in these dependencies will be passed to the underlying call to Any include paths in these dependencies will be passed to the underlying call to
`clang`, and the call to `bindgen` will correctly depend on any generatd sources. `clang`, and the call to `bindgen` will correctly depend on any generated sources.
## String arguments to the rust.bindgen include_directories argument ## String arguments to the rust.bindgen include_directories argument

@ -24,7 +24,7 @@ Before a major release is made a stable branch will be made, and
will be made, and all bugs effecting the RC will be assigned to this will be made, and all bugs effecting the RC will be assigned to this
milestone. Patches fixing bugs in the milestone will be picked to the milestone. Patches fixing bugs in the milestone will be picked to the
stable branch, and normal development will continue on the master stable branch, and normal development will continue on the master
branch. Every week after after this a new release candidate will be branch. Every week after this a new release candidate will be
made until all bugs are resolved in that milestone. When all of the made until all bugs are resolved in that milestone. When all of the
bugs are fixed the 0.X.0 release will be made. bugs are fixed the 0.X.0 release will be made.

@ -26,7 +26,7 @@ mode", on the other hand, is meant to be used by external programs
The rewriter itself is considered stable, however the user interface The rewriter itself is considered stable, however the user interface
and the "script mode" API might change in the future. These changes and the "script mode" API might change in the future. These changes
may also break backwards comaptibility to older releases. may also break backwards compatibility to older releases.
We are also open to suggestions for API improvements. We are also open to suggestions for API improvements.

@ -68,7 +68,7 @@ generated = rust.bindgen(
) )
``` ```
If the header depeneds on generated headers, those headers must be passed to If the header depends on generated headers, those headers must be passed to
`bindgen` as well to ensure proper dependency ordering, static headers do not `bindgen` as well to ensure proper dependency ordering, static headers do not
need to be passed, as a proper depfile is generated: need to be passed, as a proper depfile is generated:

@ -29,7 +29,7 @@ how much time the build system takes to check the states of all source
files because if any of them could potentially cause a rebuild. files because if any of them could potentially cause a rebuild.
Since CMake has two different backends, Make and Ninja, we ran the Since CMake has two different backends, Make and Ninja, we ran the
tests on both of them. All tests were run on a 2011 era Macbook Pro tests on both of them. All tests were run on a 2011 era MacBook Pro
running Ubuntu 13/04. The tests were run multiple times and we always running Ubuntu 13/04. The tests were run multiple times and we always
took the fastest time. took the fastest time.

@ -219,7 +219,7 @@ the following command-line options:
* **--wrap-mode=nodownload** * **--wrap-mode=nodownload**
Meson will not use the network to download any subprojects or Meson will not use the network to download any subprojects or
fetch any wrap information. Only pre-existing sources will be used. fetch any wrap information. Only preexisting sources will be used.
This is useful (mostly for distros) when you want to only use the This is useful (mostly for distros) when you want to only use the
sources provided by a software release, and want to manually handle sources provided by a software release, and want to manually handle
or provide missing dependencies. or provide missing dependencies.

@ -766,7 +766,7 @@ additive_expression: multiplicative_expression | (additive_expression additive_o
additive_operator: "+" | "-" additive_operator: "+" | "-"
argument_list: positional_arguments ["," keyword_arguments] | keyword_arguments argument_list: positional_arguments ["," keyword_arguments] | keyword_arguments
array_literal: "[" [expression_list] "]" array_literal: "[" [expression_list] "]"
assignment_statement: expression asssignment_operator expression assignment_statement: expression assignment_operator expression
assignment_operator: "=" | "+=" assignment_operator: "=" | "+="
binary_literal: "0b" BINARY_NUMBER binary_literal: "0b" BINARY_NUMBER
BINARY_NUMBER: /[01]+/ BINARY_NUMBER: /[01]+/

@ -107,7 +107,7 @@ format files
- [Marker](https://github.com/fabiocolacio/Marker), a GTK-3 markdown editor - [Marker](https://github.com/fabiocolacio/Marker), a GTK-3 markdown editor
- [Mesa](https://mesa3d.org/), an open source graphics driver project - [Mesa](https://mesa3d.org/), an open source graphics driver project
- [Miniz](https://github.com/richgel999/miniz), a zlib replacement library - [Miniz](https://github.com/richgel999/miniz), a zlib replacement library
- [MiracleCast](https://github.com/albfan/miraclecast), connect external monitors to your system via Wifi-Display specification aka Miracast - [MiracleCast](https://github.com/albfan/miraclecast), connect external monitors to your system via WiFi-Display specification aka Miracast
- [mpv](https://github.com/mpv-player/mpv), a free, open source, and cross-platform media player - [mpv](https://github.com/mpv-player/mpv), a free, open source, and cross-platform media player
- [mrsh](https://github.com/emersion/mrsh), a minimal POSIX shell - [mrsh](https://github.com/emersion/mrsh), a minimal POSIX shell
- [Nautilus](https://gitlab.gnome.org/GNOME/nautilus), the GNOME file manager - [Nautilus](https://gitlab.gnome.org/GNOME/nautilus), the GNOME file manager

@ -112,7 +112,7 @@ executable('app_name', sources, dependencies: dependencies)
``` ```
Using `[GtkTemplate]` also requires the GTK+ user interface definition Using `[GtkTemplate]` also requires the GTK+ user interface definition
files to be built in to the binary as GResources. For completeness, files to be built into the binary as GResources. For completeness,
the next example shows this: the next example shows this:
```meson ```meson
@ -177,7 +177,7 @@ repository](https://gitlab.gnome.org/GNOME/vala-extra-vapis) is a
community maintained repository of VAPIs that are not distributed. community maintained repository of VAPIs that are not distributed.
Developers use the repository to share early work on new bindings and Developers use the repository to share early work on new bindings and
improvements to existing bindings. So the VAPIs can frequently change. improvements to existing bindings. So the VAPIs can frequently change.
It is recommended VAPIs from this repository are copied in to your It is recommended VAPIs from this repository are copied into your
project's source files. project's source files.
This also works well for starting to write new bindings before they This also works well for starting to write new bindings before they

@ -20,7 +20,7 @@ Compiles Windows `rc` files specified in the positional arguments.
Returns a list of `CustomTarget` objects that you put in the list of sources for Returns a list of `CustomTarget` objects that you put in the list of sources for
the target you want to have the resources in. the target you want to have the resources in.
*Since 0.61.0* CustomTargetIndexs and CustomTargets with more than out output *Since 0.61.0* CustomTargetIndexes and CustomTargets with more than out output
*may be used as positional arguments. *may be used as positional arguments.
This method has the following keyword arguments: This method has the following keyword arguments:

@ -34,7 +34,7 @@ To link to functions, the function name should be put into the tag:
`[[<func name>]]`. `[[<func name>]]`.
Methods (for all kinds of objects, including modules) can be linked to like Methods (for all kinds of objects, including modules) can be linked to like
this: `[[<object name>.<method name>]]`. this: `[[<object name>.<method name>]]`.
To link to objects themself, the `[[@<object name>]]` syntax can be used. To link to objects themselves, the `[[@<object name>]]` syntax can be used.
These tags do **not** need to be put in inline code! A hotdoc extension handles These tags do **not** need to be put in inline code! A hotdoc extension handles
the formatting here. If tags need to be placed (for instance, to include reference the formatting here. If tags need to be placed (for instance, to include reference
@ -69,7 +69,7 @@ module has its own directory. The module itself **must** be in a file called
`module.yaml`. All objects returned by the module are then located next to this `module.yaml`. All objects returned by the module are then located next to this
file. file.
The name of the YAML files themself are ignored (with the exception of The name of the YAML files themselves are ignored (with the exception of
`module.yaml`) and carry no specific meaning. However, it is recommended to name `module.yaml`) and carry no specific meaning. However, it is recommended to name
the YAML files after the `name` entry of the object. the YAML files after the `name` entry of the object.
@ -81,7 +81,7 @@ is to make inheriting functions and arguments easier.
# YAML schema # YAML schema
The YAML files themself are structured as follows: The YAML files themselves are structured as follows:
## Functions ## Functions

@ -71,7 +71,7 @@ This method takes the following keyword arguments:
- `qresources` (string | File)[]: Passed to the RCC compiler - `qresources` (string | File)[]: Passed to the RCC compiler
- `ui_files`: (string | File | CustomTarget)[]: Passed the `uic` compiler - `ui_files`: (string | File | CustomTarget)[]: Passed the `uic` compiler
- `moc_sources`: (string | File | CustomTarget)[]: Passed the `moc` compiler. These are converted into .moc files meant to be `#include`ed - `moc_sources`: (string | File | CustomTarget)[]: Passed the `moc` compiler. These are converted into .moc files meant to be `#include`ed
- `moc_headers`: (string | File | CustomTarget)[]: Passied the `moc` compiler. These will be converted into .cpp files - `moc_headers`: (string | File | CustomTarget)[]: Passed the `moc` compiler. These will be converted into .cpp files
- `include_directories` (IncludeDirectories | string)[], the directories to add to header search path for `moc` - `include_directories` (IncludeDirectories | string)[], the directories to add to header search path for `moc`
- `moc_extra_arguments` string[]: any additional arguments to `moc`. Since v0.44.0. - `moc_extra_arguments` string[]: any additional arguments to `moc`. Since v0.44.0.
- `uic_extra_arguments` string[]: any additional arguments to `uic`. Since v0.49.0. - `uic_extra_arguments` string[]: any additional arguments to `uic`. Since v0.49.0.

@ -27,7 +27,7 @@ argument which is the name of the gettext module.
* `preset`: (*Added 0.37.0*) name of a preset list of arguments, * `preset`: (*Added 0.37.0*) name of a preset list of arguments,
current option is `'glib'`, see current option is `'glib'`, see
[source](https://github.com/mesonbuild/meson/blob/master/mesonbuild/modules/i18n.py) [source](https://github.com/mesonbuild/meson/blob/master/mesonbuild/modules/i18n.py)
for for their value for their value
* `install`: (*Added 0.43.0*) if false, do not install the built translations. * `install`: (*Added 0.43.0*) if false, do not install the built translations.
* `install_dir`: (*Added 0.50.0*) override default install location, default is `localedir` * `install_dir`: (*Added 0.50.0*) override default install location, default is `localedir`

@ -105,7 +105,7 @@ class GeneratorMD(GeneratorBase):
def _link_to_object(self, obj: T.Union[Function, Object], in_code_block: bool = False) -> str: def _link_to_object(self, obj: T.Union[Function, Object], in_code_block: bool = False) -> str:
''' '''
Generate a palaceholder tag for the the function/method/object documentation. Generate a palaceholder tag for the function/method/object documentation.
This tag is then replaced in the custom hotdoc plugin. This tag is then replaced in the custom hotdoc plugin.
''' '''
prefix = '#' if in_code_block else '' prefix = '#' if in_code_block else ''

@ -108,7 +108,7 @@ class _Resolver:
for obj in func.returns.resolved: for obj in func.returns.resolved:
obj.data_type.returned_by += [func] obj.data_type.returned_by += [func]
# Handle kwargs inehritance # Handle kwargs inheritance
for base_name in func.kwargs_inherit: for base_name in func.kwargs_inherit:
base_name = base_name.strip() base_name = base_name.strip()
assert base_name in self.func_map, f'Unknown base function `{base_name}` for {func.name}' assert base_name in self.func_map, f'Unknown base function `{base_name}` for {func.name}'
@ -123,7 +123,7 @@ class _Resolver:
missing = {k: v for k, v in base.kwargs.items() if k in base_keys - curr_keys} missing = {k: v for k, v in base.kwargs.items() if k in base_keys - curr_keys}
func.kwargs.update(missing) func.kwargs.update(missing)
# Handloe other args inheritance # Handle other args inheritance
_T = T.TypeVar('_T', bound=T.Union[ArgBase, T.List[PosArg]]) _T = T.TypeVar('_T', bound=T.Union[ArgBase, T.List[PosArg]])
def resolve_inherit(name: str, curr: _T, resolver: T.Callable[[Function], _T]) -> _T: def resolve_inherit(name: str, curr: _T, resolver: T.Callable[[Function], _T]) -> _T:
if name and not curr: if name and not curr:

@ -39,7 +39,7 @@ methods:
# str.replace(old, new) # str.replace(old, new)
- name: replace - name: replace
description: Search all occurrences of `old` and and replace it with `new` description: Search all occurrences of `old` and replace it with `new`
returns: str returns: str
since: 0.58.0 since: 0.58.0
example: | example: |

@ -89,7 +89,7 @@ kwargs:
default: false default: false
description: | description: |
When set to true flags this target as a GUI application When set to true flags this target as a GUI application
on platforms where this makes a differerence, **deprecated** since on platforms where this makes a difference, **deprecated** since
0.56.0, use `win_subsystem` instead. 0.56.0, use `win_subsystem` instead.
link_args: link_args:
@ -299,6 +299,6 @@ kwargs:
If it is a [[shared_library]] it defaults to "lib", and may be "lib", If it is a [[shared_library]] it defaults to "lib", and may be "lib",
"dylib", "cdylib", or "proc-macro". If "lib" then Rustc will pick a "dylib", "cdylib", or "proc-macro". If "lib" then Rustc will pick a
default, "cdylib" means a C ABI library, "dylib" means a Rust ABI, and default, "cdylib" means a C ABI library, "dylib" means a Rust ABI, and
"proc-macro" is a special rust proceedural macro crate. "proc-macro" is a special rust procedural macro crate.
"proc-macro" is new in 0.62.0. "proc-macro" is new in 0.62.0.

@ -67,6 +67,6 @@ kwargs:
since: 0.63.0 since: 0.63.0
default: false default: false
description: | description: |
Disable stripping child-direcories from header files when installing. Disable stripping child-directories from header files when installing.
This is equivalent to GNU Automake's `nobase` option. This is equivalent to GNU Automake's `nobase` option.

@ -82,7 +82,7 @@ kwargs:
For backwards compatibility reasons you can also pass an array of For backwards compatibility reasons you can also pass an array of
licenses here. This is not recommended, as it is ambiguous: `license : licenses here. This is not recommended, as it is ambiguous: `license :
['Apache-2.0', 'GPL-2.0-only']` instead use an SPDX espression: `license ['Apache-2.0', 'GPL-2.0-only']` instead use an SPDX expression: `license
: 'Apache-2.0 OR GPL-2.0-only'`, which makes it clear that the license : 'Apache-2.0 OR GPL-2.0-only'`, which makes it clear that the license
mean OR, not AND. mean OR, not AND.

@ -53,7 +53,7 @@ methods:
deprecated: 0.59.0 deprecated: 0.59.0
description: | description: |
Does the exact same as [[build_tgt.full_path]]. **NOTE**: This Does the exact same as [[build_tgt.full_path]]. **NOTE**: This
function is solely kept for compatebility with [[@external_program]] objects. function is solely kept for compatibility with [[@external_program]] objects.
It will be removed once the, also deprecated, corresponding `path()` It will be removed once the, also deprecated, corresponding `path()`
function in the [[@external_program]] object is removed. function in the [[@external_program]] object is removed.

@ -485,7 +485,7 @@ methods:
default: "'off'" default: "'off'"
description: | description: |
Supported values: Supported values:
- `'off'`: Quietely ignore unsupported arguments - `'off'`: Quietly ignore unsupported arguments
- `'warn'`: Print a warning for unsupported arguments - `'warn'`: Print a warning for unsupported arguments
- `'require'`: Abort if at least one argument is not supported - `'require'`: Abort if at least one argument is not supported
@ -544,7 +544,7 @@ methods:
# default: "'off'" # default: "'off'"
# description: | # description: |
# Supported values: # Supported values:
# - `'off'`: Quietely ignore unsupported arguments # - `'off'`: Quietly ignore unsupported arguments
# - `'warn'`: Print a warning for unsupported arguments # - `'warn'`: Print a warning for unsupported arguments
# - `'require'`: Abort if at least one argument is not supported # - `'require'`: Abort if at least one argument is not supported

@ -4,7 +4,7 @@ description: |
Base type for all modules. Base type for all modules.
Modules provide their own specific implementation methods, but all modules Modules provide their own specific implementation methods, but all modules
proivide the following methods: provide the following methods:
methods: methods:
- name: found - name: found

@ -1,4 +1,4 @@
project('downloader') project('downloader')
# this test will timeout, showing that a subdomain isn't caught as masquarading url # this test will timeout, showing that a subdomain isn't caught as masquerading url
subproject('zlib') subproject('zlib')

@ -1,4 +1,4 @@
project('git outcheckker', 'c') project('git outchecker', 'c')
sp = subproject('samplesubproject') sp = subproject('samplesubproject')

@ -1,5 +1,5 @@
This directory shows how you can build redistributable binaries. On This directory shows how you can build redistributable binaries. On
OSX this menans building an app bundle and a .dmg installer. On Linux OSX this means building an app bundle and a .dmg installer. On Linux
it means building an archive that bundles its dependencies. On Windows it means building an archive that bundles its dependencies. On Windows
it means building an .exe installer. it means building an .exe installer.

@ -1,4 +1,4 @@
project('Mercurial outcheckker', 'c') project('Mercurial outchecker', 'c')
sp = subproject('samplesubproject') sp = subproject('samplesubproject')

@ -198,13 +198,13 @@ class CompilerArgs(T.MutableSequence[str]):
"""Returns whether the argument can be safely de-duped. """Returns whether the argument can be safely de-duped.
In addition to these, we handle library arguments specially. In addition to these, we handle library arguments specially.
With GNU ld, we surround library arguments with -Wl,--start/end-gr -> Dedupoup With GNU ld, we surround library arguments with -Wl,--start/end-group
to recursively search for symbols in the libraries. This is not needed to recursively search for symbols in the libraries. This is not needed
with other linkers. with other linkers.
""" """
# A standalone argument must never be deduplicated because it is # A standalone argument must never be deduplicated because it is
# defined by what comes _after_ it. Thus dedupping this: # defined by what comes _after_ it. Thus deduping this:
# -D FOO -D BAR # -D FOO -D BAR
# would yield either # would yield either
# -D FOO BAR # -D FOO BAR

@ -352,7 +352,7 @@ class AstInterpreter(InterpreterBase):
return None # Loop detected return None # Loop detected
id_loop_detect += [node.ast_id] id_loop_detect += [node.ast_id]
# Try to evealuate the value of the node # Try to evaluate the value of the node
if isinstance(node, IdNode): if isinstance(node, IdNode):
result = quick_resolve(node) result = quick_resolve(node)
@ -421,7 +421,7 @@ class AstInterpreter(InterpreterBase):
else: else:
args = [args_raw] args = [args_raw]
flattend_args = [] # type: T.List[TYPE_nvar] flattened_args = [] # type: T.List[TYPE_nvar]
# Resolve the contents of args # Resolve the contents of args
for i in args: for i in args:
@ -430,18 +430,18 @@ class AstInterpreter(InterpreterBase):
if resolved is not None: if resolved is not None:
if not isinstance(resolved, list): if not isinstance(resolved, list):
resolved = [resolved] resolved = [resolved]
flattend_args += resolved flattened_args += resolved
elif isinstance(i, (str, bool, int, float)) or include_unknown_args: elif isinstance(i, (str, bool, int, float)) or include_unknown_args:
flattend_args += [i] flattened_args += [i]
return flattend_args return flattened_args
def flatten_kwargs(self, kwargs: T.Dict[str, TYPE_nvar], include_unknown_args: bool = False) -> T.Dict[str, TYPE_nvar]: def flatten_kwargs(self, kwargs: T.Dict[str, TYPE_nvar], include_unknown_args: bool = False) -> T.Dict[str, TYPE_nvar]:
flattend_kwargs = {} flattened_kwargs = {}
for key, val in kwargs.items(): for key, val in kwargs.items():
if isinstance(val, BaseNode): if isinstance(val, BaseNode):
resolved = self.resolve_node(val, include_unknown_args) resolved = self.resolve_node(val, include_unknown_args)
if resolved is not None: if resolved is not None:
flattend_kwargs[key] = resolved flattened_kwargs[key] = resolved
elif isinstance(val, (str, bool, int, float)) or include_unknown_args: elif isinstance(val, (str, bool, int, float)) or include_unknown_args:
flattend_kwargs[key] = val flattened_kwargs[key] = val
return flattend_kwargs return flattened_kwargs

@ -263,9 +263,9 @@ class IntrospectionInterpreter(AstInterpreter):
# Pop the first element if the function is a build target function # Pop the first element if the function is a build target function
if isinstance(curr, FunctionNode) and curr.func_name in BUILD_TARGET_FUNCTIONS: if isinstance(curr, FunctionNode) and curr.func_name in BUILD_TARGET_FUNCTIONS:
arg_nodes.pop(0) arg_nodes.pop(0)
elemetary_nodes = [x for x in arg_nodes if isinstance(x, (str, StringNode))] elementary_nodes = [x for x in arg_nodes if isinstance(x, (str, StringNode))]
inqueue += [x for x in arg_nodes if isinstance(x, (FunctionNode, ArrayNode, IdNode, ArithmeticNode))] inqueue += [x for x in arg_nodes if isinstance(x, (FunctionNode, ArrayNode, IdNode, ArithmeticNode))]
if elemetary_nodes: if elementary_nodes:
res += [curr] res += [curr]
return res return res

@ -545,7 +545,7 @@ class NinjaBackend(backends.Backend):
# We want to match 'Note: including file: ' in the line # We want to match 'Note: including file: ' in the line
# 'Note: including file: d:\MyDir\include\stdio.h', however # 'Note: including file: d:\MyDir\include\stdio.h', however
# different locales have different messages with a different # different locales have different messages with a different
# number of colons. Match up to the the drive name 'd:\'. # number of colons. Match up to the drive name 'd:\'.
# When used in cross compilation, the path separator is a # When used in cross compilation, the path separator is a
# forward slash rather than a backslash so handle both; i.e. # forward slash rather than a backslash so handle both; i.e.
# the path is /MyDir/include/stdio.h. # the path is /MyDir/include/stdio.h.
@ -750,7 +750,7 @@ class NinjaBackend(backends.Backend):
''' '''
Adds the source file introspection information for a language of a target Adds the source file introspection information for a language of a target
Internal introspection storage formart: Internal introspection storage format:
self.introspection_data = { self.introspection_data = {
'<target ID>': { '<target ID>': {
<id tuple>: { <id tuple>: {
@ -830,7 +830,7 @@ class NinjaBackend(backends.Backend):
self.generate_swift_target(target) self.generate_swift_target(target)
return return
# Pre-existing target C/C++ sources to be built; dict of full path to # Preexisting target C/C++ sources to be built; dict of full path to
# source relative to build root and the original File object. # source relative to build root and the original File object.
target_sources: T.MutableMapping[str, File] target_sources: T.MutableMapping[str, File]
@ -839,7 +839,7 @@ class NinjaBackend(backends.Backend):
generated_sources: T.MutableMapping[str, File] generated_sources: T.MutableMapping[str, File]
# List of sources that have been transpiled from a DSL (like Vala) into # List of sources that have been transpiled from a DSL (like Vala) into
# a language that is haneled below, such as C or C++ # a language that is handled below, such as C or C++
transpiled_sources: T.List[str] transpiled_sources: T.List[str]
if 'vala' in target.compilers: if 'vala' in target.compilers:
@ -879,7 +879,7 @@ class NinjaBackend(backends.Backend):
mlog.log(mlog.red('FIXME'), msg) mlog.log(mlog.red('FIXME'), msg)
# Get a list of all generated headers that will be needed while building # Get a list of all generated headers that will be needed while building
# this target's sources (generated sources and pre-existing sources). # this target's sources (generated sources and preexisting sources).
# This will be set as dependencies of all the target's sources. At the # This will be set as dependencies of all the target's sources. At the
# same time, also deal with generated sources that need to be compiled. # same time, also deal with generated sources that need to be compiled.
generated_source_files = [] generated_source_files = []
@ -964,7 +964,7 @@ class NinjaBackend(backends.Backend):
o, s = self.generate_single_compile(target, src, 'vala', [], header_deps) o, s = self.generate_single_compile(target, src, 'vala', [], header_deps)
obj_list.append(o) obj_list.append(o)
# Generate compile targets for all the pre-existing sources for this target # Generate compile targets for all the preexisting sources for this target
for src in target_sources.values(): for src in target_sources.values():
if not self.environment.is_header(src): if not self.environment.is_header(src):
if self.environment.is_llvm_ir(src): if self.environment.is_llvm_ir(src):
@ -1035,8 +1035,8 @@ class NinjaBackend(backends.Backend):
rule_name = 'depscan' rule_name = 'depscan'
scan_sources = self.select_sources_to_scan(compiled_sources) scan_sources = self.select_sources_to_scan(compiled_sources)
# Dump the sources as a json list. This avoids potential probllems where # Dump the sources as a json list. This avoids potential problems where
# the number of sources passed to depscan exceedes the limit imposed by # the number of sources passed to depscan exceeds the limit imposed by
# the OS. # the OS.
with open(json_abs, 'w', encoding='utf-8') as f: with open(json_abs, 'w', encoding='utf-8') as f:
json.dump(scan_sources, f) json.dump(scan_sources, f)
@ -1294,7 +1294,7 @@ class NinjaBackend(backends.Backend):
if build.rulename in self.ruledict: if build.rulename in self.ruledict:
build.rule = self.ruledict[build.rulename] build.rule = self.ruledict[build.rulename]
else: else:
mlog.warning(f"build statement for {build.outfilenames} references non-existent rule {build.rulename}") mlog.warning(f"build statement for {build.outfilenames} references nonexistent rule {build.rulename}")
def write_rules(self, outfile): def write_rules(self, outfile):
for b in self.build_elements: for b in self.build_elements:
@ -1505,7 +1505,7 @@ class NinjaBackend(backends.Backend):
T.Tuple[T.MutableMapping[str, File], T.MutableMapping]]: T.Tuple[T.MutableMapping[str, File], T.MutableMapping]]:
""" """
Splits the target's sources into .vala, .gs, .vapi, and other sources. Splits the target's sources into .vala, .gs, .vapi, and other sources.
Handles both pre-existing and generated sources. Handles both preexisting and generated sources.
Returns a tuple (vala, vapi, others) each of which is a dictionary with Returns a tuple (vala, vapi, others) each of which is a dictionary with
the keys being the path to the file (relative to the build directory) the keys being the path to the file (relative to the build directory)
@ -1515,7 +1515,7 @@ class NinjaBackend(backends.Backend):
vapi: T.MutableMapping[str, File] = OrderedDict() vapi: T.MutableMapping[str, File] = OrderedDict()
others: T.MutableMapping[str, File] = OrderedDict() others: T.MutableMapping[str, File] = OrderedDict()
othersgen: T.MutableMapping[str, File] = OrderedDict() othersgen: T.MutableMapping[str, File] = OrderedDict()
# Split pre-existing sources # Split preexisting sources
for s in t.get_sources(): for s in t.get_sources():
# BuildTarget sources are always mesonlib.File files which are # BuildTarget sources are always mesonlib.File files which are
# either in the source root, or generated with configure_file and # either in the source root, or generated with configure_file and
@ -1928,7 +1928,7 @@ class NinjaBackend(backends.Backend):
# before that it would treat linking two static libraries as # before that it would treat linking two static libraries as
# whole-archive linking. However, to make this work we have to disable # whole-archive linking. However, to make this work we have to disable
# bundling, which can't be done until 1.63.0… So for 1.61–1.62 we just # bundling, which can't be done until 1.63.0… So for 1.61–1.62 we just
# have to hope that the default cases of +whole-archive are sufficent. # have to hope that the default cases of +whole-archive are sufficient.
# See: https://github.com/rust-lang/rust/issues/99429 # See: https://github.com/rust-lang/rust/issues/99429
if mesonlib.version_compare(rustc.version, '>= 1.63.0'): if mesonlib.version_compare(rustc.version, '>= 1.63.0'):
whole_archive = ':+whole-archive,-bundle' whole_archive = ':+whole-archive,-bundle'
@ -2624,7 +2624,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485'''))
# has pdb file called foo.pdb. So will a static library # has pdb file called foo.pdb. So will a static library
# foo.lib, which clobbers both foo.pdb _and_ the dll file's # foo.lib, which clobbers both foo.pdb _and_ the dll file's
# export library called foo.lib (by default, currently we name # export library called foo.lib (by default, currently we name
# them libfoo.a to avoidt this issue). You can give the files # them libfoo.a to avoid this issue). You can give the files
# unique names such as foo_exe.pdb but VC also generates a # unique names such as foo_exe.pdb but VC also generates a
# bunch of other files which take their names from the target # bunch of other files which take their names from the target
# basename (i.e. "foo") and stomp on each other. # basename (i.e. "foo") and stomp on each other.

@ -1436,7 +1436,7 @@ class Vs2010Backend(backends.Backend):
else: else:
inc_dirs = file_inc_dirs inc_dirs = file_inc_dirs
self.add_include_dirs(lang, inc_cl, inc_dirs) self.add_include_dirs(lang, inc_cl, inc_dirs)
# XXX: Do we need to set the object file name name here too? # XXX: Do we need to set the object file name here too?
previous_objects = [] previous_objects = []
if self.has_objects(objects, additional_objects, gen_objs): if self.has_objects(objects, additional_objects, gen_objs):

@ -740,7 +740,7 @@ class BuildTarget(Target):
self.rpath_dirs_to_remove: T.Set[bytes] = set() self.rpath_dirs_to_remove: T.Set[bytes] = set()
self.process_sourcelist(sources) self.process_sourcelist(sources)
# Objects can be: # Objects can be:
# 1. Pre-existing objects provided by the user with the `objects:` kwarg # 1. Preexisting objects provided by the user with the `objects:` kwarg
# 2. Compiled objects created by and extracted from another target # 2. Compiled objects created by and extracted from another target
self.process_objectlist(objects) self.process_objectlist(objects)
self.process_kwargs(kwargs) self.process_kwargs(kwargs)
@ -811,8 +811,8 @@ class BuildTarget(Target):
"""Split sources into generated and static sources. """Split sources into generated and static sources.
Sources can be: Sources can be:
1. Pre-existing source files in the source tree (static) 1. Preexisting source files in the source tree (static)
2. Pre-existing sources generated by configure_file in the build tree. 2. Preexisting sources generated by configure_file in the build tree.
(static as they are only regenerated if meson itself is regenerated) (static as they are only regenerated if meson itself is regenerated)
3. Sources files generated by another target or a Generator (generated) 3. Sources files generated by another target or a Generator (generated)
""" """
@ -884,7 +884,7 @@ class BuildTarget(Target):
missing_languages: T.List[str] = [] missing_languages: T.List[str] = []
if not any([self.sources, self.generated, self.objects, self.structured_sources]): if not any([self.sources, self.generated, self.objects, self.structured_sources]):
return missing_languages return missing_languages
# Pre-existing sources # Preexisting sources
sources: T.List['FileOrString'] = list(self.sources) sources: T.List['FileOrString'] = list(self.sources)
generated = self.generated.copy() generated = self.generated.copy()
@ -1654,7 +1654,7 @@ You probably should put it in link_with instead.''')
'\n ' '\n '
f'If shared_module() was used for {link_target.name} because it has references to undefined symbols,' f'If shared_module() was used for {link_target.name} because it has references to undefined symbols,'
'\n ' '\n '
'use shared_libary() with `override_options: [\'b_lundef=false\']` instead.') 'use shared_library() with `override_options: [\'b_lundef=false\']` instead.')
link_target.force_soname = True link_target.force_soname = True
class Generator(HoldableObject): class Generator(HoldableObject):

@ -146,7 +146,7 @@ def cmake_defines_to_args(raw: T.Any, permissive: bool = False) -> T.List[str]:
return res return res
# TODO: this functuin will become obsolete once the `cmake_args` kwarg is dropped # TODO: this function will become obsolete once the `cmake_args` kwarg is dropped
def check_cmake_args(args: T.List[str]) -> T.List[str]: def check_cmake_args(args: T.List[str]) -> T.List[str]:
res = [] # type: T.List[str] res = [] # type: T.List[str]
dis = ['-D' + x for x in blacklist_cmake_defs] dis = ['-D' + x for x in blacklist_cmake_defs]

@ -288,7 +288,7 @@ class CMakeTraceParser:
raise CMakeException(f'CMake: {function}() {error}\n{tline}') raise CMakeException(f'CMake: {function}() {error}\n{tline}')
def _cmake_set(self, tline: CMakeTraceLine) -> None: def _cmake_set(self, tline: CMakeTraceLine) -> None:
"""Handler for the CMake set() function in all variaties. """Handler for the CMake set() function in all varieties.
comes in three flavors: comes in three flavors:
set(<var> <value> [PARENT_SCOPE]) set(<var> <value> [PARENT_SCOPE])
@ -509,7 +509,7 @@ class CMakeTraceParser:
targets += curr.split(';') targets += curr.split(';')
if not args: if not args:
return self._gen_exception('set_property', 'faild to parse argument list', tline) return self._gen_exception('set_property', 'failed to parse argument list', tline)
if len(args) == 1: if len(args) == 1:
# Tries to set property to nothing so nothing has to be done # Tries to set property to nothing so nothing has to be done
@ -575,7 +575,7 @@ class CMakeTraceParser:
targets.append(curr) targets.append(curr)
# Now we need to try to reconsitute the original quoted format of the # Now we need to try to reconstitute the original quoted format of the
# arguments, as a property value could have spaces in it. Unlike # arguments, as a property value could have spaces in it. Unlike
# set_property() this is not context free. There are two approaches I # set_property() this is not context free. There are two approaches I
# can think of, both have drawbacks: # can think of, both have drawbacks:
@ -586,7 +586,7 @@ class CMakeTraceParser:
# #
# Neither of these is awesome for obvious reasons. I'm going to try # Neither of these is awesome for obvious reasons. I'm going to try
# option 1 first and fall back to 2, as 1 requires less code and less # option 1 first and fall back to 2, as 1 requires less code and less
# synchroniztion for cmake changes. # synchronization for cmake changes.
# #
# With the JSON output format, introduced in CMake 3.17, spaces are # With the JSON output format, introduced in CMake 3.17, spaces are
# handled properly and we don't have to do either options # handled properly and we don't have to do either options

@ -1228,7 +1228,7 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
mode: CompileCheckMode = CompileCheckMode.COMPILE) -> CompilerArgs: mode: CompileCheckMode = CompileCheckMode.COMPILE) -> CompilerArgs:
"""Arguments to pass the build_wrapper helper. """Arguments to pass the build_wrapper helper.
This generally needs to be set on a per-language baises. It provides This generally needs to be set on a per-language basis. It provides
a hook for languages to handle dependencies and extra args. The base a hook for languages to handle dependencies and extra args. The base
implementation handles the most common cases, namely adding the implementation handles the most common cases, namely adding the
check_arguments, unwrapping dependencies, and appending extra args. check_arguments, unwrapping dependencies, and appending extra args.
@ -1266,7 +1266,7 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
mode: str = 'compile', want_output: bool = False, mode: str = 'compile', want_output: bool = False,
disable_cache: bool = False, disable_cache: bool = False,
temp_dir: str = None) -> T.Iterator[T.Optional[CompileResult]]: temp_dir: str = None) -> T.Iterator[T.Optional[CompileResult]]:
"""Helper for getting a cacched value when possible. """Helper for getting a cached value when possible.
This method isn't meant to be called externally, it's mean to be This method isn't meant to be called externally, it's mean to be
wrapped by other methods like compiles() and links(). wrapped by other methods like compiles() and links().
@ -1361,7 +1361,7 @@ def get_global_options(lang: str,
# If the compiler acts as a linker driver, and we're using the # If the compiler acts as a linker driver, and we're using the
# environment variable flags for both the compiler and linker # environment variable flags for both the compiler and linker
# arguments, then put the compiler flags in the linker flags as well. # arguments, then put the compiler flags in the linker flags as well.
# This is how autotools works, and the env vars freature is for # This is how autotools works, and the env vars feature is for
# autotools compatibility. # autotools compatibility.
largs.extend_value(comp_options) largs.extend_value(comp_options)

@ -382,7 +382,7 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin
if 'Arm C/C++/Fortran Compiler' in out: if 'Arm C/C++/Fortran Compiler' in out:
arm_ver_match = re.search(r'version (\d+)\.(\d+)\.?(\d+)? \(build number (\d+)\)', out) arm_ver_match = re.search(r'version (\d+)\.(\d+)\.?(\d+)? \(build number (\d+)\)', out)
assert arm_ver_match is not None, 'for mypy' # because mypy *should* be complaning that this could be None assert arm_ver_match is not None, 'for mypy' # because mypy *should* be complaining that this could be None
version = '.'.join([x for x in arm_ver_match.groups() if x is not None]) version = '.'.join([x for x in arm_ver_match.groups() if x is not None])
if lang == 'c': if lang == 'c':
cls = c.ArmLtdClangCCompiler cls = c.ArmLtdClangCCompiler
@ -667,7 +667,7 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C
if 'Arm C/C++/Fortran Compiler' in out: if 'Arm C/C++/Fortran Compiler' in out:
cls = fortran.ArmLtdFlangFortranCompiler cls = fortran.ArmLtdFlangFortranCompiler
arm_ver_match = re.search(r'version (\d+)\.(\d+)\.?(\d+)? \(build number (\d+)\)', out) arm_ver_match = re.search(r'version (\d+)\.(\d+)\.?(\d+)? \(build number (\d+)\)', out)
assert arm_ver_match is not None, 'for mypy' # because mypy *should* be complaning that this could be None assert arm_ver_match is not None, 'for mypy' # because mypy *should* be complaining that this could be None
version = '.'.join([x for x in arm_ver_match.groups() if x is not None]) version = '.'.join([x for x in arm_ver_match.groups() if x is not None])
linker = guess_nix_linker(env, compiler, cls, version, for_machine) linker = guess_nix_linker(env, compiler, cls, version, for_machine)
return cls( return cls(
@ -1073,7 +1073,7 @@ def detect_d_compiler(env: 'Environment', for_machine: MachineChoice) -> Compile
if 'LLVM D compiler' in out: if 'LLVM D compiler' in out:
cls = d.LLVMDCompiler cls = d.LLVMDCompiler
# LDC seems to require a file # LDC seems to require a file
# We cannot use NamedTemproraryFile on windows, its documented # We cannot use NamedTemporaryFile on windows, its documented
# to not work for our uses. So, just use mkstemp and only have # to not work for our uses. So, just use mkstemp and only have
# one path for simplicity. # one path for simplicity.
o, f = tempfile.mkstemp('.d') o, f = tempfile.mkstemp('.d')
@ -1111,7 +1111,7 @@ def detect_d_compiler(env: 'Environment', for_machine: MachineChoice) -> Compile
elif 'The D Language Foundation' in out or 'Digital Mars' in out: elif 'The D Language Foundation' in out or 'Digital Mars' in out:
cls = d.DmdDCompiler cls = d.DmdDCompiler
# DMD seems to require a file # DMD seems to require a file
# We cannot use NamedTemproraryFile on windows, its documented # We cannot use NamedTemporaryFile on windows, its documented
# to not work for our uses. So, just use mkstemp and only have # to not work for our uses. So, just use mkstemp and only have
# one path for simplicity. # one path for simplicity.
o, f = tempfile.mkstemp('.d') o, f = tempfile.mkstemp('.d')

@ -16,7 +16,7 @@ from __future__ import annotations
"""Mixin classes to be shared between C and C++ compilers. """Mixin classes to be shared between C and C++ compilers.
Without this we'll end up with awful diamond inherintance problems. The goal Without this we'll end up with awful diamond inheritance problems. The goal
of this is to have mixin's, which are classes that are designed *not* to be of this is to have mixin's, which are classes that are designed *not* to be
standalone, they only work through inheritance. standalone, they only work through inheritance.
""" """
@ -432,7 +432,7 @@ class CLikeCompiler(Compiler):
extra_args: T.Union[None, arglist.CompilerArgs, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]], extra_args: T.Union[None, arglist.CompilerArgs, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]],
dependencies: T.Optional[T.List['Dependency']], dependencies: T.Optional[T.List['Dependency']],
mode: CompileCheckMode = CompileCheckMode.COMPILE) -> arglist.CompilerArgs: mode: CompileCheckMode = CompileCheckMode.COMPILE) -> arglist.CompilerArgs:
# TODO: the caller should handle the listfing of these arguments # TODO: the caller should handle the listing of these arguments
if extra_args is None: if extra_args is None:
extra_args = [] extra_args = []
else: else:

@ -423,7 +423,7 @@ class MSVCCompiler(VisualStudioLikeCompiler):
def __init__(self, target: str): def __init__(self, target: str):
super().__init__(target) super().__init__(target)
# Visual Studio 2013 and erlier don't support the /utf-8 argument. # Visual Studio 2013 and earlier don't support the /utf-8 argument.
# We want to remove it. We also want to make an explicit copy so we # We want to remove it. We also want to make an explicit copy so we
# don't mutate class constant state # don't mutate class constant state
if mesonlib.version_compare(self.version, '<19.00') and '/utf-8' in self.always_args: if mesonlib.version_compare(self.version, '<19.00') and '/utf-8' in self.always_args:

@ -472,7 +472,7 @@ class CoreData:
# want to overwrite options for such subprojects. # want to overwrite options for such subprojects.
self.initialized_subprojects: T.Set[str] = set() self.initialized_subprojects: T.Set[str] = set()
# For host == build configuraitons these caches should be the same. # For host == build configurations these caches should be the same.
self.deps: PerMachine[DependencyCache] = PerMachineDefaultable.default( self.deps: PerMachine[DependencyCache] = PerMachineDefaultable.default(
self.is_cross_build(), self.is_cross_build(),
DependencyCache(self.options, MachineChoice.BUILD), DependencyCache(self.options, MachineChoice.BUILD),
@ -586,7 +586,7 @@ class CoreData:
except TypeError: except TypeError:
return value return value
if option.name.endswith('dir') and value.is_absolute() and \ if option.name.endswith('dir') and value.is_absolute() and \
option not in BULITIN_DIR_NOPREFIX_OPTIONS: option not in BUILTIN_DIR_NOPREFIX_OPTIONS:
try: try:
# Try to relativize the path. # Try to relativize the path.
value = value.relative_to(prefix) value = value.relative_to(prefix)
@ -707,7 +707,7 @@ class CoreData:
elif key.name in {'wrap_mode', 'force_fallback_for'}: elif key.name in {'wrap_mode', 'force_fallback_for'}:
# We could have the system dependency cached for a dependency that # We could have the system dependency cached for a dependency that
# is now forced to use subproject fallback. We probably could have # is now forced to use subproject fallback. We probably could have
# more fine grained cache invalidation, but better be safe. # more fine-grained cache invalidation, but better be safe.
self.clear_deps_cache() self.clear_deps_cache()
dirty = True dirty = True
@ -838,7 +838,7 @@ class CoreData:
if pfk in options: if pfk in options:
prefix = self.sanitize_prefix(options[pfk]) prefix = self.sanitize_prefix(options[pfk])
dirty |= self.options[OptionKey('prefix')].set_value(prefix) dirty |= self.options[OptionKey('prefix')].set_value(prefix)
for key in BULITIN_DIR_NOPREFIX_OPTIONS: for key in BUILTIN_DIR_NOPREFIX_OPTIONS:
if key not in options: if key not in options:
dirty |= self.options[key].set_value(BUILTIN_OPTIONS[key].prefixed_default(key, prefix)) dirty |= self.options[key].set_value(BUILTIN_OPTIONS[key].prefixed_default(key, prefix))
@ -862,7 +862,7 @@ class CoreData:
def set_default_options(self, default_options: T.MutableMapping[OptionKey, str], subproject: str, env: 'Environment') -> None: def set_default_options(self, default_options: T.MutableMapping[OptionKey, str], subproject: str, env: 'Environment') -> None:
# Main project can set default options on subprojects, but subprojects # Main project can set default options on subprojects, but subprojects
# can only set default options on themself. # can only set default options on themselves.
# Preserve order: if env.options has 'buildtype' it must come after # Preserve order: if env.options has 'buildtype' it must come after
# 'optimization' if it is in default_options. # 'optimization' if it is in default_options.
options: T.MutableMapping[OptionKey, T.Any] = OrderedDict() options: T.MutableMapping[OptionKey, T.Any] = OrderedDict()
@ -1194,7 +1194,7 @@ class BuiltinOption(T.Generic[_T, _U]):
if self.opt_type in [UserComboOption, UserIntegerOption]: if self.opt_type in [UserComboOption, UserIntegerOption]:
return self.default return self.default
try: try:
return BULITIN_DIR_NOPREFIX_OPTIONS[name][prefix] return BUILTIN_DIR_NOPREFIX_OPTIONS[name][prefix]
except KeyError: except KeyError:
pass pass
return self.default return self.default
@ -1283,7 +1283,7 @@ BUILTIN_OPTIONS_PER_MACHINE: 'MutableKeyedOptionDictType' = OrderedDict([
# Special prefix-dependent defaults for installation directories that reside in # Special prefix-dependent defaults for installation directories that reside in
# a path outside of the prefix in FHS and common usage. # a path outside of the prefix in FHS and common usage.
BULITIN_DIR_NOPREFIX_OPTIONS: T.Dict[OptionKey, T.Dict[str, str]] = { BUILTIN_DIR_NOPREFIX_OPTIONS: T.Dict[OptionKey, T.Dict[str, str]] = {
OptionKey('sysconfdir'): {'/usr': '/etc'}, OptionKey('sysconfdir'): {'/usr': '/etc'},
OptionKey('localstatedir'): {'/usr': '/var', '/usr/local': '/var/local'}, OptionKey('localstatedir'): {'/usr': '/var', '/usr/local': '/var/local'},
OptionKey('sharedstatedir'): {'/usr': '/var/lib', '/usr/local': '/var/local/lib'}, OptionKey('sharedstatedir'): {'/usr': '/var/lib', '/usr/local': '/var/local/lib'},

@ -80,7 +80,7 @@ if T.TYPE_CHECKING:
# 2. Find all boost libraries # 2. Find all boost libraries
# 2.1 Add all libraries in lib* # 2.1 Add all libraries in lib*
# 2.2 Filter out non boost libraries # 2.2 Filter out non boost libraries
# 2.3 Filter the renaining libraries based on the meson requirements (static/shared, etc.) # 2.3 Filter the remaining libraries based on the meson requirements (static/shared, etc.)
# 2.4 Ensure that all libraries have the same boost tag (and are thus compatible) # 2.4 Ensure that all libraries have the same boost tag (and are thus compatible)
# 3. Select the libraries matching the requested modules # 3. Select the libraries matching the requested modules
@ -243,7 +243,7 @@ class BoostLibraryFile():
return any(self.mod_name.startswith(x) for x in BoostLibraryFile.boost_python_libs) return any(self.mod_name.startswith(x) for x in BoostLibraryFile.boost_python_libs)
def fix_python_name(self, tags: T.List[str]) -> T.List[str]: def fix_python_name(self, tags: T.List[str]) -> T.List[str]:
# Handle the boost_python naming madeness. # Handle the boost_python naming madness.
# See https://github.com/mesonbuild/meson/issues/4788 for some distro # See https://github.com/mesonbuild/meson/issues/4788 for some distro
# specific naming variations. # specific naming variations.
other_tags = [] # type: T.List[str] other_tags = [] # type: T.List[str]

@ -489,7 +489,7 @@ class CMakeDependency(ExternalDependency):
libs_raw = [x for x in self.traceparser.get_cmake_var('PACKAGE_LIBRARIES') if x] libs_raw = [x for x in self.traceparser.get_cmake_var('PACKAGE_LIBRARIES') if x]
# CMake has a "fun" API, where certain keywords describing # CMake has a "fun" API, where certain keywords describing
# configurations can be in the *_LIBRARIES vraiables. See: # configurations can be in the *_LIBRARIES variables. See:
# - https://github.com/mesonbuild/meson/issues/9197 # - https://github.com/mesonbuild/meson/issues/9197
# - https://gitlab.freedesktop.org/libnice/libnice/-/issues/140 # - https://gitlab.freedesktop.org/libnice/libnice/-/issues/140
# - https://cmake.org/cmake/help/latest/command/target_link_libraries.html#overview (the last point in the section) # - https://cmake.org/cmake/help/latest/command/target_link_libraries.html#overview (the last point in the section)
@ -505,7 +505,7 @@ class CMakeDependency(ExternalDependency):
libs += [i] libs += [i]
# According to the CMake docs, a keyword only works for the # According to the CMake docs, a keyword only works for the
# directly the following item and all items without a keyword # directly the following item and all items without a keyword
# are implizitly `general` # are implicitly `general`
cfg_matches = True cfg_matches = True
# Try to use old style variables if no module is specified # Try to use old style variables if no module is specified

@ -42,7 +42,7 @@ function(meson_llvm_cmake_dynamic_available mod out)
return() return()
endif() endif()
# Complex heurisic to filter all pseudo-components and skip invalid names # Complex heuristic to filter all pseudo-components and skip invalid names
# LLVM_DYLIB_COMPONENTS will be 'all', because in other case we returned # LLVM_DYLIB_COMPONENTS will be 'all', because in other case we returned
# in previous check. 'all' is also handled there. # in previous check. 'all' is also handled there.
set(llvm_pseudo_components "native" "backend" "engine" "all-targets") set(llvm_pseudo_components "native" "backend" "engine" "all-targets")

@ -332,7 +332,7 @@ class CursesSystemDependency(SystemDependency):
('curses', ['curses.h']), ('curses', ['curses.h']),
] ]
# Not sure how else to elegently break out of both loops # Not sure how else to elegantly break out of both loops
for lib, headers in candidates: for lib, headers in candidates:
l = self.clib_compiler.find_library(lib, env, []) l = self.clib_compiler.find_library(lib, env, [])
if l: if l:

@ -415,7 +415,7 @@ class PkgConfigDependency(ExternalDependency):
else: else:
variable = out.strip() variable = out.strip()
# pkg-config doesn't distinguish between empty and non-existent variables # pkg-config doesn't distinguish between empty and nonexistent variables
# use the variable list to check for variable existence # use the variable list to check for variable existence
if not variable: if not variable:
ret, out, _ = self._call_pkgbin(['--print-variables', self.name]) ret, out, _ = self._call_pkgbin(['--print-variables', self.name])

@ -260,7 +260,7 @@ class QmakeQtDependency(_QtBase, ConfigToolDependency, metaclass=abc.ABCMeta):
self.tools = [f'qmake{self.qtver}', f'qmake-{self.name}', 'qmake'] self.tools = [f'qmake{self.qtver}', f'qmake-{self.name}', 'qmake']
# Add additional constraints that the Qt version is met, but preserve # Add additional constraints that the Qt version is met, but preserve
# any version requrements the user has set as well. For example, if Qt5 # any version requirements the user has set as well. For example, if Qt5
# is requested, add "">= 5, < 6", but if the user has ">= 5.6", don't # is requested, add "">= 5, < 6", but if the user has ">= 5.6", don't
# lose that. # lose that.
kwargs = kwargs.copy() kwargs = kwargs.copy()
@ -325,7 +325,7 @@ class QmakeQtDependency(_QtBase, ConfigToolDependency, metaclass=abc.ABCMeta):
self.compile_args.append('-I' + directory) self.compile_args.append('-I' + directory)
libfiles = self.clib_compiler.find_library( libfiles = self.clib_compiler.find_library(
self.qtpkgname + module + modules_lib_suffix, self.env, self.qtpkgname + module + modules_lib_suffix, self.env,
mesonlib.listify(libdir)) # TODO: shouldn't be necissary mesonlib.listify(libdir)) # TODO: shouldn't be necessary
if libfiles: if libfiles:
libfile = libfiles[0] libfile = libfiles[0]
else: else:

@ -28,7 +28,7 @@ from pathlib import Path
# and cross file currently), and also assists with the reading environment # and cross file currently), and also assists with the reading environment
# variables. # variables.
# #
# At this time there isn't an ironclad difference between this an other sources # At this time there isn't an ironclad difference between this and other sources
# of state like `coredata`. But one rough guide is much what is in `coredata` is # of state like `coredata`. But one rough guide is much what is in `coredata` is
# the *output* of the configuration process: the final decisions after tests. # the *output* of the configuration process: the final decisions after tests.
# This, on the other hand has *inputs*. The config files are parsed, but # This, on the other hand has *inputs*. The config files are parsed, but
@ -167,7 +167,7 @@ class Properties:
return language + '_stdlib' in self.properties return language + '_stdlib' in self.properties
# Some of get_stdlib, get_root, get_sys_root are wider than is actually # Some of get_stdlib, get_root, get_sys_root are wider than is actually
# true, but without heterogenious dict annotations it's not practical to # true, but without heterogeneous dict annotations it's not practical to
# narrow them # narrow them
def get_stdlib(self, language: str) -> T.Union[str, T.List[str]]: def get_stdlib(self, language: str) -> T.Union[str, T.List[str]]:
stdlib = self.properties[language + '_stdlib'] stdlib = self.properties[language + '_stdlib']

@ -674,7 +674,7 @@ class Environment:
# time) until we're instantiating that `Compiler` # time) until we're instantiating that `Compiler`
# object. This is required so that passing # object. This is required so that passing
# `-Dc_args=` on the command line and `$CFLAGS` # `-Dc_args=` on the command line and `$CFLAGS`
# have subtely different behavior. `$CFLAGS` will be # have subtly different behavior. `$CFLAGS` will be
# added to the linker command line if the compiler # added to the linker command line if the compiler
# acts as a linker driver, `-Dc_args` will not. # acts as a linker driver, `-Dc_args` will not.
# #

@ -1,4 +1,4 @@
# SPDX-Licnese-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# Copyright 2012-2021 The Meson development team # Copyright 2012-2021 The Meson development team
# Copyright © 2021 Intel Corporation # Copyright © 2021 Intel Corporation
from __future__ import annotations from __future__ import annotations
@ -60,7 +60,7 @@ if T.TYPE_CHECKING:
args: T.List[str] args: T.List[str]
dependencies: T.List[dependencies.Dependency] dependencies: T.List[dependencies.Dependency]
class CompupteIntKW(CommonKW): class ComputeIntKW(CommonKW):
guess: T.Optional[int] guess: T.Optional[int]
high: T.Optional[int] high: T.Optional[int]
@ -405,7 +405,7 @@ class CompilerHolder(ObjectHolder['Compiler']):
KwargInfo('guess', (int, NoneType)), KwargInfo('guess', (int, NoneType)),
*_COMMON_KWS, *_COMMON_KWS,
) )
def compute_int_method(self, args: T.Tuple[str], kwargs: 'CompupteIntKW') -> int: def compute_int_method(self, args: T.Tuple[str], kwargs: 'ComputeIntKW') -> int:
expression = args[0] expression = args[0]
extra_args = functools.partial(self._determine_args, kwargs['no_builtin_args'], kwargs['include_directories'], kwargs['args']) extra_args = functools.partial(self._determine_args, kwargs['no_builtin_args'], kwargs['include_directories'], kwargs['args'])
deps, msg = self._determine_dependencies(kwargs['dependencies'], compile_only=self.compiler.is_cross) deps, msg = self._determine_dependencies(kwargs['dependencies'], compile_only=self.compiler.is_cross)

@ -235,7 +235,7 @@ class InterpreterRuleRelaxation(Enum):
generate a Meson AST via introspection, etc. generate a Meson AST via introspection, etc.
''' '''
ALLOW_BUILD_DIR_FILE_REFFERENCES = 1 ALLOW_BUILD_DIR_FILE_REFERENCES = 1
permitted_dependency_kwargs = { permitted_dependency_kwargs = {
'allow_fallback', 'allow_fallback',
@ -1001,7 +1001,7 @@ class Interpreter(InterpreterBase, HoldableObject):
# Duplicates are possible when subproject uses files from project root # Duplicates are possible when subproject uses files from project root
if build_def_files: if build_def_files:
self.build_def_files.update(build_def_files) self.build_def_files.update(build_def_files)
# We always need the subi.build_def_files, to propgate sub-sub-projects # We always need the subi.build_def_files, to propagate sub-sub-projects
self.build_def_files.update(subi.build_def_files) self.build_def_files.update(subi.build_def_files)
self.build.merge(subi.build) self.build.merge(subi.build)
self.build.subprojects[subp_name] = subi.project_version self.build.subprojects[subp_name] = subi.project_version
@ -1048,7 +1048,7 @@ class Interpreter(InterpreterBase, HoldableObject):
[str(f) for f in cm_int.bs_files], [str(f) for f in cm_int.bs_files],
is_translated=True, is_translated=True,
relaxations={ relaxations={
InterpreterRuleRelaxation.ALLOW_BUILD_DIR_FILE_REFFERENCES, InterpreterRuleRelaxation.ALLOW_BUILD_DIR_FILE_REFERENCES,
} }
) )
result.cm_interpreter = cm_int result.cm_interpreter = cm_int
@ -1365,7 +1365,7 @@ class Interpreter(InterpreterBase, HoldableObject):
section, values, kwargs['bool_yn'], kwargs['list_sep'], self.subproject) section, values, kwargs['bool_yn'], kwargs['list_sep'], self.subproject)
def _print_summary(self) -> None: def _print_summary(self) -> None:
# Add automatic 'Supbrojects' section in main project. # Add automatic 'Subprojects' section in main project.
all_subprojects = collections.OrderedDict() all_subprojects = collections.OrderedDict()
for name, subp in sorted(self.subprojects.items()): for name, subp in sorted(self.subprojects.items()):
value = subp.found() value = subp.found()
@ -1997,7 +1997,7 @@ class Interpreter(InterpreterBase, HoldableObject):
build_by_default = kwargs['build_always'] build_by_default = kwargs['build_always']
build_always_stale = kwargs['build_by_default'] build_always_stale = kwargs['build_by_default']
# These are are nullaable so that we can know whether they're explicitly # These are nullable so that we can know whether they're explicitly
# set or not. If they haven't been overwritten, set them to their true # set or not. If they haven't been overwritten, set them to their true
# default # default
if build_by_default is None: if build_by_default is None:
@ -2019,9 +2019,9 @@ class Interpreter(InterpreterBase, HoldableObject):
command[0] = self.find_program_impl([command[0]]) command[0] = self.find_program_impl([command[0]])
if len(inputs) > 1 and kwargs['feed']: if len(inputs) > 1 and kwargs['feed']:
raise InvalidArguments('custom_target: "feed" keyword argument can only be used used with a single input') raise InvalidArguments('custom_target: "feed" keyword argument can only be used with a single input')
if len(kwargs['output']) > 1 and kwargs['capture']: if len(kwargs['output']) > 1 and kwargs['capture']:
raise InvalidArguments('custom_target: "capture" keyword argument can only be used used with a single output') raise InvalidArguments('custom_target: "capture" keyword argument can only be used with a single output')
if kwargs['capture'] and kwargs['console']: if kwargs['capture'] and kwargs['console']:
raise InvalidArguments('custom_target: "capture" and "console" keyword arguments are mutually exclusive') raise InvalidArguments('custom_target: "capture" and "console" keyword arguments are mutually exclusive')
for c in command: for c in command:
@ -2370,7 +2370,7 @@ class Interpreter(InterpreterBase, HoldableObject):
absname = os.path.join(self.environment.get_source_dir(), buildfilename) absname = os.path.join(self.environment.get_source_dir(), buildfilename)
if not os.path.isfile(absname): if not os.path.isfile(absname):
self.subdir = prev_subdir self.subdir = prev_subdir
raise InterpreterException(f"Non-existent build file '{buildfilename!s}'") raise InterpreterException(f"Nonexistent build file '{buildfilename!s}'")
with open(absname, encoding='utf-8') as f: with open(absname, encoding='utf-8') as f:
code = f.read() code = f.read()
assert isinstance(code, str) assert isinstance(code, str)
@ -3034,7 +3034,7 @@ class Interpreter(InterpreterBase, HoldableObject):
inputtype = 'directory' inputtype = 'directory'
else: else:
inputtype = 'file' inputtype = 'file'
if InterpreterRuleRelaxation.ALLOW_BUILD_DIR_FILE_REFFERENCES in self.relaxations and builddir in norm.parents: if InterpreterRuleRelaxation.ALLOW_BUILD_DIR_FILE_REFERENCES in self.relaxations and builddir in norm.parents:
return return
if srcdir not in norm.parents: if srcdir not in norm.parents:
# Grabbing files outside the source tree is ok. # Grabbing files outside the source tree is ok.

@ -57,7 +57,7 @@ class FuncTest(FuncBenchmark):
"""Keyword Arguments for `test` """Keyword Arguments for `test`
`test` only adds the `is_prallel` argument over benchmark, so inherintance `test` only adds the `is_parallel` argument over benchmark, so inheritance
is helpful here. is helpful here.
""" """

@ -377,7 +377,7 @@ class MesonMain(MesonInterpreterObject):
def _override_dependency_impl(self, name: str, dep: dependencies.Dependency, kwargs: 'FuncOverrideDependency', def _override_dependency_impl(self, name: str, dep: dependencies.Dependency, kwargs: 'FuncOverrideDependency',
static: T.Optional[bool], permissive: bool = False) -> None: static: T.Optional[bool], permissive: bool = False) -> None:
# We need the cast here as get_dep_identifier works on such a dict, # We need the cast here as get_dep_identifier works on such a dict,
# which FuncOverrideDependency is, but mypy can't fgure that out # which FuncOverrideDependency is, but mypy can't figure that out
nkwargs = T.cast('T.Dict[str, T.Any]', kwargs.copy()) nkwargs = T.cast('T.Dict[str, T.Any]', kwargs.copy())
if static is None: if static is None:
del nkwargs['static'] del nkwargs['static']

@ -87,9 +87,9 @@ def _install_mode_validator(mode: T.List[T.Union[str, bool, int]]) -> T.Optional
return f'permission character 9 must be "-", "t", "T", or "x", not {perms[8]}' return f'permission character 9 must be "-", "t", "T", or "x", not {perms[8]}'
if len(mode) >= 2 and not isinstance(mode[1], (int, str, bool)): if len(mode) >= 2 and not isinstance(mode[1], (int, str, bool)):
return 'second componenent can only be a string, number, or False' return 'second component can only be a string, number, or False'
if len(mode) >= 3 and not isinstance(mode[2], (int, str, bool)): if len(mode) >= 3 and not isinstance(mode[2], (int, str, bool)):
return 'third componenent can only be a string, number, or False' return 'third component can only be a string, number, or False'
return None return None
@ -211,7 +211,7 @@ def _env_validator(value: T.Union[EnvironmentVariables, T.List['TYPE_var'], T.Di
return None return None
def _options_validator(value: T.Union[EnvironmentVariables, T.List['TYPE_var'], T.Dict[str, 'TYPE_var'], str, None]) -> T.Optional[str]: def _options_validator(value: T.Union[EnvironmentVariables, T.List['TYPE_var'], T.Dict[str, 'TYPE_var'], str, None]) -> T.Optional[str]:
# Reusing the env validator is a littl overkill, but nicer than duplicating the code # Reusing the env validator is a little overkill, but nicer than duplicating the code
return _env_validator(value, allow_dict_list=False) return _env_validator(value, allow_dict_list=False)
def split_equal_string(input: str) -> T.Tuple[str, str]: def split_equal_string(input: str) -> T.Tuple[str, str]:

@ -470,7 +470,7 @@ def typed_kwargs(name: str, *types: KwargInfo, allow_unknown: bool = False) -> T
information. For non-required values it sets the value to a default, which information. For non-required values it sets the value to a default, which
means the value will always be provided. means the value will always be provided.
If type tyhpe is a :class:ContainerTypeInfo, then the default value will be If type is a :class:ContainerTypeInfo, then the default value will be
passed as an argument to the container initializer, making a shallow copy passed as an argument to the container initializer, making a shallow copy
:param name: the name of the function, including the object it's attached to :param name: the name of the function, including the object it's attached to
@ -583,7 +583,7 @@ def typed_kwargs(name: str, *types: KwargInfo, allow_unknown: bool = False) -> T
else: else:
# set the value to the default, this ensuring all kwargs are present # set the value to the default, this ensuring all kwargs are present
# This both simplifies the typing checking and the usage # This both simplifies the typing checking and the usage
assert check_value_type(types_tuple, info.default), f'In funcion {name} default value of {info.name} is not a valid type, got {type(info.default)} expected {types_description(types_tuple)}' assert check_value_type(types_tuple, info.default), f'In function {name} default value of {info.name} is not a valid type, got {type(info.default)} expected {types_description(types_tuple)}'
# Create a shallow copy of the container. This allows mutable # Create a shallow copy of the container. This allows mutable
# types to be used safely as default values # types to be used safely as default values
kwargs[info.name] = copy.copy(info.default) kwargs[info.name] = copy.copy(info.default)

@ -525,14 +525,14 @@ class InterpreterBase:
return None return None
def method_call(self, node: mparser.MethodNode) -> T.Optional[InterpreterObject]: def method_call(self, node: mparser.MethodNode) -> T.Optional[InterpreterObject]:
invokable = node.source_object invocable = node.source_object
obj: T.Optional[InterpreterObject] obj: T.Optional[InterpreterObject]
if isinstance(invokable, mparser.IdNode): if isinstance(invocable, mparser.IdNode):
object_display_name = f'variable "{invokable.value}"' object_display_name = f'variable "{invocable.value}"'
obj = self.get_variable(invokable.value) obj = self.get_variable(invocable.value)
else: else:
object_display_name = invokable.__class__.__name__ object_display_name = invocable.__class__.__name__
obj = self.evaluate_statement(invokable) obj = self.evaluate_statement(invocable)
method_name = node.name method_name = node.name
(h_args, h_kwargs) = self.reduce_arguments(node.args) (h_args, h_kwargs) = self.reduce_arguments(node.args)
(args, kwargs) = self._unholder_args(h_args, h_kwargs) (args, kwargs) = self._unholder_args(h_args, h_kwargs)

@ -96,7 +96,7 @@ def guess_win_linker(env: 'Environment', compiler: T.List[str], comp_class: T.Ty
if value is not None and invoked_directly: if value is not None and invoked_directly:
compiler = value compiler = value
# We've already hanedled the non-direct case above # We've already handled the non-direct case above
p, o, e = Popen_safe(compiler + check_args) p, o, e = Popen_safe(compiler + check_args)
if 'LLD' in o.split('\n', maxsplit=1)[0]: if 'LLD' in o.split('\n', maxsplit=1)[0]:

@ -928,7 +928,7 @@ class WASMDynamicLinker(GnuLikeDynamicLinkerMixin, PosixDynamicLinkerMixin, Dyna
class CcrxDynamicLinker(DynamicLinker): class CcrxDynamicLinker(DynamicLinker):
"""Linker for Renesis CCrx compiler.""" """Linker for Renesas CCrx compiler."""
id = 'rlink' id = 'rlink'
@ -1216,7 +1216,7 @@ NvidiaHPC_StaticLinker = PGIStaticLinker
class VisualStudioLikeLinkerMixin: class VisualStudioLikeLinkerMixin:
"""Mixin class for for dynamic linkers that act like Microsoft's link.exe.""" """Mixin class for dynamic linkers that act like Microsoft's link.exe."""
if T.TYPE_CHECKING: if T.TYPE_CHECKING:
for_machine = MachineChoice.HOST for_machine = MachineChoice.HOST

@ -207,10 +207,10 @@ def set_mode(path: str, mode: T.Optional['FileMode'], default_umask: T.Union[str
except PermissionError as e: except PermissionError as e:
print(f'{path!r}: Unable to set owner {mode.owner!r} and group {mode.group!r}: {e.strerror}, ignoring...') print(f'{path!r}: Unable to set owner {mode.owner!r} and group {mode.group!r}: {e.strerror}, ignoring...')
except LookupError: except LookupError:
print(f'{path!r}: Non-existent owner {mode.owner!r} or group {mode.group!r}: ignoring...') print(f'{path!r}: Nonexistent owner {mode.owner!r} or group {mode.group!r}: ignoring...')
except OSError as e: except OSError as e:
if e.errno == errno.EINVAL: if e.errno == errno.EINVAL:
print(f'{path!r}: Non-existent numeric owner {mode.owner!r} or group {mode.group!r}: ignoring...') print(f'{path!r}: Nonexistent numeric owner {mode.owner!r} or group {mode.group!r}: ignoring...')
else: else:
raise raise
# Must set permissions *after* setting owner/group otherwise the # Must set permissions *after* setting owner/group otherwise the

@ -2149,7 +2149,7 @@ class GnomeModule(ExtensionModule):
) )
# So to try our best to get this to just work we need: # So to try our best to get this to just work we need:
# - link with with the correct library # - link with the correct library
# - include the vapi and dependent vapi files in sources # - include the vapi and dependent vapi files in sources
# - add relevant directories to include dirs # - add relevant directories to include dirs
incs = [build.IncludeDirs(state.subdir, ['.'] + vapi_includes, False)] incs = [build.IncludeDirs(state.subdir, ['.'] + vapi_includes, False)]

@ -55,7 +55,7 @@ class KeyvalModule(ExtensionModule):
return result return result
@noKwargs @noKwargs
@typed_pos_args('keyval.laod', (str, mesonlib.File)) @typed_pos_args('keyval.load', (str, mesonlib.File))
def load(self, state: 'ModuleState', args: T.Tuple['mesonlib.FileOrString'], kwargs: T.Dict[str, T.Any]) -> T.Dict[str, str]: def load(self, state: 'ModuleState', args: T.Tuple['mesonlib.FileOrString'], kwargs: T.Dict[str, T.Any]) -> T.Dict[str, str]:
s = args[0] s = args[0]
is_built = False is_built = False

@ -164,7 +164,7 @@ class WindowsModule(ExtensionModule):
elif isinstance(src, build.CustomTargetIndex): elif isinstance(src, build.CustomTargetIndex):
FeatureNew.single_use('windows.compile_resource CustomTargetIndex in positional arguments', '0.61.0', FeatureNew.single_use('windows.compile_resource CustomTargetIndex in positional arguments', '0.61.0',
state.subproject, location=state.current_node) state.subproject, location=state.current_node)
# This dance avoids a case where two indexs of the same # This dance avoids a case where two indexes of the same
# target are given as separate arguments. # target are given as separate arguments.
yield (f'{src.get_id()}_{src.target.get_outputs().index(src.output)}', yield (f'{src.get_id()}_{src.target.get_outputs().index(src.output)}',
f'windows_compile_resources_{src.get_filename()}', src) f'windows_compile_resources_{src.get_filename()}', src)

@ -185,7 +185,7 @@ def returncode_to_status(retcode: int) -> str:
# functions here because the status returned by subprocess is munged. It # functions here because the status returned by subprocess is munged. It
# returns a negative value if the process was killed by a signal rather than # returns a negative value if the process was killed by a signal rather than
# the raw status returned by `wait()`. Also, If a shell sits between Meson # the raw status returned by `wait()`. Also, If a shell sits between Meson
# the the actual unit test that shell is likely to convert a termination due # the actual unit test that shell is likely to convert a termination due
# to a signal into an exit status of 128 plus the signal number. # to a signal into an exit status of 128 plus the signal number.
if retcode < 0: if retcode < 0:
signum = -retcode signum = -retcode

@ -354,7 +354,7 @@ class OverrideProgram(ExternalProgram):
def find_external_program(env: 'Environment', for_machine: MachineChoice, name: str, def find_external_program(env: 'Environment', for_machine: MachineChoice, name: str,
display_name: str, default_names: T.List[str], display_name: str, default_names: T.List[str],
allow_default_for_cross: bool = True) -> T.Generator['ExternalProgram', None, None]: allow_default_for_cross: bool = True) -> T.Generator['ExternalProgram', None, None]:
"""Find an external program, chcking the cross file plus any default options.""" """Find an external program, checking the cross file plus any default options."""
# Lookup in cross or machine file. # Lookup in cross or machine file.
potential_cmd = env.lookup_binary_entry(for_machine, name) potential_cmd = env.lookup_binary_entry(for_machine, name)
if potential_cmd is not None: if potential_cmd is not None:

@ -569,27 +569,27 @@ class Rewriter:
if key not in arg_node.kwargs: if key not in arg_node.kwargs:
arg_node.kwargs[key] = None arg_node.kwargs[key] = None
modifyer = kwargs_def[key](arg_node.kwargs[key]) modifier = kwargs_def[key](arg_node.kwargs[key])
if not modifyer.can_modify(): if not modifier.can_modify():
mlog.log(' -- Skipping', mlog.bold(key), 'because it is to complex to modify') mlog.log(' -- Skipping', mlog.bold(key), 'because it is to complex to modify')
# Apply the operation # Apply the operation
val_str = str(val) val_str = str(val)
if cmd['operation'] == 'set': if cmd['operation'] == 'set':
mlog.log(' -- Setting', mlog.bold(key), 'to', mlog.yellow(val_str)) mlog.log(' -- Setting', mlog.bold(key), 'to', mlog.yellow(val_str))
modifyer.set_value(val) modifier.set_value(val)
elif cmd['operation'] == 'add': elif cmd['operation'] == 'add':
mlog.log(' -- Adding', mlog.yellow(val_str), 'to', mlog.bold(key)) mlog.log(' -- Adding', mlog.yellow(val_str), 'to', mlog.bold(key))
modifyer.add_value(val) modifier.add_value(val)
elif cmd['operation'] == 'remove': elif cmd['operation'] == 'remove':
mlog.log(' -- Removing', mlog.yellow(val_str), 'from', mlog.bold(key)) mlog.log(' -- Removing', mlog.yellow(val_str), 'from', mlog.bold(key))
modifyer.remove_value(val) modifier.remove_value(val)
elif cmd['operation'] == 'remove_regex': elif cmd['operation'] == 'remove_regex':
mlog.log(' -- Removing all values matching', mlog.yellow(val_str), 'from', mlog.bold(key)) mlog.log(' -- Removing all values matching', mlog.yellow(val_str), 'from', mlog.bold(key))
modifyer.remove_regex(val) modifier.remove_regex(val)
# Write back the result # Write back the result
arg_node.kwargs[key] = modifyer.get_node() arg_node.kwargs[key] = modifier.get_node()
num_changed += 1 num_changed += 1
# Convert the keys back to IdNode's # Convert the keys back to IdNode's

@ -35,7 +35,7 @@ def run(argsv: T.List[str]) -> int:
commands += [[]] commands += [[]]
continue continue
i = i.replace('"', '') # Remove lefover quotes i = i.replace('"', '') # Remove leftover quotes
commands[-1] += [i] commands[-1] += [i]
# Execute # Execute

@ -350,7 +350,7 @@ class Elf(DataSizes):
sys.exit(msg) sys.exit(msg)
# The linker does read-only string deduplication. If there is a # The linker does read-only string deduplication. If there is a
# string that shares a suffix with the rpath, they might get # string that shares a suffix with the rpath, they might get
# dedupped. This means changing the rpath string might break something # deduped. This means changing the rpath string might break something
# completely unrelated. This has already happened once with X.org. # completely unrelated. This has already happened once with X.org.
# Thus we want to keep this change as small as possible to minimize # Thus we want to keep this change as small as possible to minimize
# the chance of obliterating other strings. It might still happen # the chance of obliterating other strings. It might still happen

@ -2295,7 +2295,7 @@ class OptionKey:
def evolve(self, name: T.Optional[str] = None, subproject: T.Optional[str] = None, def evolve(self, name: T.Optional[str] = None, subproject: T.Optional[str] = None,
machine: T.Optional[MachineChoice] = None, lang: T.Optional[str] = '', machine: T.Optional[MachineChoice] = None, lang: T.Optional[str] = '',
module: T.Optional[str] = '') -> 'OptionKey': module: T.Optional[str] = '') -> 'OptionKey':
"""Create a new copy of this key, but with alterted members. """Create a new copy of this key, but with altered members.
For example: For example:
>>> a = OptionKey('foo', '', MachineChoice.Host) >>> a = OptionKey('foo', '', MachineChoice.Host)
@ -2318,11 +2318,11 @@ class OptionKey:
return self.evolve(subproject='') return self.evolve(subproject='')
def as_build(self) -> 'OptionKey': def as_build(self) -> 'OptionKey':
"""Convenience method for key.evolve(machine=MachinceChoice.BUILD).""" """Convenience method for key.evolve(machine=MachineChoice.BUILD)."""
return self.evolve(machine=MachineChoice.BUILD) return self.evolve(machine=MachineChoice.BUILD)
def as_host(self) -> 'OptionKey': def as_host(self) -> 'OptionKey':
"""Convenience method for key.evolve(machine=MachinceChoice.HOST).""" """Convenience method for key.evolve(machine=MachineChoice.HOST)."""
return self.evolve(machine=MachineChoice.HOST) return self.evolve(machine=MachineChoice.HOST)
def is_backend(self) -> bool: def is_backend(self) -> bool:

@ -70,7 +70,7 @@ def _setup_vsenv(force: bool) -> bool:
) )
bat_info = json.loads(bat_json) bat_info = json.loads(bat_json)
if not bat_info: if not bat_info:
# VS installer instelled but not VS itself maybe? # VS installer installed but not VS itself maybe?
raise MesonException('Could not parse vswhere.exe output') raise MesonException('Could not parse vswhere.exe output')
bat_root = pathlib.Path(bat_info[0]['installationPath']) bat_root = pathlib.Path(bat_info[0]['installationPath'])
if windows_detect_native_arch() == 'arm64': if windows_detect_native_arch() == 'arm64':

@ -153,7 +153,7 @@ class InstalledFile:
if self.language in {'c', 'cpp'}: if self.language in {'c', 'cpp'}:
has_pdb = canonical_compiler == 'msvc' has_pdb = canonical_compiler == 'msvc'
elif self.language == 'd': elif self.language == 'd':
# dmd's optlink does not genearte pdb iles # dmd's optlink does not generate pdb files
has_pdb = env.coredata.compilers.host['d'].linker.id in {'link', 'lld-link'} has_pdb = env.coredata.compilers.host['d'].linker.id in {'link', 'lld-link'}
# Abort if the platform does not match # Abort if the platform does not match

@ -2,5 +2,5 @@ project('cmakeSubTest', ['c', 'cpp'])
cm = import('cmake') cm = import('cmake')
sub_pro = cm.subproject('nothinig', required: false) sub_pro = cm.subproject('nothing', required: false)
assert(not sub_pro.found(), 'subproject found() reports wrong value') assert(not sub_pro.found(), 'subproject found() reports wrong value')

@ -161,7 +161,7 @@ cfile = configure_file(input : 'config.h.in',
install_dir : false, install_dir : false,
configuration : conf) configuration : conf)
# test intsall_dir with install: false # test install_dir with install: false
cfile = configure_file(input : 'config.h.in', cfile = configure_file(input : 'config.h.in',
output : 'do_not_get_installed_in_install_dir.h', output : 'do_not_get_installed_in_install_dir.h',
install : false, install : false,

@ -97,7 +97,7 @@ assert(if_is_not_disabled, 'Disabler in is_variable should not skip blocks')
get_d = get_variable('d6') get_d = get_variable('d6')
assert(is_disabler(get_d), 'get_variable should yield a disabler') assert(is_disabler(get_d), 'get_variable should yield a disabler')
get_fallback_d = get_variable('nonexistant', disabler()) get_fallback_d = get_variable('nonexistent', disabler())
assert(is_disabler(get_fallback_d), 'get_variable fallback should yield a disabler') assert(is_disabler(get_fallback_d), 'get_variable fallback should yield a disabler')
var_true = true var_true = true

@ -18,7 +18,7 @@ assert(tool.found())
assert(tool.full_path() != '') assert(tool.full_path() != '')
assert(tool.full_path() == tool.path()) assert(tool.full_path() == tool.path())
# six_meson_exe is an overritten project executable # six_meson_exe is an overridden project executable
six_prog = find_program('six_meson_exe') six_prog = find_program('six_meson_exe')
assert(six_prog.found()) assert(six_prog.found())
assert(six_prog.full_path() != '') assert(six_prog.full_path() != '')

@ -44,5 +44,5 @@ foreach comp : [meson.get_compiler('c'), meson.get_compiler('cpp')]
# This header exists in the source and the builddir, but we still must not # This header exists in the source and the builddir, but we still must not
# find it since we are looking in the system directories. # find it since we are looking in the system directories.
assert(not comp.check_header(non_existent_header, prefix : fallback), assert(not comp.check_header(non_existent_header, prefix : fallback),
'Found non-existent header.') 'Found nonexistent header.')
endforeach endforeach

@ -10,7 +10,7 @@ disabled_subproj = subproject('disabled_sub', required: get_option('disabled-sub
assert(disabled_subproj.found() == false, 'Disabled subproject should be NOT found') assert(disabled_subproj.found() == false, 'Disabled subproject should be NOT found')
disabled_dep = dependency('', fallback: ['disabled_sub', 'libSub'], required: false) disabled_dep = dependency('', fallback: ['disabled_sub', 'libSub'], required: false)
assert(disabled_dep.found() == false, 'Subprojetc was disabled, it should never be built.') assert(disabled_dep.found() == false, 'Subproject was disabled, it should never be built.')
nothing = executable('nothing', 'nothing.c', dependencies: [disabled_dep]) nothing = executable('nothing', 'nothing.c', dependencies: [disabled_dep])
subproj_with_missing_dep = subproject('auto_sub_with_missing_dep', required: get_option('auto-sub-with-missing-dep')) subproj_with_missing_dep = subproject('auto_sub_with_missing_dep', required: get_option('auto-sub-with-missing-dep'))

@ -11,7 +11,7 @@
#endif #endif
#if !defined(GLOBAL_HOST) && !defined(GLOBAL_BUILD) #if !defined(GLOBAL_HOST) && !defined(GLOBAL_BUILD)
#error "Neither global_host nor glogal_build is set." #error "Neither global_host nor global_build is set."
#endif #endif
#if defined(GLOBAL_HOST) && defined(GLOBAL_BUILD) #if defined(GLOBAL_HOST) && defined(GLOBAL_BUILD)

@ -120,7 +120,7 @@ assert(not fs.is_samepath(f1, 'subdir/subdirfile.txt'), 'is_samepath known bad c
assert(not fs.is_samepath('not-a-path', f2), 'is_samepath should not error if path(s) do not exist') assert(not fs.is_samepath('not-a-path', f2), 'is_samepath should not error if path(s) do not exist')
f = files('meson.build', 'subdir/../meson.build') f = files('meson.build', 'subdir/../meson.build')
assert(fs.is_samepath(f[0], f[1]), 'is_samepath not detercting same files') assert(fs.is_samepath(f[0], f[1]), 'is_samepath not detecting same files')
if not is_windows and build_machine.system() != 'cygwin' if not is_windows and build_machine.system() != 'cygwin'
assert(fs.is_samepath(symlink, 'meson.build'), 'symlink is_samepath fail') assert(fs.is_samepath(symlink, 'meson.build'), 'symlink is_samepath fail')

@ -8,16 +8,16 @@ x = meson.get_external_property('astring', native: true)
assert(x=='mystring', 'did not get native property with native:true and non-cross build.') assert(x=='mystring', 'did not get native property with native:true and non-cross build.')
x = meson.get_external_property('astring', 'fallback', native: false) x = meson.get_external_property('astring', 'fallback', native: false)
assert(x==ref, 'did not get get native property with native:false and non-cross build.') assert(x==ref, 'did not get native property with native:false and non-cross build.')
x = meson.get_external_property('notexist', 'fallback') x = meson.get_external_property('nonexistent', 'fallback')
assert(x=='fallback', 'fallback did not work') assert(x=='fallback', 'fallback did not work')
x = meson.get_external_property('notexist', 'fallback', native: true) x = meson.get_external_property('nonexistent', 'fallback', native: true)
assert(x=='fallback', 'fallback native:true did not work') assert(x=='fallback', 'fallback native:true did not work')
x = meson.get_external_property('notexist', 'fallback', native: false) x = meson.get_external_property('nonexistent', 'fallback', native: false)
assert(x=='fallback', 'fallback native:false did not work') assert(x=='fallback', 'fallback native:false did not work')

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save