aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-11-21Handle cmake dependencies which require a specified versionJason Ekstrand9-5/+56
Some CMake packages fail to find at all if no version is specified. This commit adds a cmake_version parameter to dependency() to allow you to specify the requested version.
2020-11-21run_project_tests: Use the test environment for install and cleanJason Ekstrand1-2/+2
2020-11-21cmVers: use env instead of hardcoding bash locationDylan Baker1-1/+1
2020-11-21envconfig: use debug for "using * from environment variables messagesDylan Baker1-1/+1
These are spammy, and being in the debug log is probably better anyway.
2020-11-20run_unittests: delete test for external syntax highlightingDylan Baker1-46/+0
It's a bit odd we have a test for an external project that's not even in the meson organization. Regardless, the json file was recently replaced by a cson file. There is an coffee-script-notation parser in pypi, but I couldn't get it to work. Just delete the test
2020-11-18Merge pull request #7894 from obilaniu/cudaupdatesJussi Pakkanen3-58/+169
Update unstable CUDA Module to support newest toolkits and drivers.
2020-11-18Merge pull request #7836 from bonzini/mtest-asyncioJussi Pakkanen1-137/+212
[RFC] mtest: use asyncio instead of concurrency.futures
2020-11-18Update Tutorial.md [skip ci]Michael Brockus1-12/+38
2020-11-18Merge pull request #7900 from bonzini/stabilize-hashJussi Pakkanen5-8/+8
Avoid build.ninja changes due to order of hash table iteration
2020-11-18mtest: cleanup and fix print_statsPaolo Bonzini2-14/+12
Avoid calling self.collected_failures.append twice, and avoid inflated indentation by adding a "plain" decorator to mlog. Fixes: ba71fde18 ("mtest: collect failures regardless of colorized console", 2020-10-12)
2020-11-17Revert "Add thinlto support. Closes #7493."Jussi Pakkanen7-53/+15
This reverts commit 3e6fbde94c1cb8d4e01b7daf0282c315ff0e6c7d.
2020-11-17Collect and return clang-format's return codeFlorian Schmaus1-3/+4
There is no reason why meson should swallow any non-zero exit(/return) code of clang-format.
2020-11-17Fix clang-tidy return value reporting (Part â…¡)Florian Schmaus1-1/+1
It turns out my first attempt to fix this in 00d5ef3191e5 ("Fix clang-tidy return value reporting (#7949)") is not sufficient: The local variable returncode is never updated and stays at 0. This fixes the returncode calculation. Fixes: cce172432be3 ("Use run-clang-tidy when available.")
2020-11-17doc: add much-needed accuracy to pip installation instructions [skip ci]Eli Schwartz1-2/+7
- mention installing from local sources, not PyPI - warn against --user installs, which too often screw up users that then cannot install projects because ~/.local won't be in sudo's PYTHONPATH - advise installing with sudo -- current versions of pip assume --user for you rather than failing with permission errors, which is great unless, like meson, there are compelling reasons to need to install as root
2020-11-17gnome: Drop use of volatile in GLib type functionsPhilip Withnall5-17/+17
See https://gitlab.gnome.org/GNOME/glib/-/issues/600 `volatile` was previously mistakenly used in GLib to indicate that a variable was accessed atomically or otherwise multi-threaded. It’s not meant for that, and up to date compilers (like gcc-11) will rightly warn about it. Drop the `volatile` qualifiers. Based on a patch by Jeff Law. See also http://isvolatileusefulwiththreads.in/c/. Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2020-11-17add warning for projects with manually specified -WerrorEli Schwartz1-0/+3
Point people to the "werror" builtin option.
2020-11-15ninjabackend: stabilize order of dependencies and order-only dependenciesPaolo Bonzini1-2/+2
These do not go into the command line, and therefore do not matter for the purpose of avoiding unnecessary rebuilds after meson is rerun. However, they complicate the task of finding differences between build lines across meson reruns. So take the easy way out and sort everything after | and ||. With this change, there is absolutely no change in QEMU's 40000-line build.ninja file after meson is rerun.
2020-11-15stabilize iteration order for dictionariesPaolo Bonzini1-2/+2
The order of keys in dictionaries cannot be relied upon, because the hash values are randomized by Python. Whenever we iterate on dictionaries and meson.build generates a list during the iteration, the different iteration orders may cause random changes in the command line and cause ninja to rebuild a lot of files unnecessarily.
2020-11-15stabilize sets that are converted to listsPaolo Bonzini3-4/+4
The order of elements in sets cannot be relied upon, because the hash values are randomized by Python. Whenever sets are converted to lists we need to keep their order stable, or random changes in the command line cause ninja to rebuild a lot of files unnecessarily. To stabilize them, use either sort or OrderedSet. Sorting is not always applicable, but it can be faster because it's done in C and it can produce slightly nicer output.
2020-11-15mtest: switch to asyncio subprocessesPaolo Bonzini1-35/+19
No functional change except that the extra thread goes away.
2020-11-15mtest: use ProactorEventLoopPaolo Bonzini1-0/+4
This is needed to use asyncio with pipes and processes.
2020-11-15mtest: improve handling of SIGINT and SIGTERMPaolo Bonzini1-8/+36
Handle SIGINT and SIGTERM by respectively cancelling the longest running and all the running tests.
2020-11-15mtest: remove usage of executorsPaolo Bonzini1-50/+76
Rewrite the SingleTestRunner to use asyncio to manage subprocesses, while still using subprocess.Popen to run them. Concurrency is managed with an asyncio Semaphore; for simplicity (since this is a temporary state) we create a new thread for each test that is run instead of having a pool. This already provides the main advantage of asyncio, which is better control on cancellation; with the current code, KeyboardInterrupt was never handled by the thread executor so the code that tried to handle it in SingleTestRunner only worked for non-parallel tests. And because executor futures cannot be cancelled, there was no way for the user to kill a test that got stuck. Instead, without executors ^C exits "meson test" immediately. The next patch will improve things even further, allowing a single test to be interrupted with ^C.
2020-11-15mtest: add INTERRUPT to TestResultPaolo Bonzini1-21/+24
Distinguish a failure due to user interrupt from a presumable ERROR result due to the SIGTERM. The test should fail after CTRL+C even if the test traps SIGTERM and exits with a return code of 0.
2020-11-15mtest: always ignore ProcessLookupErrorPaolo Bonzini1-33/+26
ProcessLookupError can also happen from p.kill(). There is also nothing we can do in that case, so move the "try" for that exception to the entire kill_process function. The ValueError case seems like dead code, so get rid of it.
2020-11-15mtest: refactor _run_cmdPaolo Bonzini1-85/+101
A large part of _run_cmd is devoted to setting up and killing the test subprocess. Move that to a separate function to make the test runner logic easier to understand.
2020-11-15mtest: add back SIGINT handlingPaolo Bonzini1-6/+27
2020-11-15mtest: use asyncio for run loopPaolo Bonzini1-26/+39
Use asyncio futures for the run loop, while still handling I/O in a thread pool using run_on_executor. The handling of the test result is not duplicated anymore between run_tests and drain_futures. Instead, the test result is always processed and printed by run_test after single_test.run() completes and (in verbose mode) it cannot interleave with the test output. Therefore the special case for self.options.num_processes == 1 can be removed.
2020-11-15mtest: remove run_specialPaolo Bonzini1-13/+1
run_special and doit are the same except that run_special forgot to set self.is_run. There is no need for the duplication. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-11-15mtest: fix flake8 issuesPaolo Bonzini1-4/+3
2020-11-14Add doc on how to add the [provide] entry to wrapdb entries. [skip ci]Jussi Pakkanen1-41/+69
2020-11-14Merge pull request #7843 from dcbaker/submit/rustc-fixesJussi Pakkanen6-52/+89
A few fixups for rust
2020-11-13Merge pull request #7967 from jpark37/msvc-c17Dylan Baker2-9/+20
msvc: enable /std:c17 flag
2020-11-13msvc: enable /std:c17 flagjpark371-8/+19
Increase allowed c_std options, and check compiler version. Also update mlog pattern to not crash.
2020-11-13Use c99 instead of c11 for buildoptions testjpark371-1/+1
Older verisons of MSVC do not support C11 properly.
2020-11-13environment: Fix detection of rust compilers, moreDylan Baker2-12/+29
2020-11-13compilers/rust: warn about setting -C linker in your compiler argsDylan Baker1-0/+7
2020-11-13compilers/rust: add and use an implementation of use_linker_argsDylan Baker2-7/+11
2020-11-13run_unittests: use textwrap.dedentDylan Baker3-28/+34
So that editors that can fold code (vim, vscode, etc) can correctly fold functions, instead of getting confused by code that doesn't follow the current indention. Also, it makes the code easier to read.
2020-11-13ninjabackend: Fix a couple of rust bugsDylan Baker1-2/+3
There are two bugs here, first is that we open coded the output args, instead of using the compiler method. The second is that rust args are not passed down to the backend invocation.
2020-11-13environment: Properly pass linker to rustcDylan Baker1-7/+9
rustc is very different than other compilers, in that it doesn't generate object files, it just creates a final target out of the intermediate sources. As such, it needs to know about the linker args in the compiler invocation.
2020-11-13Merge pull request #7866 from dcbaker/submit/compiler-std-in-baseJussi Pakkanen4-170/+123
Put the Compiler standard option in the Language mixin
2020-11-13ninjabackend: fix matching of empty stringsAlexander Neumann1-1/+1
closes #7977
2020-11-13Do not warn when -Wpedantic is added as a project argument.Eli Schwartz1-1/+5
The only way to add it via warning_level is top opt in to -Wextra too. But this is often not really desirable, since -Wextra is not stable -- it changes its meaning every compiler release, thus mysteriously adding new warnings. Furthermore, it's not really the same kind of warning -- a pedantic warning is always correct that your code is wrong, but defines wrongness as "not per the portable standard". Unlike -Wextra it doesn't try to judge your code to see if you're doing something that is "often not what you meant", but is prone to false positives. Really, we need different *kinds* of warning levels, possibly as an array -- not just a monotonically increasing number. But since there's currently nothing flexible enough to specify -Wpedantic without -Wextra, we will just remove the warning for the former, and let people add it to their project arguments in peace.
2020-11-13gnome: Handle libraries that are not in the current build dirSam Thursfield11-5/+387
The generate_gir() function previously assumed all library inputs were in the current build dir. This would fail if they weren't.
2020-11-13The version kwarg must be a string. Closes #7975.Jussi Pakkanen1-0/+2
2020-11-12clang-cl: Allow clang-cl (when compiling C) to pass std to underlying clang)Dylan Baker1-34/+33
This allows a wider array of standard support than would be available directly from clang-cl, emulating MSVC stds.
2020-11-12doc: fix typo [skip ci]Eli Schwartz1-1/+1
2020-11-12interpreter: Add get_keys function for configuration_data (#7887)Jones4-0/+16
2020-11-12Merge pull request #7961 from dcbaker/submit/rust-color-outputJussi Pakkanen2-3/+18
Add color output support to rust