Skip to content

Commit 48c3c7f

Browse files
miss-islingtonfreakboy3742mhsmith
authored
[3.14] gh-146450: Ensure Android gradle build uses custom cross-build dir (GH-148319) (#148470)
Ensures that the testbed's Gradle configuration uses the cross-build environment variable, and that variable is passed to Gradle by the cross-build script. (cherry picked from commit b29afe6) Co-authored-by: Russell Keith-Magee <russell@keith-magee.com> Co-authored-by: Malcolm Smith <smith@chaquo.com>
1 parent 82ab8fb commit 48c3c7f

File tree

2 files changed

+18
-40
lines changed

2 files changed

+18
-40
lines changed

Android/android.py

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -393,17 +393,6 @@ def setup_testbed():
393393
os.chmod(out_path, 0o755)
394394

395395

396-
# run_testbed will build the app automatically, but it's useful to have this as
397-
# a separate command to allow running the app outside of this script.
398-
def build_testbed(context):
399-
setup_sdk()
400-
setup_testbed()
401-
run(
402-
[gradlew, "--console", "plain", "packageDebug", "packageDebugAndroidTest"],
403-
cwd=TESTBED_DIR,
404-
)
405-
406-
407396
# Work around a bug involving sys.exit and TaskGroups
408397
# (https://github.com/python/cpython/issues/101515).
409398
def exit(*args):
@@ -645,6 +634,10 @@ async def gradle_task(context):
645634
task_prefix = "connected"
646635
env["ANDROID_SERIAL"] = context.connected
647636

637+
# Ensure that CROSS_BUILD_DIR is in the Gradle environment, regardless
638+
# of whether it was set by environment variable or `--cross-build-dir`.
639+
env["CROSS_BUILD_DIR"] = CROSS_BUILD_DIR
640+
648641
if context.ci_mode:
649642
context.args[0:0] = [
650643
# See _add_ci_python_opts in libregrtest/main.py.
@@ -871,6 +864,18 @@ def parse_args():
871864

872865
def add_parser(*args, **kwargs):
873866
parser = subcommands.add_parser(*args, **kwargs)
867+
parser.add_argument(
868+
"--cross-build-dir",
869+
action="store",
870+
default=os.environ.get("CROSS_BUILD_DIR"),
871+
dest="cross_build_dir",
872+
type=Path,
873+
help=(
874+
"Path to the cross-build directory "
875+
f"(default: {CROSS_BUILD_DIR}). Can also be set "
876+
"with the CROSS_BUILD_DIR environment variable."
877+
),
878+
)
874879
parser.add_argument(
875880
"-v", "--verbose", action="count", default=0,
876881
help="Show verbose output. Use twice to be even more verbose.")
@@ -883,7 +888,7 @@ def add_parser(*args, **kwargs):
883888
)
884889
configure_build = add_parser(
885890
"configure-build", help="Run `configure` for the build Python")
886-
make_build = add_parser(
891+
add_parser(
887892
"make-build", help="Run `make` for the build Python")
888893
configure_host = add_parser(
889894
"configure-host", help="Run `configure` for Android")
@@ -895,38 +900,12 @@ def add_parser(*args, **kwargs):
895900
help="Delete build directories for the selected target"
896901
)
897902

898-
add_parser("build-testbed", help="Build the testbed app")
899903
test = add_parser("test", help="Run the testbed app")
900904
package = add_parser("package", help="Make a release package")
901905
ci = add_parser("ci", help="Run build, package and test")
902906
env = add_parser("env", help="Print environment variables")
903907

904908
# Common arguments
905-
# --cross-build-dir argument
906-
for cmd in [
907-
clean,
908-
configure_build,
909-
make_build,
910-
configure_host,
911-
make_host,
912-
build,
913-
package,
914-
test,
915-
ci,
916-
]:
917-
cmd.add_argument(
918-
"--cross-build-dir",
919-
action="store",
920-
default=os.environ.get("CROSS_BUILD_DIR"),
921-
dest="cross_build_dir",
922-
type=Path,
923-
help=(
924-
"Path to the cross-build directory "
925-
f"(default: {CROSS_BUILD_DIR}). Can also be set "
926-
"with the CROSS_BUILD_DIR environment variable."
927-
),
928-
)
929-
930909
# --cache-dir option
931910
for cmd in [configure_host, build, ci]:
932911
cmd.add_argument(
@@ -1031,7 +1010,6 @@ def main():
10311010
"make-host": make_host_python,
10321011
"build": build_targets,
10331012
"clean": clean_targets,
1034-
"build-testbed": build_testbed,
10351013
"test": run_testbed,
10361014
"package": package,
10371015
"ci": ci,

Android/testbed/app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88

99
val ANDROID_DIR = file("../..")
1010
val PYTHON_DIR = ANDROID_DIR.parentFile!!
11-
val PYTHON_CROSS_DIR = file("$PYTHON_DIR/cross-build")
11+
val PYTHON_CROSS_DIR = file(System.getenv("CROSS_BUILD_DIR") ?: "$PYTHON_DIR/cross-build")
1212
val inSourceTree = (
1313
ANDROID_DIR.name == "Android" && file("$PYTHON_DIR/pyconfig.h.in").exists()
1414
)

0 commit comments

Comments
 (0)