@@ -138,19 +138,19 @@ def make_build_python(context):
138138    run (["make" , "-j" , str (os .cpu_count ())])
139139
140140
141- def  unpack_deps (host ):
141+ def  unpack_deps (host ,  prefix_dir ):
142142    deps_url  =  "https://github.com/beeware/cpython-android-source-deps/releases/download" 
143143    for  name_ver  in  ["bzip2-1.0.8-2" , "libffi-3.4.4-3" , "openssl-3.0.15-4" ,
144144                     "sqlite-3.49.1-0" , "xz-5.4.6-1" ]:
145145        filename  =  f"{ name_ver } { host }  
146146        download (f"{ deps_url } { name_ver } { filename }  )
147-         run ([ "tar" ,  "-xf" ,  filename ] )
147+         shutil . unpack_archive ( filename ,  prefix_dir )
148148        os .remove (filename )
149149
150150
151151def  download (url , target_dir = "." ):
152152    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 ])
154154    return  out_path 
155155
156156
@@ -162,8 +162,7 @@ def configure_host_python(context):
162162    prefix_dir  =  host_dir  /  "prefix" 
163163    if  not  prefix_dir .exists ():
164164        prefix_dir .mkdir ()
165-         os .chdir (prefix_dir )
166-         unpack_deps (context .host )
165+         unpack_deps (context .host , prefix_dir )
167166
168167    os .chdir (host_dir )
169168    command  =  [
@@ -241,16 +240,15 @@ def setup_sdk():
241240# the Gradle wrapper is not included in the CPython repository. Instead, we 
242241# extract it from the Gradle GitHub repository. 
243242def  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" 
249243    paths  =  ["gradlew" , "gradlew.bat" , "gradle/wrapper/gradle-wrapper.jar" ]
250- 
251244    if  all ((TESTBED_DIR  /  path ).exists () for  path  in  paths ):
252245        return 
253246
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+ 
254252    for  path  in  paths :
255253        out_path  =  TESTBED_DIR  /  path 
256254        out_path .parent .mkdir (exist_ok = True )
0 commit comments