Dump build info about target build when installing OTA am: ddc2580b56

Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/1935315

Change-Id: I7761d8c8f9aba13943a0e2e2021c01da72fd1f6f
diff --git a/payload_consumer/postinstall_runner_action.cc b/payload_consumer/postinstall_runner_action.cc
index 1d2da43..e489dfc 100644
--- a/payload_consumer/postinstall_runner_action.cc
+++ b/payload_consumer/postinstall_runner_action.cc
@@ -24,6 +24,8 @@
 #include <unistd.h>
 
 #include <cmath>
+#include <fstream>
+#include <string>
 
 #include <base/files/file_path.h>
 #include <base/files/file_util.h>
@@ -46,6 +48,31 @@
 // sample_images.sh file.
 const int kPostinstallStatusFd = 3;
 
+static constexpr bool Contains(std::string_view haystack,
+                               std::string_view needle) {
+  return haystack.find(needle) != std::string::npos;
+}
+
+static void LogBuildInfoForPartition(std::string_view mount_point) {
+  static constexpr std::array<std::string_view, 3> kBuildPropFiles{
+      "build.prop", "etc/build.prop", "system/build.prop"};
+  for (const auto& file : kBuildPropFiles) {
+    auto path = std::string(mount_point);
+    if (path.back() != '/') {
+      path.push_back('/');
+    }
+    path += file;
+    LOG(INFO) << "Trying to read " << path;
+    std::ifstream infile(path);
+    std::string line;
+    while (std::getline(infile, line)) {
+      if (Contains(line, "ro.build")) {
+        LOG(INFO) << line;
+      }
+    }
+  }
+}
+
 }  // namespace
 
 namespace chromeos_update_engine {
@@ -193,6 +220,7 @@
       if (!MountPartition(partition)) {
         return CompletePostinstall(ErrorCode::kPostInstallMountError);
       }
+      LogBuildInfoForPartition(fs_mount_dir_);
       if (!utils::UnmountFilesystem(fs_mount_dir_)) {
         return CompletePartitionPostinstall(
             1, "Error unmounting the device " + mountable_device);
@@ -215,6 +243,7 @@
     CompletePostinstall(ErrorCode::kPostInstallMountError);
     return;
   }
+  LogBuildInfoForPartition(fs_mount_dir_);
   base::FilePath postinstall_path(partition.postinstall_path);
   if (postinstall_path.IsAbsolute()) {
     LOG(ERROR) << "Invalid absolute path passed to postinstall, use a relative"