DO NOT MERGE Duplicate the last_install content into last_log.
am: a8c0d0b43a
Change-Id: I6ba873dcf7b833daaf6ca74d49a6410be3e4fbcb
This commit is contained in:
59
install.cpp
59
install.cpp
@@ -31,7 +31,6 @@
|
||||
#include <vector>
|
||||
|
||||
#include <android-base/file.h>
|
||||
#include <android-base/logging.h>
|
||||
#include <android-base/parseint.h>
|
||||
#include <android-base/stringprintf.h>
|
||||
#include <android-base/strings.h>
|
||||
@@ -522,13 +521,6 @@ install_package(const char* path, bool* wipe_cache, const char* install_file,
|
||||
modified_flash = true;
|
||||
auto start = std::chrono::system_clock::now();
|
||||
|
||||
FILE* install_log = fopen_path(install_file, "w");
|
||||
if (install_log) {
|
||||
fputs(path, install_log);
|
||||
fputc('\n', install_log);
|
||||
} else {
|
||||
LOGE("failed to open last_install: %s\n", strerror(errno));
|
||||
}
|
||||
int result;
|
||||
std::vector<std::string> log_buffer;
|
||||
if (setup_install_mounts() != 0) {
|
||||
@@ -537,33 +529,40 @@ install_package(const char* path, bool* wipe_cache, const char* install_file,
|
||||
} else {
|
||||
result = really_install_package(path, wipe_cache, needs_mount, log_buffer, retry_count);
|
||||
}
|
||||
if (install_log != nullptr) {
|
||||
fputc(result == INSTALL_SUCCESS ? '1' : '0', install_log);
|
||||
fputc('\n', install_log);
|
||||
std::chrono::duration<double> duration = std::chrono::system_clock::now() - start;
|
||||
int count = static_cast<int>(duration.count());
|
||||
// Report the time spent to apply OTA update in seconds.
|
||||
fprintf(install_log, "time_total: %d\n", count);
|
||||
fprintf(install_log, "retry: %d\n", retry_count);
|
||||
|
||||
for (const auto& s : log_buffer) {
|
||||
fprintf(install_log, "%s\n", s.c_str());
|
||||
}
|
||||
// Measure the time spent to apply OTA update in seconds.
|
||||
std::chrono::duration<double> duration = std::chrono::system_clock::now() - start;
|
||||
int time_total = static_cast<int>(duration.count());
|
||||
|
||||
if (ensure_path_mounted(UNCRYPT_STATUS) != 0) {
|
||||
LOG(WARNING) << "Can't mount " << UNCRYPT_STATUS;
|
||||
if (ensure_path_mounted(UNCRYPT_STATUS) != 0) {
|
||||
LOGW("Can't mount %s\n", UNCRYPT_STATUS);
|
||||
} else {
|
||||
std::string uncrypt_status;
|
||||
if (!android::base::ReadFileToString(UNCRYPT_STATUS, &uncrypt_status)) {
|
||||
LOGW("failed to read uncrypt status: %s\n", strerror(errno));
|
||||
} else if (!android::base::StartsWith(uncrypt_status, "uncrypt_time:")) {
|
||||
LOGW("corrupted uncrypt_status: %s: %s\n", uncrypt_status.c_str(), strerror(errno));
|
||||
} else {
|
||||
std::string uncrypt_status;
|
||||
if (!android::base::ReadFileToString(UNCRYPT_STATUS, &uncrypt_status)) {
|
||||
PLOG(WARNING) << "failed to read uncrypt status";
|
||||
} else if (!android::base::StartsWith(uncrypt_status, "uncrypt_time:")) {
|
||||
PLOG(WARNING) << "corrupted uncrypt_status: " << uncrypt_status;
|
||||
} else {
|
||||
fprintf(install_log, "%s\n", android::base::Trim(uncrypt_status).c_str());
|
||||
}
|
||||
log_buffer.push_back(android::base::Trim(uncrypt_status));
|
||||
}
|
||||
fclose(install_log);
|
||||
}
|
||||
|
||||
// The first two lines need to be the package name and install result.
|
||||
std::vector<std::string> log_header = {
|
||||
path,
|
||||
result == INSTALL_SUCCESS ? "1" : "0",
|
||||
"time_total: " + std::to_string(time_total),
|
||||
"retry: " + std::to_string(retry_count),
|
||||
};
|
||||
std::string log_content = android::base::Join(log_header, "\n") + "\n" +
|
||||
android::base::Join(log_buffer, "\n");
|
||||
if (!android::base::WriteStringToFile(log_content, install_file)) {
|
||||
LOGE("failed to write %s: %s\n", install_file, strerror(errno));
|
||||
}
|
||||
|
||||
// Write a copy into last_log.
|
||||
LOGI("%s\n", log_content.c_str());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user