buildbot: Avoid warnings from linkerconfig

linkerconfig complains if it can't find /system_etc or /product
partition, or if it fails to open /apex/<name>/apex_manifest.pb.

To avoid those warnings when running buildbot-build.sh, a temporary root
for linkerconfig is prepared with /system_etc and /product partitions
and also /apex directories with only relevant APEXes.

Bug: 159131609
Test: lunch aosp_arm64-userdebug
       m installclean
       art/tools/buildbot-build.sh --target
       # no warnings from linkerconfig
Change-Id: Ia75ae1fe9b3bc73ce9dbf5aa71c0153ffd798aae
diff --git a/tools/buildbot-build.sh b/tools/buildbot-build.sh
index dde156d..9f2b9a8 100755
--- a/tools/buildbot-build.sh
+++ b/tools/buildbot-build.sh
@@ -191,25 +191,38 @@
   # Create linker config files. We run linkerconfig on host to avoid problems
   # building it statically for device in an unbundled tree.
 
+  # temporary root for linkerconfig
+  linkerconfig_root=$ANDROID_PRODUCT_OUT/art_linkerconfig_root
+
+  rm -rf $linkerconfig_root
+
+  # Linkerconfig reads files from /system/etc
+  mkdir -p $linkerconfig_root/system
+  cp -r $ANDROID_PRODUCT_OUT/system/etc $linkerconfig_root/system
+
   # For linkerconfig to pick up the APEXes correctly we need to make them
-  # available in $ANDROID_PRODUCT_OUT/apex.
-  mkdir -p $ANDROID_PRODUCT_OUT/apex
+  # available in $linkerconfig_root/apex.
+  mkdir -p $linkerconfig_root/apex
   for apex in ${apexes[@]}; do
     src="$ANDROID_PRODUCT_OUT/system/apex/${apex}"
     if [[ $apex == com.android.art.* ]]; then
-      dst="$ANDROID_PRODUCT_OUT/apex/com.android.art"
+      dst="$linkerconfig_root/apex/com.android.art"
     else
-      dst="$ANDROID_PRODUCT_OUT/apex/${apex}"
+      dst="$linkerconfig_root/apex/${apex}"
     fi
     echo "Copying APEX directory from $src to $dst"
     rm -rf $dst
     cp -r $src $dst
   done
 
+  # To avoid warnings from linkerconfig when it checks following two partitions
+  mkdir -p $linkerconfig_root/product
+  mkdir -p $linkerconfig_root/system_ext
+
   platform_version=$(build/soong/soong_ui.bash --dumpvar-mode PLATFORM_VERSION)
-  linkerconfig_root=$ANDROID_PRODUCT_OUT/linkerconfig
-  echo "Generating linkerconfig in $linkerconfig_root"
-  rm -rf $linkerconfig_root
-  mkdir -p $linkerconfig_root
-  $ANDROID_HOST_OUT/bin/linkerconfig --target $linkerconfig_root --root $ANDROID_PRODUCT_OUT --vndk $platform_version
+  linkerconfig_out=$ANDROID_PRODUCT_OUT/linkerconfig
+  echo "Generating linkerconfig in $linkerconfig_out"
+  rm -rf $linkerconfig_out
+  mkdir -p $linkerconfig_out
+  $ANDROID_HOST_OUT/bin/linkerconfig --target $linkerconfig_out --root $linkerconfig_root --vndk $platform_version
 fi