Commit Graph

12481 Commits

Author SHA1 Message Date
Matti Picus 73fa3aad43 python module: windows dll name for pypy needs special casing 2022-04-12 06:58:04 -04:00
mattip 1bb0387e67
add pypy3 to the bionic image 2022-04-11 16:59:40 -04:00
Eli Schwartz 1420d0dace
mdist: use better approach to finding original configured options
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-11 14:10:59 -04:00
Jussi Pakkanen 3c80f8f965 Use a temp file to invoke the introspection command.
This is more reliable as '-c' can, for example, exhaust
the maximum command line length.
2022-04-10 17:13:51 +03:00
Eli Schwartz d27fd555e8 python module: restore logging for broken python
This check was erroneously removed in commit c5c02b72e1
2022-04-10 15:17:22 +03:00
Eli Schwartz 7ceec99c55 packaging: make sure pyinstaller sees our distributed data files
Running pyinstaller to create a bundle, and using the resulting
`pyinst-tmp/meson/meson setup ...` with the cmake module revealed that
no data files were being bundled, unlike what we did for setup.cfg. Fix
this oversight.

Fixes #10163
2022-04-09 14:20:31 +03:00
Eli Schwartz e5aa47d8af Revert "wayland: Also lookup scanner in pkgconfig"
This reverts commit 7954a4c9cb.
2022-04-07 23:44:34 -04:00
Daniel Mensinger 99f510a817 docs: YAML: Add `arg_flattening: false` where required 2022-04-07 17:16:26 -04:00
Daniel Mensinger f192ecd1ef docs: refman: Add `arg_flattening` support 2022-04-07 17:16:26 -04:00
Daniel Mensinger 0808ae1b3d docs: Document argument flattening 2022-04-07 17:16:26 -04:00
Daniel Mensinger 8e13e63fca docs: Fix [[true]] --> `true` 2022-04-07 17:16:26 -04:00
Xavier Claessens 7954a4c9cb wayland: Also lookup scanner in pkgconfig
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-04 09:17:34 -04:00
Eli Schwartz 105bbaabdd
project tests: log the reason why a test is skipped
We expose a reason after the string 'MESON_SKIP_TEST', but it is
actually ignored when running the test, so it is only useful as
documentation and really might as well be a comment.

Make it even more useful by actually printing that string after the
'[SKIPPED]' message.

Also, sometimes a test can be skipped for multiple reasons, and it would
be useful to know which one occurred.
2022-04-03 16:06:33 -04:00
Eli Schwartz ce7a67e511
project tests: do not use tqdm progress bars for a single test
This can happen for example with `--only fpga` as that category has
exactly one test.
2022-04-03 16:06:33 -04:00
John Ericson 01a7aa0a4d Document and test env vars a bit better 2022-04-03 10:58:03 -07:00
Daniel Mensinger 4dd6cb8469 cmake: Better error message when configuring a CMake subproject fails. 2022-04-03 12:04:21 -04:00
Daniel Mensinger 2c4c7f6e64 Fix CMake error message 2022-04-01 15:22:17 -04:00
Christoph Reiter 26903d7b12 main: Make the msys/python check work again, in some cases
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-04-01 13:15:33 -04:00
Eli Schwartz cc8e67ce59
docs: fix inaccurate description of command targets
It isn't possible to have one target depend on a run_target, because
those produce no outputs and are always out of date. But the docs didn't
specify which types of target are valid here.

Correct the docs to align with the implementation.

Fixes #10198
2022-04-01 07:03:35 -04:00
Eli Schwartz fdcc566590
i18n: don't let our maintainer targets run via wrapped env
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-31 22:52:31 -04:00
Eli Schwartz 8ae2bf5a9e
allow RunTarget to skip wrapping due to env
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-31 22:52:31 -04:00
Eli Schwartz 3455f21f72
docs: note that find_program accepts file objects
This was implemented in commit 280346da3a
but never properly documented (it predated the version-controlled docs).
2022-03-31 22:52:31 -04:00
Jussi Pakkanen a7356f6bf2 Handle same Framework multiple times in Xcode. 2022-03-31 21:30:16 -04:00
Jussi Pakkanen 6f24ab9407 Handle feed and capture in xcodebackend. 2022-03-31 21:30:16 -04:00
Eli Schwartz 1cfead6647
fix continued breakage in gnome module API
In commit 823da39909 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-31 14:50:27 -04:00
Eli Schwartz 34d39dce57 docs: correct documentation of shared_library soversions
We have always accepted an int here as an alternative to a string, but
the initial documentation thought it was only a string.
2022-03-31 18:09:01 +03:00
Jussi Pakkanen efc7604ca2
Merge pull request #9989 from ePirat/epirat-fix-uscore-prefix-detection
Fix underscore detection
2022-03-31 16:26:22 +03:00
Marvin Scholz 34ea8fdf98 unittests: move get_convincing_fake_env_and_cc to run_tests.py 2022-03-31 10:55:55 +02:00
Marvin Scholz 9e597ce905 unittests: add underscore prefix tests
Tests the two new detection methods for the underscore prefix
against what is detected in the binary. Contrary to the in-the-wild
failures, we can trust the binary here as we do not get any additional
flags that influence the binary contents in this test environment.
2022-03-31 10:55:55 +02:00
Marvin Scholz 89620dc8e7 clike: print stderr instead of stdout for debugging
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-31 10:55:55 +02:00
Marvin Scholz 1b03441bc4 visualstudio: do not query underscore define with MSVC
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-31 10:55:55 +02:00
Marvin Scholz f02ffc007c clike: add more reliable ways to check underscore prefix
Fix #5482
2022-03-31 10:55:55 +02:00
Marvin Scholz 4b97c60650 compilers/gnu: use Popen_safe to prevent resource leaks
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-30 16:04:23 -04:00
Jussi Pakkanen be63e77949 Fix typos in Xcode backend. 2022-03-30 22:32:55 +03:00
Marvin Scholz b44042b5a9 unittests: correctly use test asserts instead of regular ones 2022-03-30 12:02:39 -04:00
Marvin Scholz 2cdddbab56 Add new debug() function
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-30 06:57:30 -04:00
Elliott Sales de Andrade 969ae6e0e1 Correctly handle --version argument to runpython
Followup to #10204.
2022-03-29 21:57:46 -04:00
Eli Schwartz 258cd5d583 packaging: rework how pyinstaller gets its instructions
Make use of pyinstaller hooks by creating a hook that updates how the
`mesonbuild` import functions.

This is more or less the same as passing a bajillion arguments to
pyinstaller's CLI, but allows the logic to be self-contained (and
reusable). It becomes more obvious what parts of the process pertain to
pyinstaller, and which parts pertain to MSI/pkg creation.
2022-03-30 02:06:52 +03:00
Eli Schwartz ff8a9c9efb
move typing-only definition to TYPE_CHECKING 2022-03-29 16:44:54 -04:00
Eli Schwartz c9938f8f60
move a bunch of imports into TYPE_CHECKING blocks
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-29 16:44:54 -04:00
Xavier Claessens 05cfe756f1 Target: Stop passing environment in method args 2022-03-29 16:10:28 -04:00
Xavier Claessens 90310116ab Replace backend.get_option_for_target() with target.get_option()
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-29 16:10:28 -04:00
Xavier Claessens e33ec88ac7 Pass environment down to base Target class 2022-03-29 16:10:28 -04:00
Tristan Partin d93fe56e89 Fix CMake deprecation warning generated from interpreter 2022-03-29 22:01:48 +03:00
Jan Tojnar b7686dfed5 gnome: Fix gtkdoc when using multiple Apple frameworks
The `-framework Foundation -framework CoreFoundation` ended up
de-duplicated by OrderedSet into `-framework Foundation CoreFoundation`.
2022-03-29 12:52:55 -04:00
Jan Tojnar 39623a36ca gnome: Fix typo in _get_dependencies_flags
This was introduced in 823da39909
2022-03-29 12:52:55 -04:00
Eli Schwartz 80192aa577
runpython: support --version
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-29 01:26:18 -04:00
Eli Schwartz 823da39909
fix regression in propagating depends in gtkdoc
In commit 68e684d51f 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-28 23:33:28 -04:00
Jussi Pakkanen 1c3191be55 Condense test directory names. 2022-03-29 02:12:02 +03:00
Eli Schwartz 479a84455f wrap: implement allow-insecure for 'meson wrap' 2022-03-27 18:57:07 -04:00