This class helps export a list of regions comprising a super partition, and what the contents of those regions should be. It is very similar to ImageBuilder, except that it does not require actual partition image files, nor does it actually write an image file to disk. The goal is to support building an in-memory super image that uses as little memory and backing storage as possible. For example, fastboot can use this to upload a super image without having to read and write gigabytes of unnecessary data. Since the goal is to optimize fastboot, we've taken some shortcuts here. Retrofit devices and other edge-casey behavior are safely rejected. We also don't rely on libsparse behavior here, and attempt to make the translation to sparse records as trivial as possible, by explicitly declaring where fill/dontcare gaps are, and only exporting 4KB aligned regions. Hopefully this will allow the code to be portable to non-fastboot consumers. Bug: 266982466 Test: liblp_test Change-Id: I1b41d233bc4512c4b62e19603e8e77bc5867cfab
124 lines
2.7 KiB
Text
124 lines
2.7 KiB
Text
//
|
|
// Copyright (C) 2018 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.
|
|
//
|
|
|
|
package {
|
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
|
}
|
|
|
|
liblp_lib_deps = [
|
|
"libbase",
|
|
"liblog",
|
|
"libcrypto_utils",
|
|
"libsparse",
|
|
"libext4_utils",
|
|
"libz",
|
|
]
|
|
|
|
cc_library {
|
|
name: "liblp",
|
|
host_supported: true,
|
|
ramdisk_available: true,
|
|
vendor_ramdisk_available: true,
|
|
recovery_available: true,
|
|
defaults: ["fs_mgr_defaults"],
|
|
cppflags: [
|
|
"-D_FILE_OFFSET_BITS=64",
|
|
],
|
|
srcs: [
|
|
"builder.cpp",
|
|
"super_layout_builder.cpp",
|
|
"images.cpp",
|
|
"partition_opener.cpp",
|
|
"property_fetcher.cpp",
|
|
"reader.cpp",
|
|
"utility.cpp",
|
|
"writer.cpp",
|
|
],
|
|
shared_libs: [
|
|
"libcrypto",
|
|
] + liblp_lib_deps,
|
|
target: {
|
|
windows: {
|
|
enabled: true,
|
|
},
|
|
android: {
|
|
shared_libs: [
|
|
"libcutils",
|
|
],
|
|
},
|
|
},
|
|
export_include_dirs: ["include"],
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "liblp_test_defaults",
|
|
defaults: ["fs_mgr_defaults"],
|
|
cppflags: [
|
|
"-Wno-unused-parameter",
|
|
],
|
|
static_libs: [
|
|
"libcutils",
|
|
"libgmock",
|
|
"liblp",
|
|
"libcrypto_static",
|
|
] + liblp_lib_deps,
|
|
header_libs: [
|
|
"libstorage_literals_headers",
|
|
],
|
|
target: {
|
|
android: {
|
|
srcs: [
|
|
"device_test.cpp",
|
|
"io_test.cpp",
|
|
],
|
|
static_libs: [
|
|
"libfs_mgr",
|
|
],
|
|
}
|
|
},
|
|
stl: "libc++_static",
|
|
srcs: [
|
|
"builder_test.cpp",
|
|
"super_layout_builder_test.cpp",
|
|
"test_partition_opener.cpp",
|
|
"utility_test.cpp",
|
|
],
|
|
}
|
|
|
|
cc_test {
|
|
name: "liblp_test",
|
|
defaults: ["liblp_test_defaults"],
|
|
test_suites: ["device-tests"],
|
|
auto_gen_config: true,
|
|
require_root: true,
|
|
host_supported: true
|
|
}
|
|
|
|
cc_test {
|
|
name: "vts_core_liblp_test",
|
|
defaults: ["liblp_test_defaults"],
|
|
test_suites: ["vts"],
|
|
auto_gen_config: true,
|
|
test_options: {
|
|
min_shipping_api_level: 29,
|
|
},
|
|
require_root: true,
|
|
}
|
|
|
|
cc_test {
|
|
name: "vts_kernel_liblp_test",
|
|
defaults: ["liblp_test_defaults"],
|
|
}
|