Don't build super image if source images are missing

For some internal branches, vendor.img isn't built, so there
is no need to build super image / super split images there.

Test: remove vendor.img and VENDOR/ from target_files_intermediates, then
      run add_img_to_target_files
Fixes: 120634805

Change-Id: I2834a27ce232538f203733c204dd257279c789fc
diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py
index 669d87b..1872a58 100755
--- a/tools/releasetools/add_img_to_target_files.py
+++ b/tools/releasetools/add_img_to_target_files.py
@@ -657,12 +657,13 @@
   """Create split super_*.img and store it in output_zip."""
 
   outdir = os.path.join(OPTIONS.input_tmp, "OTA")
-  build_super_image.BuildSuperImage(OPTIONS.input_tmp, outdir)
+  built = build_super_image.BuildSuperImage(OPTIONS.input_tmp, outdir)
 
-  for dev in OPTIONS.info_dict['super_block_devices'].strip().split():
-    img = OutputFile(output_zip, OPTIONS.input_tmp, "OTA",
-                     "super_" + dev + ".img")
-    img.Write()
+  if built:
+    for dev in OPTIONS.info_dict['super_block_devices'].strip().split():
+      img = OutputFile(output_zip, OPTIONS.input_tmp, "OTA",
+                       "super_" + dev + ".img")
+      img.Write()
 
 
 def ReplaceUpdatedFiles(zip_filename, files_list):
diff --git a/tools/releasetools/build_super_image.py b/tools/releasetools/build_super_image.py
index 6efd3f4..e8730ae 100755
--- a/tools/releasetools/build_super_image.py
+++ b/tools/releasetools/build_super_image.py
@@ -138,14 +138,25 @@
   else:
     logger.info("Done writing image %s", output)
 
+  return True
+
 
 def BuildSuperImageFromExtractedTargetFiles(inp, out):
   info_dict = common.LoadInfoDict(inp)
   partition_list = shlex.split(
       info_dict.get("dynamic_partition_list", "").strip())
+  missing_images = []
   for partition in partition_list:
-    info_dict["{}_image".format(partition)] = os.path.join(
-        inp, "IMAGES", "{}.img".format(partition))
+    image_path = os.path.join(inp, "IMAGES", "{}.img".format(partition))
+    if not os.path.isfile(image_path):
+      missing_images.append(image_path)
+    else:
+      info_dict["{}_image".format(partition)] = image_path
+  if missing_images:
+    logger.warning("Skip building super image because the following "
+                   "images are missing from target files:\n%s",
+                   "\n".join(missing_images))
+    return False
   return BuildSuperImageFromDict(info_dict, out)