aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
AgeCommit message (Collapse)AuthorFilesLines
2022-04-11mdist: use better approach to finding original configured optionsEli Schwartz1-4/+14
Instead of reading intro-buildoptions.json, a giant json file containing every option ever + its current value, use the private file that is internally used by msetup for e.g. --wipe to restore settings. This accurately tracks exactly the options specified on the command line, and avoids lengthy summary messages containing all the overridden defaults. It also avoids passing potentially incompatible options, such as explictly specifying -Dpython.install_env while also having a non-empty -Dpython.{x}libdir Fixes #10181
2022-04-10Use a temp file to invoke the introspection command.Jussi Pakkanen1-1/+6
This is more reliable as '-c' can, for example, exhaust the maximum command line length.
2022-04-10python module: restore logging for broken pythonEli Schwartz1-5/+12
This check was erroneously removed in commit c5c02b72e132a03ae0284bdd5e15d1675301a37d
2022-04-07Revert "wayland: Also lookup scanner in pkgconfig"Eli Schwartz4-30/+26
This reverts commit 7954a4c9cbf8355d8c8ea9b3d98df45d9f96f66e.
2022-04-04wayland: Also lookup scanner in pkgconfigXavier Claessens4-26/+30
This moves generally useful logic from GNOME module's _get_native_binary() into find_program() implementation. We could decide later to expose it as public API.
2022-04-03cmake: Better error message when configuring a CMake subproject fails.Daniel Mensinger2-4/+23
2022-04-01main: Make the msys/python check work again, in some casesChristoph Reiter1-8/+3
msys/python in MSYS2 pretends to be cygwin in all cases for some time now, so this check was impossible to hit. The underlying confusion it tried to prevent is still there, namely trying to build with mingw but wrongly using a msys/cygwin python/meson. We can use the MSYSTEM env var to detect if we are in a mingw shell, and in case the Python doesn't match we suggest installing mingw variants of both python and meson. Using msys/python + meson in a MSYS environment works fine on the other hand, so no need to error out in that case. Fixes #8726 Also addresses the concern raised in https://github.com/mesonbuild/meson/issues/3653#issuecomment-474122564
2022-03-31i18n: don't let our maintainer targets run via wrapped envEli Schwartz1-2/+2
They are RunTargets because they are one-shot commands without outputs. But we implement them purely via our internal wrapper for gettext, so there is no reason to wrap them *again* in our internal wrapper for meson_exe and set a bunch of environment variables we know we absolutely do not need, use, or want. This avoids the ugly "wrapped due to env" status, and allows users to directly see the command being run without going into despair at obscure pickled nonsense. It also offers a tiny defense against upgrading Meson without reconfiguring. People should not do that, and we error out about this in a bunch of places, but `--internal gettext` has a perfectly stable interface just like most build tools that aren't part of Meson internals, since it uses command line arguments instead of pickling.
2022-03-31allow RunTarget to skip wrapping due to envEli Schwartz3-9/+13
Forcing serialization on when writing out the build rule makes very little sense. It was always "forced" on because we mandated a couple of environment variables due to legacy reasons. Add an attribute to RunTarget to say that a given target doesn't *need* those environment variables, and let ninja optimize them away and run the command directly if set.
2022-03-31Handle same Framework multiple times in Xcode.Jussi Pakkanen1-2/+4
2022-03-31Handle feed and capture in xcodebackend.Jussi Pakkanen1-1/+2
2022-03-31fix continued breakage in gnome module APIEli Schwartz1-2/+2
In commit 823da3990947a8f4a2152826f0d7229f8a7a0159 we tried to fix disappearing dependencies. Instead, we appended the replacement dependencies to the existing ones. But this, too, was wrong. The function doesn't return new dependencies... it returns a copied list of all the dependencies, then alone of all parts of that API, expects to overwrite the existing variable. (Sadly, part of the internals actually uses the entire list for something.) As a result, we produced a repeatedly growing list, which eventually scaled really badly and e.g. OOMed on gstreamer. Instead, let's just replace the dependencies with the updated copy.
2022-03-31Merge pull request #9989 from ePirat/epirat-fix-uscore-prefix-detectionJussi Pakkanen2-7/+91
Fix underscore detection
2022-03-31clike: print stderr instead of stdout for debuggingMarvin Scholz1-1/+1
When something goes wrong with running the compiler in _symbols_have_underscore_prefix_searchbin, print stderr instead, as it actually contains helpful output while stdout is usually empty in this case.
2022-03-31visualstudio: do not query underscore define with MSVCMarvin Scholz1-0/+17
MSVC does not has the builtin define to check for the symbol prefix, so do not try to query it at all, to save some time.
2022-03-31clike: add more reliable ways to check underscore prefixMarvin Scholz1-6/+73
Fix #5482
2022-03-30compilers/gnu: use Popen_safe to prevent resource leaksMarvin Scholz1-8/+1
Fixes the following ResourceWarnings: ResourceWarning: subprocess 25556 is still running _warn("subprocess %s is still running" % self.pid, ResourceWarning: Enable tracemalloc to get the object allocation traceback mesonbuild/compilers/mixins/gnu.py:195: ResourceWarning: unclosed file <_io.BufferedReader name=4> return gnulike_default_include_dirs(tuple(self.exelist), self.language).copy() ResourceWarning: Enable tracemalloc to get the object allocation traceback
2022-03-30Fix typos in Xcode backend.Jussi Pakkanen1-3/+3
2022-03-30Add new debug() functionMarvin Scholz2-0/+9
Adds a new debug() function that can be used in the meson.build to log messages to the meson-log.txt that will not be printed to stdout when configuring the project.
2022-03-29Correctly handle --version argument to runpythonElliott Sales de Andrade1-4/+2
Followup to #10204.
2022-03-29move a bunch of imports into TYPE_CHECKING blocksEli Schwartz9-23/+44
These are only used for type checking, so don't bother importing them at runtime. Generally add future annotations at the same time, to make sure that existing uses of these imports don't need to be quoted.
2022-03-29Target: Stop passing environment in method argsXavier Claessens2-58/+58
2022-03-29Replace backend.get_option_for_target() with target.get_option()Xavier Claessens5-67/+57
That method had nothing specific to the backend, it's purely a Target method. This allows to cache the OptionOverrideProxy object on the Target instance instead of creating a new one for each option lookup.
2022-03-29Pass environment down to base Target classXavier Claessens11-18/+60
2022-03-29Fix CMake deprecation warning generated from interpreterTristan Partin1-1/+1
2022-03-29gnome: Fix gtkdoc when using multiple Apple frameworksJan Tojnar1-30/+48
The `-framework Foundation -framework CoreFoundation` ended up de-duplicated by OrderedSet into `-framework Foundation CoreFoundation`.
2022-03-29gnome: Fix typo in _get_dependencies_flagsJan Tojnar1-1/+1
This was introduced in https://github.com/mesonbuild/meson/commit/823da3990947a8f4a2152826f0d7229f8a7a0159
2022-03-29runpython: support --versionEli Schwartz1-2/+6
argparse is the gift that keeps on giving, hahaha. Suppress the script argument when --version is specified to avoid "required argument not provided" errors, and print the python version. The version argument is required in order to make this baseline functional as a resolved python for find_program, which may specify a version and expect this to work with python itself. Our incomplete CLI wrapper over the python CLI interface was missing this. Fixes #10162
2022-03-28fix regression in propagating depends in gtkdocEli Schwartz1-6/+11
In commit 68e684d51f1e469e0d9f4b499ffda15146cad98a the function signature was changed, but several places did not adapt. Additionally, we now totally dropped the in-place update of gtkdoc's sole source of dependencies, but didn't propagate them upward to assign the newly collected dependencies anywhere. Fixes building gtkdoc with internal dependencies and failing when specified directly (when building the 'all' target with sufficiently random parallelism, deps may be built on time). Fixes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008382 https://gitlab.gnome.org/GNOME/libmediaart/-/issues/4
2022-03-27wrap: implement allow-insecure for 'meson wrap'Eli Schwartz2-16/+29
2022-03-27wrap: use shared function to connect to wrapdb with better errorsEli Schwartz1-5/+4
We currently inconsistently handle connection, `has_ssl`, and printing errors on urlopen failure between `meson subprojects` and `meson wrap`. Make the latter work more like the former.
2022-03-27wrap: add functionality to specify whether insecure downloads should be usedEli Schwartz2-10/+30
We have a fallback route in `meson subprojects download` and friends, which tries to retrieve wrapdb urls via http, if Python was not built with SSL support. Stop doing this. Replace it with a command line option to specify that insecure downloads are wanted, and reference it in the error message if downloading fails due to SSL issues.
2022-03-24install_symlink: Handle $DESTDIR case for links with absolute pathMarco Trevisan (Treviño)1-2/+4
In case a link is pointing_to an absolute path and we are using $DESTDIR we fail in case the target is missing. This is incorrect because we may need to use an absolute path to an already installed file that is in $DESTDIR. So if an absolute target is not existing, check if we have such file in $DESTDIR before failing for real.
2022-03-24build.py: Simplify uses_rust()Xavier Claessens1-19/+1
There is no need to check all source files again, if there are .rs sources then rust compiler is in self.compilers already.
2022-03-24build.py: Simplify validate_sources()Xavier Claessens1-15/+3
There is no need to go through all sources again, we already did that to populate self.compilers. When cs or java compilers are in the list, then there must be only one compiler. The code was also not considering generate sources any way.
2022-03-24Make compilers list per subprojectXavier Claessens4-123/+123
Previously subprojects inherited languages already added by main project, or any previous subproject. This change to have a list of compilers per interpreters, which means that if a subproject does not add 'c' language it won't be able to compile .c files any more, even if main project added the 'c' language. This delays processing list of compilers until the interpreter adds the BuildTarget into its list of targets. That way the interpreter can add missing languages instead of duplicating that logic into BuildTarget for the cython case.
2022-03-24Debian renamed cython to cython3, support bothXavier Claessens1-1/+1
2022-03-24hotdoc module: use typed_pos_args to check positional argumentsEli Schwartz1-6/+4
We cannot use typed_kwargs though, because we allow fully arbitrary kwargs and pass them as arguments to the hotdoc program.
2022-03-24dub module: use typed_pos_args to check positional argumentsEli Schwartz1-4/+2
We cannot use typed_kwargs though, because we allow fully arbitrary kwargs and add them as keys in the generated dub file.
2022-03-24python 3 module: type-check all posargsEli Schwartz1-3/+4
Yes, it's deprecated, but we can still stop people doing the wrong thing with it if they are still using it.
2022-03-23gnome module: properly fallback to gtk-update-icon-cacheAntoine Jacoutot1-1/+1
Commit a0cade8f introduced a typo and wrongly check for gtk4-update-icon-cache twice. If gtk4-update-icon-cache (gtk4) is not found, look for gtk-update-icon-cache (gtk3) instead.
2022-03-23Add support for cython_argsTristan Partin1-0/+1
cython_args was previoously ignored by Meson.
2022-03-23Make sure we support "<lang>_args" kwarg for all languagesXavier Claessens1-25/+8
2022-03-23boost: preserve compiler/linker argument orderHemmo Nieminen1-2/+2
Looks like boost dependency mixes up it's compiler and linker argument order when it is removing duplicates (?) from those. This causes unnecessary recompilations of everything depending on those components. Use OrderedSet to remove the duplicates while also maintaining consistent order for them.
2022-03-23Fix DUB dependenciesRemi Thebault1-126/+295
- fix the research of target built by DUB - explicitely state that DUB dynamic libraries and source libraries are not supported (yet) (mesonbuild#6581) - fix the build settings of recipes having sub-dependencies (mesonbuild#7560) - fix winlibs added from dub recipe - sanitization, comments, explanations...
2022-03-23ninja backend: do not fatally error on compdb failureEli Schwartz1-1/+1
We print a warning if a compilation database isn't successfully generated, which is good, because that gives some visibility in case the user really wanted to use the compdb. But warnings default to being fatal with --fatal-meson-warnings, which is not so good, because this isn't a very important warning at all, and we'd rather not error out in such cases when building works fine and a random bonus IDE feature doesn't work. Mark this particular warning as non-fatal. Fixes side issue in https://github.com/mesonbuild/wrapdb/pull/343#issuecomment-1074545609
2022-03-22interpreter: Make compiler options per-subprojectXavier Claessens2-1/+20
2022-03-22coredata: Do not forget subproject's default_optionsXavier Claessens1-6/+9
2022-03-22OptionOverrideProxy: Handle per-subproject optionsXavier Claessens2-17/+25
2022-03-22OptionOverrideProxy: Make it immutable to avoid copiesXavier Claessens14-74/+70
It is always used as an immutable view so there is no point in doing copies. However, mypy insist it must implement the same APIs as Dict[OptionKey, UserOption[Any]] so keep faking it.