diff options
author | Kelvin Zhang <zhangkelvin@google.com> | 2021-08-20 00:00:06 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-08-20 00:00:06 +0000 |
commit | 14faefb37a33b4140637b24a522d8d5e7fb16885 (patch) | |
tree | 1b72ff2be15bd31ec82b8d52f93f94424bb75a75 | |
parent | 344d5f48329f23be2b203600d8379a0c52c65ee1 (diff) | |
parent | 757ee9b934efac96716b9910eaff0a229855b5d0 (diff) | |
download | zucchini-14faefb37a33b4140637b24a522d8d5e7fb16885.tar.gz |
Compile zucchini binary am: 539c01b948 am: 43bcfaef03 am: a4523f01a4 am: 757ee9b934
Original change: https://android-review.googlesource.com/c/platform/external/zucchini/+/1802897
Change-Id: Ie7970f03980c9283f1203277c6b15690530da8ba
-rw-r--r-- | Android.bp | 34 | ||||
-rw-r--r-- | mapped_file.cc | 2 | ||||
-rw-r--r-- | zucchini_main_aosp.cc | 69 |
3 files changed, 103 insertions, 2 deletions
@@ -24,6 +24,7 @@ filegroup { "image_index.cc", "imposed_ensemble_matcher.cc", "io_utils.cc", + "mapped_file.cc", "patch_reader.cc", "patch_writer.cc", "reference_bytes_mixer.cc", @@ -41,6 +42,16 @@ filegroup { } filegroup { + name: "zucchini_srcs", + srcs: [ + "main_utils.cc", + "zucchini_commands.cc", + "zucchini_integration.cc", + "zucchini_main_aosp.cc", + ], +} + +filegroup { name: "libzucchini_headers", srcs: [ "abs32_utils.h", @@ -108,7 +119,7 @@ cc_library { include_build_directory: false, srcs: [":libzucchini_srcs"], local_include_dirs: ["aosp/include"], - export_include_dirs: ["aosp/include"], + export_include_dirs: ["aosp/include/components"], static_libs: [ "libchrome", "libcutils", @@ -122,3 +133,24 @@ cc_library { ], visibility: ["//system/update_engine:__subpackages__"], } + +cc_binary { + name: "zucchini", + host_supported: true, + device_supported: true, + srcs: [":zucchini_srcs"], + include_build_directory: false, + local_include_dirs: ["aosp/include"], + static_libs: [ + "libchrome", + "libcutils", + "libzucchini", + ], + shared_libs: [ + "liblog", + "libbase", + ], + cflags: [ + "-Wno-unused-parameter", + ], +} diff --git a/mapped_file.cc b/mapped_file.cc index a742414..2ea973c 100644 --- a/mapped_file.cc +++ b/mapped_file.cc @@ -49,7 +49,7 @@ MappedFileWriter::MappedFileWriter(const base::FilePath& file_path, MappedFileWriter::~MappedFileWriter() { if (!HasError() && delete_behavior_ == kManualDeleteOnClose && - !file_path_.empty() && !base::DeleteFile(file_path_)) { + !file_path_.empty() && !base::DeleteFile(file_path_, false)) { error_ = "Failed to delete file."; } } diff --git a/zucchini_main_aosp.cc b/zucchini_main_aosp.cc new file mode 100644 index 0000000..4e410a5 --- /dev/null +++ b/zucchini_main_aosp.cc @@ -0,0 +1,69 @@ +// +// Copyright (C) 2021 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This file is exactly the same as zucchini_main.cc, except with a few fixes +// that make it compatible with AOSP version of liblog + +#include <iostream> + +#include "base/command_line.h" +#include "base/logging.h" +#include "base/process/memory.h" +#include "build/build_config.h" +#include "main_utils.h" + +#if defined(OS_WIN) +#include "base/win/process_startup_helper.h" +#endif // defined(OS_WIN) + +namespace { + +void InitLogging() { + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; + // settings.log_file_path = nullptr; + settings.lock_log = logging::DONT_LOCK_LOG_FILE; + settings.delete_old = logging::APPEND_TO_OLD_LOG_FILE; + bool logging_res = logging::InitLogging(settings); + CHECK(logging_res); +} + +void InitErrorHandling(const base::CommandLine &command_line) { + base::EnableTerminationOnHeapCorruption(); + base::EnableTerminationOnOutOfMemory(); +#if defined(OS_WIN) + base::win::RegisterInvalidParamHandler(); + base::win::SetupCRT(command_line); +#endif // defined(OS_WIN) +} + +} // namespace + +int main(int argc, const char *argv[]) { + // Initialize infrastructure from base. + base::CommandLine::Init(argc, argv); + const base::CommandLine &command_line = + *base::CommandLine::ForCurrentProcess(); + InitLogging(); + InitErrorHandling(command_line); + zucchini::status::Code status = + RunZucchiniCommand(command_line, std::cout, std::cerr); + if (!(status == zucchini::status::kStatusSuccess || + status == zucchini::status::kStatusInvalidParam)) { + std::cerr << "Failed with code " << static_cast<int>(status) << std::endl; + } + return static_cast<int>(status); +} |