mirror of
https://github.com/python/cpython.git
synced 2026-05-04 09:31:02 +00:00
[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 b29afe62f7)
Co-authored-by: Russell Keith-Magee <russell@keith-magee.com>
Co-authored-by: Malcolm Smith <smith@chaquo.com>
This commit is contained in:
parent
82ab8fb666
commit
48c3c7fb73
2 changed files with 34 additions and 56 deletions
|
|
@ -393,17 +393,6 @@ def setup_testbed():
|
|||
os.chmod(out_path, 0o755)
|
||||
|
||||
|
||||
# run_testbed will build the app automatically, but it's useful to have this as
|
||||
# a separate command to allow running the app outside of this script.
|
||||
def build_testbed(context):
|
||||
setup_sdk()
|
||||
setup_testbed()
|
||||
run(
|
||||
[gradlew, "--console", "plain", "packageDebug", "packageDebugAndroidTest"],
|
||||
cwd=TESTBED_DIR,
|
||||
)
|
||||
|
||||
|
||||
# Work around a bug involving sys.exit and TaskGroups
|
||||
# (https://github.com/python/cpython/issues/101515).
|
||||
def exit(*args):
|
||||
|
|
@ -645,6 +634,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.
|
||||
|
|
@ -872,49 +865,6 @@ def parse_args():
|
|||
def add_parser(*args, **kwargs):
|
||||
parser = subcommands.add_parser(*args, **kwargs)
|
||||
parser.add_argument(
|
||||
"-v", "--verbose", action="count", default=0,
|
||||
help="Show verbose output. Use twice to be even more verbose.")
|
||||
return parser
|
||||
|
||||
# Subcommands
|
||||
build = add_parser(
|
||||
"build",
|
||||
help="Run configure and make for the selected target"
|
||||
)
|
||||
configure_build = add_parser(
|
||||
"configure-build", help="Run `configure` for the build Python")
|
||||
make_build = add_parser(
|
||||
"make-build", help="Run `make` for the build Python")
|
||||
configure_host = add_parser(
|
||||
"configure-host", help="Run `configure` for Android")
|
||||
make_host = add_parser(
|
||||
"make-host", help="Run `make` for Android")
|
||||
|
||||
clean = add_parser(
|
||||
"clean",
|
||||
help="Delete build directories for the selected target"
|
||||
)
|
||||
|
||||
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")
|
||||
env = add_parser("env", help="Print environment variables")
|
||||
|
||||
# Common arguments
|
||||
# --cross-build-dir argument
|
||||
for cmd in [
|
||||
clean,
|
||||
configure_build,
|
||||
make_build,
|
||||
configure_host,
|
||||
make_host,
|
||||
build,
|
||||
package,
|
||||
test,
|
||||
ci,
|
||||
]:
|
||||
cmd.add_argument(
|
||||
"--cross-build-dir",
|
||||
action="store",
|
||||
default=os.environ.get("CROSS_BUILD_DIR"),
|
||||
|
|
@ -926,7 +876,36 @@ def add_parser(*args, **kwargs):
|
|||
"with the CROSS_BUILD_DIR environment variable."
|
||||
),
|
||||
)
|
||||
parser.add_argument(
|
||||
"-v", "--verbose", action="count", default=0,
|
||||
help="Show verbose output. Use twice to be even more verbose.")
|
||||
return parser
|
||||
|
||||
# Subcommands
|
||||
build = add_parser(
|
||||
"build",
|
||||
help="Run configure and make for the selected target"
|
||||
)
|
||||
configure_build = add_parser(
|
||||
"configure-build", help="Run `configure` for the build Python")
|
||||
add_parser(
|
||||
"make-build", help="Run `make` for the build Python")
|
||||
configure_host = add_parser(
|
||||
"configure-host", help="Run `configure` for Android")
|
||||
make_host = add_parser(
|
||||
"make-host", help="Run `make` for Android")
|
||||
|
||||
clean = add_parser(
|
||||
"clean",
|
||||
help="Delete build directories for the selected target"
|
||||
)
|
||||
|
||||
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")
|
||||
env = add_parser("env", help="Print environment variables")
|
||||
|
||||
# Common arguments
|
||||
# --cache-dir option
|
||||
for cmd in [configure_host, build, ci]:
|
||||
cmd.add_argument(
|
||||
|
|
@ -1031,7 +1010,6 @@ def main():
|
|||
"make-host": make_host_python,
|
||||
"build": build_targets,
|
||||
"clean": clean_targets,
|
||||
"build-testbed": build_testbed,
|
||||
"test": run_testbed,
|
||||
"package": package,
|
||||
"ci": ci,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ 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(System.getenv("CROSS_BUILD_DIR") ?: "$PYTHON_DIR/cross-build")
|
||||
val inSourceTree = (
|
||||
ANDROID_DIR.name == "Android" && file("$PYTHON_DIR/pyconfig.h.in").exists()
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue