From 871d87f3d54a855114f7051108106a3f5a658b7b Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 10 Apr 2026 06:15:48 +0800 Subject: [PATCH 1/4] Ensure gradle uses custom cross-build dir. --- Android/testbed/app/build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Android/testbed/app/build.gradle.kts b/Android/testbed/app/build.gradle.kts index b58edc04a929d9..edbf4e877b7119 100644 --- a/Android/testbed/app/build.gradle.kts +++ b/Android/testbed/app/build.gradle.kts @@ -8,7 +8,9 @@ plugins { val ANDROID_DIR = file("../..") val PYTHON_DIR = ANDROID_DIR.parentFile!! -val PYTHON_CROSS_DIR = file("$PYTHON_DIR/cross-build") +val PYTHON_CROSS_DIR = file( + "$PYTHON_DIR/" + (System.getenv("CROSS_BUILD_DIR") ?: "cross-build") +) val inSourceTree = ( ANDROID_DIR.name == "Android" && file("$PYTHON_DIR/pyconfig.h.in").exists() ) From 7afb6989f2f7cc1a5d6fc63b38ccf898d92b83dc Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 10 Apr 2026 06:23:55 +0800 Subject: [PATCH 2/4] Pass CROSS_BUILD_DIR to gradle environment. --- Android/android.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Android/android.py b/Android/android.py index adcc7c708d95f7..6b41894bba0843 100755 --- a/Android/android.py +++ b/Android/android.py @@ -401,6 +401,7 @@ def build_testbed(context): run( [gradlew, "--console", "plain", "packageDebug", "packageDebugAndroidTest"], cwd=TESTBED_DIR, + env={} ) @@ -645,6 +646,10 @@ async def gradle_task(context): task_prefix = "connected" env["ANDROID_SERIAL"] = context.connected + # Ensure that CROSS_BUILD_DIR is in the Gradle environment, regardless + # of whether it was set by environment variable or `--cross-build-dir`. + env["CROSS_BUILD_DIR"] = CROSS_BUILD_DIR + if context.ci_mode: context.args[0:0] = [ # See _add_ci_python_opts in libregrtest/main.py. From db873ac1c261ece7b43820db20afdb6065019a95 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 10 Apr 2026 06:29:39 +0800 Subject: [PATCH 3/4] Ensure testbed builds also get the cross-build environment. --- Android/android.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Android/android.py b/Android/android.py index 6b41894bba0843..fa475f17099039 100755 --- a/Android/android.py +++ b/Android/android.py @@ -398,10 +398,15 @@ def setup_testbed(): def build_testbed(context): setup_sdk() setup_testbed() + + # Ensure that CROSS_BUILD_DIR is in the Gradle environment, regardless + # of whether it was set by environment variable or `--cross-build-dir`. + env = os.environ.copy() + env["CROSS_BUILD_DIR"] = CROSS_BUILD_DIR run( [gradlew, "--console", "plain", "packageDebug", "packageDebugAndroidTest"], cwd=TESTBED_DIR, - env={} + env=env, ) From 68ba1d733b252f8a50d42566ddc72e7e0dd3db48 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 10 Apr 2026 09:36:44 +0800 Subject: [PATCH 4/4] Allow for cross-build to be absolute. --- Android/android.py | 3 ++- Android/testbed/app/build.gradle.kts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Android/android.py b/Android/android.py index fa475f17099039..f9f6de73803ff1 100755 --- a/Android/android.py +++ b/Android/android.py @@ -906,7 +906,7 @@ def add_parser(*args, **kwargs): help="Delete build directories for the selected target" ) - add_parser("build-testbed", help="Build the testbed app") + build_testbed = add_parser("build-testbed", help="Build the testbed app") test = add_parser("test", help="Run the testbed app") package = add_parser("package", help="Make a release package") ci = add_parser("ci", help="Run build, package and test") @@ -922,6 +922,7 @@ def add_parser(*args, **kwargs): make_host, build, package, + build_testbed, test, ci, ]: diff --git a/Android/testbed/app/build.gradle.kts b/Android/testbed/app/build.gradle.kts index edbf4e877b7119..2a0544907cf508 100644 --- a/Android/testbed/app/build.gradle.kts +++ b/Android/testbed/app/build.gradle.kts @@ -8,8 +8,9 @@ plugins { val ANDROID_DIR = file("../..") val PYTHON_DIR = ANDROID_DIR.parentFile!! +val CROSS_BUILD_DIR = System.getenv("CROSS_BUILD_DIR") ?: "cross-build" val PYTHON_CROSS_DIR = file( - "$PYTHON_DIR/" + (System.getenv("CROSS_BUILD_DIR") ?: "cross-build") + if ((File(CROSS_BUILD_DIR)).isAbsolute) CROSS_BUILD_DIR else "$PYTHON_DIR/$CROSS_BUILD_DIR" ) val inSourceTree = ( ANDROID_DIR.name == "Android" && file("$PYTHON_DIR/pyconfig.h.in").exists()