am a04e6b89: am dd68e68f: Merge "Override properties that point to out/ directory."

* commit 'a04e6b89ec262f4dd38c9d80ee05ce313bab9347':
  Override properties that point to out/ directory.
diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py
index f31d416..bc2667d 100755
--- a/tools/releasetools/add_img_to_target_files.py
+++ b/tools/releasetools/add_img_to_target_files.py
@@ -135,10 +135,6 @@
     image_props["fs_config"] = fs_config
   if block_list:
     image_props["block_list"] = block_list
-  if image_props.get("system_root_image") == "true":
-    image_props["ramdisk_dir"] = os.path.join(input_dir, "BOOT/RAMDISK")
-    image_props["ramdisk_fs_config"] = os.path.join(
-        input_dir, "META/boot_filesystem_config.txt")
 
   succ = build_image.BuildImage(os.path.join(input_dir, what),
                                 image_props, img)
diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py
index 4b43c0c..f90f9be 100755
--- a/tools/releasetools/build_image.py
+++ b/tools/releasetools/build_image.py
@@ -431,6 +431,7 @@
     copy_prop("system_verity_block_device", "verity_block_device")
     copy_prop("system_root_image", "system_root_image")
     copy_prop("ramdisk_dir", "ramdisk_dir")
+    copy_prop("ramdisk_fs_config", "ramdisk_fs_config")
     copy_prop("has_ext4_reserved_blocks", "has_ext4_reserved_blocks")
     copy_prop("system_squashfs_compressor", "squashfs_compressor")
     copy_prop("system_squashfs_compressor_opt", "squashfs_compressor_opt")
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 141ee84..fe40a72 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -148,15 +148,20 @@
   if "fstab_version" not in d:
     d["fstab_version"] = "1"
 
-  # During building, we use the "file_contexts" in the out/ directory tree.
-  # It is no longer available when (re)generating from target_files zip. So
-  # when generating from target_files zip, we look for a copy under META/
-  # first, if not available search under BOOT/RAMDISK/. Note that we may need
-  # a different file_contexts to build images than the one running on device,
-  # such as when enabling system_root_image. In that case, we must have the
-  # one for building copied to META/.
+  # A few properties are stored as links to the files in the out/ directory.
+  # It works fine with the build system. However, they are no longer available
+  # when (re)generating from target_files zip. If input_dir is not None, we
+  # are doing repacking. Redirect those properties to the actual files in the
+  # unzipped directory.
   if input_dir is not None:
+    # We carry a copy of file_contexts under META/. If not available, search
+    # BOOT/RAMDISK/. Note that sometimes we may need a different file_contexts
+    # to build images than the one running on device, such as when enabling
+    # system_root_image. In that case, we must have the one for image
+    # generation copied to META/.
     fc_config = os.path.join(input_dir, "META", "file_contexts")
+    if d.get("system_root_image") == "true":
+      assert os.path.exists(fc_config)
     if not os.path.exists(fc_config):
       fc_config = os.path.join(input_dir, "BOOT", "RAMDISK", "file_contexts")
       if not os.path.exists(fc_config):
@@ -165,6 +170,12 @@
     if fc_config:
       d["selinux_fc"] = fc_config
 
+    # Similarly we need to redirect "ramdisk_dir" and "ramdisk_fs_config".
+    if d.get("system_root_image") == "true":
+      d["ramdisk_dir"] = os.path.join(input_dir, "ROOT")
+      d["ramdisk_fs_config"] = os.path.join(
+          input_dir, "META", "root_filesystem_config.txt")
+
   try:
     data = read_helper("META/imagesizes.txt")
     for line in data.split("\n"):