android_system_core/fs_mgr/liblp/Android.bp
David Anderson e6cef616f1 liblp: Add a helper class for building sparse-compatible super image layouts.
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
2023-01-31 18:46:35 -08:00

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"],
}