Fix runtests.sh script to build the new binaries required by the
deapexer.

Test: rm out/host/linux-x86/bin/fsck.erofs
      art/build/apex/runtests.sh
Bug: 255963179
Change-Id: I42a24e9b6f8570eb6c1b16f0ff0e2ce758860129
diff --git a/build/apex/runtests.sh b/build/apex/runtests.sh
index 290f121..cdbb7c0 100755
--- a/build/apex/runtests.sh
+++ b/build/apex/runtests.sh
@@ -59,14 +59,27 @@
   export TARGET_BUILD_UNBUNDLED=true
 fi
 
-have_deapexer_p=false
+deapex_binaries=(
+  blkid_static
+  deapexer
+  debugfs_static
+  fsck.erofs
+)
+
+have_deapex_binaries=false
 if [[ "$TARGET_FLATTEN_APEX" != true ]]; then
-  if [ ! -e "$HOST_OUT/bin/deapexer" -o ! -e "$HOST_OUT/bin/debugfs_static" ] ; then
-    say "Could not find deapexer and/or debugfs_static, building now."
-    build/soong/soong_ui.bash --make-mode deapexer debugfs_static-host || \
-      die "Cannot build deapexer and debugfs_static"
+  have_deapex_binaries=true
+  for f in ${deapex_binaries[@]}; do
+    if [ ! -e "$HOST_OUT/bin/$f" ]; then
+      have_deapex_binaries=false
+    fi
+  done
+  if $have_deapex_binaries; then :; else
+    deapex_targets=( ${deapex_binaries[@]/%/-host} )
+    say "Building host binaries for deapexer: ${deapex_targets[*]}"
+    build/soong/soong_ui.bash --make-mode ${deapex_targets[@]} || \
+      die "Failed to build: ${deapex_targets[*]}"
   fi
-  have_deapexer_p=true
 fi
 
 # Fail early.
@@ -203,7 +216,7 @@
         apex_path="$PRODUCT_OUT/system/apex/${apex_module}.apex"
       fi
     fi
-    if $have_deapexer_p; then
+    if $have_deapex_binaries; then
       art_apex_test_args="$art_apex_test_args --deapexer $HOST_OUT/bin/deapexer"
       art_apex_test_args="$art_apex_test_args --debugfs $HOST_OUT/bin/debugfs_static"
       art_apex_test_args="$art_apex_test_args --fsckerofs $HOST_OUT/bin/fsck.erofs"