Revert "Force package installation with FUSE unless the package stores on device"
This reverts commit 5e6c4e9a91
.
Reason for revert: BUG: 149432069 - build failure on git_qt-qpr1-dev-plus-aosp on docs. 'otautil/roots.h' file not found is the error.
Forrest run: https://android-build.googleplex.com/builds/forrest/run/L85900000460577420
Change-Id: I35119c2334895aa0ef4ed71b3ddd08f280c0c031
Merged-In: I35119c2334895aa0ef4ed71b3ddd08f280c0c031
This commit is contained in:
parent
5e6c4e9a91
commit
daaacea96e
6 changed files with 1 additions and 87 deletions
|
@ -72,7 +72,6 @@ cc_defaults {
|
|||
],
|
||||
|
||||
static_libs: [
|
||||
"libc++fs",
|
||||
"libinstall",
|
||||
"librecovery_fastboot",
|
||||
"libminui",
|
||||
|
@ -96,7 +95,6 @@ cc_library_static {
|
|||
],
|
||||
|
||||
shared_libs: [
|
||||
"libfusesideload",
|
||||
"librecovery_ui",
|
||||
],
|
||||
}
|
||||
|
|
|
@ -63,7 +63,3 @@ bool ReadMetadataFromPackage(ZipArchiveHandle zip, std::map<std::string, std::st
|
|||
// pre-device and serial number (if presents). A/B OTA specific checks: pre-build version,
|
||||
// fingerprint, timestamp.
|
||||
bool CheckPackageMetadata(const std::map<std::string, std::string>& metadata, OtaType ota_type);
|
||||
|
||||
// Ensures the path to the update package is mounted. Also set the |should_use_fuse| to true if the
|
||||
// package stays on a removable media.
|
||||
bool SetupPackageMount(const std::string& package_path, bool* should_use_fuse);
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
#include <atomic>
|
||||
#include <chrono>
|
||||
#include <condition_variable>
|
||||
#include <filesystem>
|
||||
#include <functional>
|
||||
#include <limits>
|
||||
#include <mutex>
|
||||
|
@ -642,49 +641,3 @@ bool verify_package(Package* package, RecoveryUI* ui) {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SetupPackageMount(const std::string& package_path, bool* should_use_fuse) {
|
||||
CHECK(should_use_fuse != nullptr);
|
||||
|
||||
if (package_path.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
*should_use_fuse = true;
|
||||
if (package_path[0] == '@') {
|
||||
auto block_map_path = package_path.substr(1);
|
||||
if (ensure_path_mounted(block_map_path) != 0) {
|
||||
LOG(ERROR) << "Failed to mount " << block_map_path;
|
||||
return false;
|
||||
}
|
||||
// uncrypt only produces block map only if the package stays on /data.
|
||||
*should_use_fuse = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Package is not a block map file.
|
||||
if (ensure_path_mounted(package_path) != 0) {
|
||||
LOG(ERROR) << "Failed to mount " << package_path;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Reject the package if the input path doesn't equal the canonicalized path.
|
||||
// e.g. /cache/../sdcard/update_package.
|
||||
std::error_code ec;
|
||||
auto canonical_path = std::filesystem::canonical(package_path, ec);
|
||||
if (ec) {
|
||||
LOG(ERROR) << "Failed to get canonical of " << package_path << ", " << ec.message();
|
||||
return false;
|
||||
}
|
||||
if (canonical_path.string() != package_path) {
|
||||
LOG(ERROR) << "Installation aborts. The canonical path " << canonical_path.string()
|
||||
<< " doesn't equal the original path " << package_path;
|
||||
return false;
|
||||
}
|
||||
|
||||
constexpr const char* CACHE_ROOT = "/cache";
|
||||
if (android::base::StartsWith(package_path, CACHE_ROOT)) {
|
||||
*should_use_fuse = false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -687,11 +687,7 @@ Device::BuiltinAction start_recovery(Device* device, const std::vector<std::stri
|
|||
ensure_path_mounted(update_package);
|
||||
}
|
||||
|
||||
bool should_use_fuse = false;
|
||||
if (!SetupPackageMount(update_package, &should_use_fuse)) {
|
||||
LOG(INFO) << "Failed to set up the package access, skipping installation";
|
||||
status = INSTALL_ERROR;
|
||||
} else if (install_with_fuse || should_use_fuse) {
|
||||
if (install_with_fuse) {
|
||||
LOG(INFO) << "Installing package " << update_package << " with fuse";
|
||||
status = InstallWithFuseFromPath(update_package, ui);
|
||||
} else if (auto memory_package = Package::CreateMemoryPackage(
|
||||
|
|
|
@ -93,7 +93,6 @@ librecovery_static_libs = [
|
|||
"libbinderthreadstate",
|
||||
"liblp",
|
||||
"libtinyxml2",
|
||||
"libc++fs",
|
||||
]
|
||||
|
||||
cc_test {
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include "install/install.h"
|
||||
#include "install/wipe_device.h"
|
||||
#include "otautil/paths.h"
|
||||
#include "otautil/roots.h"
|
||||
#include "private/setup_commands.h"
|
||||
|
||||
static void BuildZipArchive(const std::map<std::string, std::string>& file_map, int fd,
|
||||
|
@ -514,30 +513,3 @@ TEST(InstallTest, CheckPackageMetadata_ab_post_timestamp) {
|
|||
"\n");
|
||||
TestCheckPackageMetadata(metadata, OtaType::AB, true);
|
||||
}
|
||||
|
||||
TEST(InstallTest, SetupPackageMount_package_path) {
|
||||
load_volume_table();
|
||||
bool install_with_fuse;
|
||||
|
||||
// Setup should fail if the input path doesn't exist.
|
||||
ASSERT_FALSE(SetupPackageMount("/does_not_exist", &install_with_fuse));
|
||||
|
||||
// Package should be installed with fuse if it's not in /cache.
|
||||
TemporaryDir temp_dir;
|
||||
TemporaryFile update_package(temp_dir.path);
|
||||
ASSERT_TRUE(SetupPackageMount(update_package.path, &install_with_fuse));
|
||||
ASSERT_TRUE(install_with_fuse);
|
||||
|
||||
// Setup should fail if the input path isn't canonicalized.
|
||||
std::string uncanonical_package_path = android::base::Join(
|
||||
std::vector<std::string>{
|
||||
temp_dir.path,
|
||||
"..",
|
||||
android::base::Basename(temp_dir.path),
|
||||
android::base::Basename(update_package.path),
|
||||
},
|
||||
'/');
|
||||
|
||||
ASSERT_EQ(0, access(uncanonical_package_path.c_str(), R_OK));
|
||||
ASSERT_FALSE(SetupPackageMount(uncanonical_package_path, &install_with_fuse));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue