aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.d/buildtest-template.yml4
-rwxr-xr-xconfigure65
2 files changed, 13 insertions, 56 deletions
diff --git a/.gitlab-ci.d/buildtest-template.yml b/.gitlab-ci.d/buildtest-template.yml
index a6cfe9b..7edb50b 100644
--- a/.gitlab-ci.d/buildtest-template.yml
+++ b/.gitlab-ci.d/buildtest-template.yml
@@ -12,12 +12,12 @@
- mkdir build
- cd build
- ../configure --enable-werror --disable-docs --enable-fdt=system
- ${LD_JOBS:+--meson=git} ${TARGETS:+--target-list="$TARGETS"}
+ ${TARGETS:+--target-list="$TARGETS"}
$CONFIGURE_ARGS ||
{ cat config.log meson-logs/meson-log.txt && exit 1; }
- if test -n "$LD_JOBS";
then
- ../meson/meson.py configure . -Dbackend_max_links="$LD_JOBS" ;
+ pyvenv/bin/meson configure . -Dbackend_max_links="$LD_JOBS" ;
fi || exit 1;
- make -j"$JOBS"
- if test -n "$MAKE_CHECK_ARGS";
diff --git a/configure b/configure
index 1d7db92..4519c4d 100755
--- a/configure
+++ b/configure
@@ -289,7 +289,6 @@ bsd_user=""
pie=""
coroutine=""
plugins="$default_feature"
-meson=""
ninja=""
bindir="bin"
skip_meson=no
@@ -731,8 +730,6 @@ for opt do
;;
--skip-meson) skip_meson=yes
;;
- --meson=*) meson="$optarg"
- ;;
--ninja=*) ninja="$optarg"
;;
--smbd=*) smbd="$optarg"
@@ -1017,7 +1014,6 @@ Advanced options (experts only):
--cross-prefix-ARCH=PREFIX cross compiler prefix when building ARCH guest test cases
--make=MAKE use specified make [$make]
--python=PYTHON use specified python [$python]
- --meson=MESON use specified meson [$meson]
--ninja=NINJA use specified ninja [$ninja]
--smbd=SMBD use specified smbd [$smbd]
--with-git=GIT use specified git [$git]
@@ -1090,7 +1086,6 @@ fi
# Resolve PATH
python="$(command -v "$python")"
-explicit_python=yes
# Create a Python virtual environment using our configured python.
# The stdout of this script will be the location of a symlink that
@@ -1102,7 +1097,6 @@ explicit_python=yes
# - venv is cleared if it exists already;
# - venv is allowed to use system packages;
# - all setup is performed **offline**;
-# - No packages are installed by default;
# - pip is not installed into the venv when possible,
# but ensurepip is called as a fallback when necessary.
@@ -1117,58 +1111,21 @@ fi
# Suppress writing compiled files
python="$python -B"
-has_meson() {
- local python_dir=$(dirname "$python")
- # PEP405: pyvenv.cfg is either adjacent to the Python executable
- # or one directory above
- if test -f $python_dir/pyvenv.cfg || test -f $python_dir/../pyvenv.cfg; then
- # Ensure that Meson and Python come from the same virtual environment
- test -x "$python_dir/meson" &&
- test "$(command -v meson)" -ef "$python_dir/meson"
- else
- has meson
- fi
-}
-if test -z "$meson"; then
- if test "$explicit_python" = no && has_meson && version_ge "$(meson --version)" 0.61.5; then
- meson=meson
- elif test "$git_submodules_action" != 'ignore' ; then
- meson=git
- elif test -e "${source_path}/meson/meson.py" ; then
- meson=internal
- else
- if test "$explicit_python" = yes; then
- error_exit "--python requires using QEMU's embedded Meson distribution, but it was not found."
- else
- error_exit "Meson not found. Use --meson=/path/to/meson"
- fi
- fi
-else
- # Meson uses its own Python interpreter to invoke other Python scripts,
- # but the user wants to use the one they specified with --python.
- #
- # We do not want to override the distro Python interpreter (and sometimes
- # cannot: for example in Homebrew /usr/bin/meson is a bash script), so
- # just require --meson=git|internal together with --python.
- if test "$explicit_python" = yes; then
- case "$meson" in
- git | internal) ;;
- *) error_exit "--python requires using QEMU's embedded Meson distribution." ;;
- esac
- fi
+if ! $python "${source_path}/python/scripts/mkvenv.py" ensure \
+ --dir "${source_path}/python/wheels" \
+ --diagnose "meson" \
+ "meson>=0.61.5" ;
+then
+ exit 1
fi
-if test "$meson" = git; then
- git_submodules="${git_submodules} meson"
-fi
+# At this point, we expect Meson to be installed and available.
+# We expect mkvenv or pip to have created pyvenv/bin/meson for us.
+# We ignore PATH completely here: we want to use the venv's Meson
+# *exclusively*.
-case "$meson" in
- git | internal)
- meson="$python ${source_path}/meson/meson.py"
- ;;
- *) meson=$(command -v "$meson") ;;
-esac
+meson="$(cd pyvenv/bin; pwd)/meson"
# Probe for ninja