Specify Python3 executable path in CI (#11696)

diff --git a/build_tools/cmake/build_all.sh b/build_tools/cmake/build_all.sh
index c316ab2..aa438ab 100755
--- a/build_tools/cmake/build_all.sh
+++ b/build_tools/cmake/build_all.sh
@@ -18,7 +18,6 @@
 BUILD_DIR="${1:-${IREE_BUILD_DIR:-build}}"
 INSTALL_DIR="${IREE_INSTALL_DIR:-${BUILD_DIR}/install}"
 IREE_ENABLE_ASSERTIONS="${IREE_ENABLE_ASSERTIONS:-ON}"
-IREE_PYTHON3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE:-$(which python3)}"
 # Enable WebGPU compiler builds and tests by default. All deps get fetched as
 # needed, but some of the deps are too large to enable by default for all
 # developers.
@@ -45,6 +44,7 @@
   # Enable building the python bindings on CI.
   "-DIREE_BUILD_PYTHON_BINDINGS=ON"
   "-DPython3_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DPYTHON_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
 
   # Enable CUDA compiler and runtime builds unconditionally. Our CI images all
   # have enough deps to at least build CUDA support and compile CUDA binaries
diff --git a/build_tools/cmake/build_and_test_asan.sh b/build_tools/cmake/build_and_test_asan.sh
index 929e5d2..6e3cebd 100755
--- a/build_tools/cmake/build_and_test_asan.sh
+++ b/build_tools/cmake/build_and_test_asan.sh
@@ -30,6 +30,8 @@
   "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
   "-DIREE_ENABLE_ASAN=ON"
   "-B" "${BUILD_DIR?}"
+  "-DPython3_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DPYTHON_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
 
   # Also check if microbenchmarks are buildable.
   "-DIREE_BUILD_MICROBENCHMARKS=ON"
diff --git a/build_tools/cmake/build_and_test_tsan.sh b/build_tools/cmake/build_and_test_tsan.sh
index dbd2484..fadef80 100755
--- a/build_tools/cmake/build_and_test_tsan.sh
+++ b/build_tools/cmake/build_and_test_tsan.sh
@@ -24,6 +24,8 @@
 
 CMAKE_ARGS=(
   "-G" "Ninja"
+  "-DPython3_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DPYTHON_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
 
   # The debug information will help get more helpful TSan reports (stacks).
   "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
diff --git a/build_tools/cmake/build_android.sh b/build_tools/cmake/build_android.sh
index 548002f..dfaaa1e 100755
--- a/build_tools/cmake/build_android.sh
+++ b/build_tools/cmake/build_android.sh
@@ -35,6 +35,8 @@
 declare -a args=(
   -G Ninja
   -B "${BUILD_DIR}"
+  -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}"
+  -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}"
   -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake"
   -DANDROID_ABI="${ANDROID_ABI}"
   -DANDROID_PLATFORM=android-29
diff --git a/build_tools/cmake/build_benchmarks.sh b/build_tools/cmake/build_benchmarks.sh
index 4ca4316..fe7a22c 100755
--- a/build_tools/cmake/build_benchmarks.sh
+++ b/build_tools/cmake/build_benchmarks.sh
@@ -29,6 +29,8 @@
 echo "Configuring to build benchmarks"
 "${CMAKE_BIN}" -B "${BUILD_DIR}" \
   -G Ninja \
+  -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
+  -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
   -DIREE_HOST_BINARY_ROOT="${IREE_HOST_BINARY_ROOT}" \
   -DIREE_BUILD_BENCHMARKS=ON \
   -DIREE_BUILD_MICROBENCHMARKS=ON \
diff --git a/build_tools/cmake/build_e2e_test_artifacts.sh b/build_tools/cmake/build_e2e_test_artifacts.sh
index 5a8031c..9a37527 100755
--- a/build_tools/cmake/build_e2e_test_artifacts.sh
+++ b/build_tools/cmake/build_e2e_test_artifacts.sh
@@ -33,6 +33,8 @@
 echo "Configuring to build e2e test artifacts"
 "${CMAKE_BIN}" -B "${BUILD_DIR}" \
   -G Ninja \
+  -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
+  -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
   -DIREE_HOST_BINARY_ROOT="${IREE_HOST_BINARY_ROOT}" \
   -DIREE_BUILD_EXPERIMENTAL_E2E_TEST_ARTIFACTS=ON \
   -DIREE_BUILD_COMPILER=OFF \
diff --git a/build_tools/cmake/build_host_tools.sh b/build_tools/cmake/build_host_tools.sh
index ada24d0..a6e4973 100755
--- a/build_tools/cmake/build_host_tools.sh
+++ b/build_tools/cmake/build_host_tools.sh
@@ -27,6 +27,8 @@
 declare -a CMAKE_ARGS=(
   "-G" "Ninja"
   "-B" "${BUILD_DIR}"
+  "-DPython3_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DPYTHON_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
 
   "-DCMAKE_INSTALL_PREFIX=$(realpath ${INSTALL_DIR})"
   "-DIREE_ENABLE_LLD=ON"
diff --git a/build_tools/cmake/build_riscv.sh b/build_tools/cmake/build_riscv.sh
index 10d20ff..7d5ff6c 100755
--- a/build_tools/cmake/build_riscv.sh
+++ b/build_tools/cmake/build_riscv.sh
@@ -38,13 +38,15 @@
 args=(
   "-G" "Ninja"
   "-B" "${BUILD_DIR}"
-  -DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}"
-  -DIREE_HOST_BINARY_ROOT="${IREE_HOST_BINARY_ROOT}"
-  -DRISCV_CPU="${RISCV_PLATFORM_ARCH}"
-  -DRISCV_COMPILER_FLAGS="${RISCV_COMPILER_FLAGS}"
-  -DIREE_BUILD_COMPILER=OFF
+  "-DPython3_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DPYTHON_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}"
+  "-DIREE_HOST_BINARY_ROOT=${IREE_HOST_BINARY_ROOT}"
+  "-DRISCV_CPU=${RISCV_PLATFORM_ARCH}"
+  "-DRISCV_COMPILER_FLAGS=${RISCV_COMPILER_FLAGS}"
+  "-DIREE_BUILD_COMPILER=OFF"
   # CPU info doesn't work on RISCV
-  -DIREE_ENABLE_CPUINFO=OFF
+  "-DIREE_ENABLE_CPUINFO=OFF"
 )
 
 if [[ "${RISCV_PLATFORM}" == "linux" ]]; then
diff --git a/build_tools/cmake/build_runtime.sh b/build_tools/cmake/build_runtime.sh
index 9468073..68c08be 100755
--- a/build_tools/cmake/build_runtime.sh
+++ b/build_tools/cmake/build_runtime.sh
@@ -25,8 +25,10 @@
 args=(
   "-G" "Ninja"
   "-B" "${BUILD_DIR}"
-  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-  -DIREE_BUILD_COMPILER=OFF
+  "-DPython3_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DPYTHON_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+  "-DIREE_BUILD_COMPILER=OFF"
 )
 
 case "${BUILD_PRESET}" in
diff --git a/build_tools/cmake/build_runtime_emscripten.sh b/build_tools/cmake/build_runtime_emscripten.sh
index 1a2745e..c035d43 100755
--- a/build_tools/cmake/build_runtime_emscripten.sh
+++ b/build_tools/cmake/build_runtime_emscripten.sh
@@ -31,6 +31,8 @@
 
 # Configure using Emscripten's CMake wrapper, then build.
 emcmake "${CMAKE_BIN?}" -G Ninja .. \
+  -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
+  -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
   -DIREE_HOST_BINARY_ROOT="${IREE_HOST_BINARY_ROOT}" \
   -DIREE_BUILD_COMPILER=OFF \
   -DIREE_HAL_DRIVER_DEFAULTS=OFF \
diff --git a/build_tools/cmake/build_runtime_small.sh b/build_tools/cmake/build_runtime_small.sh
index e59df0c..7bf4163 100755
--- a/build_tools/cmake/build_runtime_small.sh
+++ b/build_tools/cmake/build_runtime_small.sh
@@ -18,6 +18,8 @@
 
 "${CMAKE_BIN?}" -B "${BUILD_DIR}" \
   -G Ninja . \
+  -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
+  -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
   -DCMAKE_BUILD_TYPE=MinSizeRel \
   -DIREE_SIZE_OPTIMIZED=ON \
   -DIREE_BUILD_COMPILER=OFF
diff --git a/build_tools/cmake/build_tracing.sh b/build_tools/cmake/build_tracing.sh
index 90f2861..3610bef 100755
--- a/build_tools/cmake/build_tracing.sh
+++ b/build_tools/cmake/build_tracing.sh
@@ -22,6 +22,8 @@
 # MLIR threading enabled, which crashes with compiler tracing enabled.
 "${CMAKE_BIN?}" -B "${BUILD_DIR}" \
   -G Ninja . \
+  -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
+  -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
   -DCMAKE_BUILD_TYPE=RelWithDebInfo \
   -DIREE_ENABLE_RUNTIME_TRACING=ON \
   -DIREE_BUILD_COMPILER=OFF
diff --git a/build_tools/cmake/setup_build.sh b/build_tools/cmake/setup_build.sh
index e526b33..02a03bf 100644
--- a/build_tools/cmake/setup_build.sh
+++ b/build_tools/cmake/setup_build.sh
@@ -16,6 +16,8 @@
 ninja --version
 python3 --version
 
+IREE_PYTHON3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE:-$(which python3)}"
+
 if [[ -d "${BUILD_DIR}" ]]; then
   echo "'${BUILD_DIR}' directory already exists. Will use cached results there."
 else
diff --git a/build_tools/cmake/test_benchmark_suites_on_linux.sh b/build_tools/cmake/test_benchmark_suites_on_linux.sh
index 85fab8e..a86a89a 100755
--- a/build_tools/cmake/test_benchmark_suites_on_linux.sh
+++ b/build_tools/cmake/test_benchmark_suites_on_linux.sh
@@ -25,6 +25,8 @@
 declare -a CMAKE_ARGS=(
   "-G" "Ninja"
   "-B" "${BUILD_DIR}"
+  "-DPython3_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
+  "-DPYTHON_EXECUTABLE=${IREE_PYTHON3_EXECUTABLE}"
   "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
   "-DIREE_BUILD_COMPILER=OFF"
   "-DIREE_HOST_BINARY_ROOT=${IREE_HOST_BINARY_ROOT}"
diff --git a/experimental/web/sample_dynamic/build_sample.sh b/experimental/web/sample_dynamic/build_sample.sh
index 49a8273..dbe2058 100755
--- a/experimental/web/sample_dynamic/build_sample.sh
+++ b/experimental/web/sample_dynamic/build_sample.sh
@@ -35,6 +35,7 @@
 INSTALL_ROOT="$(realpath ${1:-${HOST_BUILD_DIR}/install})"
 SOURCE_DIR=${ROOT_DIR}/experimental/web/sample_dynamic
 BINARY_DIR=${BUILD_DIR}/experimental/web/sample_dynamic
+IREE_PYTHON3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE:-$(which python3)}"
 
 
 ###############################################################################
@@ -83,6 +84,8 @@
 emcmake "${CMAKE_BIN}" \
   -B "${BUILD_DIR}" \
   -G Ninja \
+  -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
+  -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
   -DCMAKE_BUILD_TYPE=RelWithDebInfo \
   -DIREE_HOST_BINARY_ROOT="${INSTALL_ROOT}" \
   -DIREE_BUILD_EXPERIMENTAL_WEB_SAMPLES=ON \
diff --git a/experimental/web/sample_static/build_sample.sh b/experimental/web/sample_static/build_sample.sh
index 0a6b0cf..a761bec 100755
--- a/experimental/web/sample_static/build_sample.sh
+++ b/experimental/web/sample_static/build_sample.sh
@@ -35,6 +35,7 @@
 INSTALL_ROOT="$(realpath ${1:-${HOST_BUILD_DIR}/install})"
 SOURCE_DIR="${ROOT_DIR}/experimental/web/sample_static"
 BINARY_DIR="${BUILD_DIR}/experimental/web/sample_static/"
+IREE_PYTHON3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE:-$(which python3)}"
 
 
 ###############################################################################
@@ -88,6 +89,8 @@
 emcmake "${CMAKE_BIN}" \
   -G Ninja \
   -B "${BUILD_DIR}" \
+  -DPython3_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
+  -DPYTHON_EXECUTABLE="${IREE_PYTHON3_EXECUTABLE}" \
   -DCMAKE_BUILD_TYPE=RelWithDebInfo \
   -DIREE_HOST_BINARY_ROOT="${INSTALL_ROOT}" \
   -DIREE_BUILD_EXPERIMENTAL_WEB_SAMPLES=ON \