@@ -138,7 +138,7 @@ def make_build_python(context):
138138
139139def  unpack_deps (host ):
140140    deps_url  =  "https://github.com/beeware/cpython-android-source-deps/releases/download" 
141-     for  name_ver  in  ["bzip2-1.0.8-1" , "libffi-3.4.4-2" , "openssl-3.0.13-1 " ,
141+     for  name_ver  in  ["bzip2-1.0.8-1" , "libffi-3.4.4-2" , "openssl-3.0.15-0 " ,
142142                     "sqlite-3.45.1-0" , "xz-5.4.6-0" ]:
143143        filename  =  f"{ name_ver } { host }  
144144        download (f"{ deps_url } { name_ver } { filename }  )
@@ -259,8 +259,8 @@ def setup_testbed():
259259             f"{ temp_dir } { outer_jar }  , "gradle-wrapper.jar" ])
260260
261261
262- # run_testbed will build the app automatically, but it hides the Gradle output  
263- # by default, so it's useful  to have this as a separate command for the buildbot . 
262+ # run_testbed will build the app automatically, but it's useful to have this as  
263+ # a separate command  to allow running the app outside of this script . 
264264def  build_testbed (context ):
265265    setup_sdk ()
266266    setup_testbed ()
@@ -376,6 +376,8 @@ async def find_pid(serial):
376376    shown_error  =  False 
377377    while  True :
378378        try :
379+             # `pidof` requires API level 24 or higher. The level 23 emulator 
380+             # includes it, but it doesn't work (it returns all processes). 
379381            pid  =  (await  async_check_output (
380382                adb , "-s" , serial , "shell" , "pidof" , "-s" , APP_ID 
381383            )).strip ()
@@ -407,6 +409,7 @@ async def logcat_task(context, initial_devices):
407409    serial  =  await  wait_for (find_device (context , initial_devices ), startup_timeout )
408410    pid  =  await  wait_for (find_pid (serial ), startup_timeout )
409411
412+     # `--pid` requires API level 24 or higher. 
410413    args  =  [adb , "-s" , serial , "logcat" , "--pid" , pid ,  "--format" , "tag" ]
411414    hidden_output  =  []
412415    async  with  async_process (
@@ -421,11 +424,15 @@ async def logcat_task(context, initial_devices):
421424                # such messages, but other components might. 
422425                level , message  =  None , line 
423426
427+             # Exclude high-volume messages which are rarely useful. 
428+             if  context .verbose  <  2  and  "from python test_syslog"  in  message :
429+                 continue 
430+ 
424431            # Put high-level messages on stderr so they're highlighted in the 
425432            # buildbot logs. This will include Python's own stderr. 
426433            stream  =  (
427434                sys .stderr 
428-                 if  level  in  ["E" , "F" ]  # ERROR and  FATAL (aka ASSERT) 
435+                 if  level  in  ["W"  ,  " E""F" ]  # WARNING, ERROR,  FATAL (aka ASSERT) 
429436                else  sys .stdout 
430437            )
431438
@@ -573,8 +580,9 @@ def parse_args():
573580    test  =  subcommands .add_parser (
574581        "test" , help = "Run the test suite" )
575582    test .add_argument (
576-         "-v" , "--verbose" , action = "store_true" ,
577-         help = "Show Gradle output, and non-Python logcat messages" )
583+         "-v" , "--verbose" , action = "count" , default = 0 ,
584+         help = "Show Gradle output, and non-Python logcat messages. " 
585+         "Use twice to include high-volume messages which are rarely useful." )
578586    device_group  =  test .add_mutually_exclusive_group (required = True )
579587    device_group .add_argument (
580588        "--connected" , metavar = "SERIAL" , help = "Run on a connected device. " 
@@ -591,6 +599,13 @@ def parse_args():
591599
592600def  main ():
593601    install_signal_handler ()
602+ 
603+     # Under the buildbot, stdout is not a TTY, but we must still flush after 
604+     # every line to make sure our output appears in the correct order relative 
605+     # to the output of our subprocesses. 
606+     for  stream  in  [sys .stdout , sys .stderr ]:
607+         stream .reconfigure (line_buffering = True )
608+ 
594609    context  =  parse_args ()
595610    dispatch  =  {"configure-build" : configure_build_python ,
596611                "make-build" : make_build_python ,
0 commit comments