have patchoat take directories instead of filenames
patchoat was already ignoring the basename part of the filename passed
to it for both --output-image-file and --output-image-relocation-file.
We can therefore just pass in the directories instead.
Bug: 72828459
Test: make test-art-host-gtest-patchoat_test
Change-Id: Ie4f035b9953f8d79cd57b6239dd0d703b78505c9
diff --git a/cmds/installd/otapreopt.cpp b/cmds/installd/otapreopt.cpp
index 1c78ff0..5040cc9 100644
--- a/cmds/installd/otapreopt.cpp
+++ b/cmds/installd/otapreopt.cpp
@@ -799,7 +799,7 @@
std::string preopted_boot_art_path = StringPrintf("/system/framework/%s/boot.art", isa);
if (access(preopted_boot_art_path.c_str(), F_OK) == 0) {
- return PatchoatBootImage(art_path, isa);
+ return PatchoatBootImage(isa_path, isa);
} else {
// No preopted boot image. Try to compile.
return Dex2oatBootImage(boot_classpath_, art_path, oat_path, isa);
@@ -868,14 +868,14 @@
CHECK_EQ(0, closedir(c_dir)) << "Unable to close directory.";
}
- bool PatchoatBootImage(const std::string& art_path, const char* isa) const {
+ bool PatchoatBootImage(const std::string& output_dir, const char* isa) const {
// This needs to be kept in sync with ART, see art/runtime/gc/space/image_space.cc.
std::vector<std::string> cmd;
cmd.push_back("/system/bin/patchoat");
cmd.push_back("--input-image-location=/system/framework/boot.art");
- cmd.push_back(StringPrintf("--output-image-file=%s", art_path.c_str()));
+ cmd.push_back(StringPrintf("--output-image-directory=%s", output_dir.c_str()));
cmd.push_back(StringPrintf("--instruction-set=%s", isa));