@@ -138,19 +138,19 @@ def make_build_python(context):
138
138
run (["make" ,"-j" ,str (os .cpu_count ())])
139
139
140
140
141
- def unpack_deps (host ):
141
+ def unpack_deps (host , prefix_dir ):
142
142
deps_url = "https://github.com/beeware/cpython-android-source-deps/releases/download"
143
143
for name_ver in ["bzip2-1.0.8-2" ,"libffi-3.4.4-3" ,"openssl-3.0.15-4" ,
144
144
"sqlite-3.49.1-0" ,"xz-5.4.6-1" ]:
145
145
filename = f"{ name_ver } -{ host } .tar.gz"
146
146
download (f"{ deps_url } /{ name_ver } /{ filename } " )
147
- run ([ "tar" , "-xf" , filename ] )
147
+ shutil . unpack_archive ( filename , prefix_dir )
148
148
os .remove (filename )
149
149
150
150
151
151
def download (url ,target_dir = "." ):
152
152
out_path = f"{ target_dir } /{ basename (url )} "
153
- run (["curl" ,"-Lf" ,"-o" ,out_path ,url ])
153
+ run (["curl" ,"-Lf" ,"--retry" , "5" , "--retry-all-errors" , "- o" ,out_path ,url ])
154
154
return out_path
155
155
156
156
@@ -162,8 +162,7 @@ def configure_host_python(context):
162
162
prefix_dir = host_dir / "prefix"
163
163
if not prefix_dir .exists ():
164
164
prefix_dir .mkdir ()
165
- os .chdir (prefix_dir )
166
- unpack_deps (context .host )
165
+ unpack_deps (context .host ,prefix_dir )
167
166
168
167
os .chdir (host_dir )
169
168
command = [
@@ -241,16 +240,15 @@ def setup_sdk():
241
240
# the Gradle wrapper is not included in the CPython repository. Instead, we
242
241
# extract it from the Gradle GitHub repository.
243
242
def setup_testbed ():
244
- # The Gradle version used for the build is specified in
245
- # testbed/gradle/wrapper/gradle-wrapper.properties. This wrapper version
246
- # doesn't need to match, as any version of the wrapper can download any
247
- # version of Gradle.
248
- version = "8.9.0"
249
243
paths = ["gradlew" ,"gradlew.bat" ,"gradle/wrapper/gradle-wrapper.jar" ]
250
-
251
244
if all ((TESTBED_DIR / path ).exists ()for path in paths ):
252
245
return
253
246
247
+ # The wrapper version isn't important, as any version of the wrapper can
248
+ # download any version of Gradle. The Gradle version actually used for the
249
+ # build is specified in testbed/gradle/wrapper/gradle-wrapper.properties.
250
+ version = "8.9.0"
251
+
254
252
for path in paths :
255
253
out_path = TESTBED_DIR / path
256
254
out_path .parent .mkdir (exist_ok = True )