If an OTA contains compressed APEX inside it, then the device will need to allocate space on /data partition for their decompression. In order to calculate how much space the OTA process needs to allocate, the process needs more information about the APEX contained inside the OTA. In this CL, we are adding functionality to the OTA generation script that allows us to gather information about the APEX stored inside the target-file zip. However, we did not integrate the new functionality with the ota_from_target_files.py scrip yet. That will be done on follow up CL. Bug: 172911822 Test: atest releasetools_py3_test Change-Id: I2ac42018f628c2c21527b3e086be1f4e7e7247ad
605 lines
13 KiB
Plaintext
605 lines
13 KiB
Plaintext
// Copyright (C) 2019 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.
|
|
|
|
//
|
|
// Module-specific defaults.
|
|
//
|
|
// For module X, if we need to build it both as a library and an executable:
|
|
// - A default rule `releasetools_X_defaults` is created, which lists `srcs`, `libs` and
|
|
// `required` properties.
|
|
// - `python_library_host` and `python_binary_host` are created by listing
|
|
// `releasetools_X_defaults` in their defaults.
|
|
//
|
|
|
|
python_defaults {
|
|
name: "releasetools_add_img_to_target_files_defaults",
|
|
srcs: [
|
|
"add_img_to_target_files.py",
|
|
],
|
|
libs: [
|
|
"releasetools_build_image",
|
|
"releasetools_build_super_image",
|
|
"releasetools_common",
|
|
],
|
|
required: [
|
|
"care_map_generator",
|
|
],
|
|
}
|
|
|
|
python_defaults {
|
|
name: "releasetools_build_image_defaults",
|
|
srcs: [
|
|
"build_image.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
"releasetools_verity_utils",
|
|
],
|
|
required: [
|
|
"blk_alloc_to_base_fs",
|
|
"e2fsck",
|
|
"mkerofsimage.sh",
|
|
"mkuserimg_mke2fs",
|
|
"simg2img",
|
|
"tune2fs",
|
|
],
|
|
}
|
|
|
|
python_defaults {
|
|
name: "releasetools_build_super_image_defaults",
|
|
srcs: [
|
|
"build_super_image.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
python_defaults {
|
|
name: "releasetools_img_from_target_files_defaults",
|
|
srcs: [
|
|
"img_from_target_files.py",
|
|
],
|
|
libs: [
|
|
"releasetools_build_super_image",
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
python_defaults {
|
|
name: "releasetools_check_target_files_vintf_defaults",
|
|
srcs: [
|
|
"check_target_files_vintf.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
],
|
|
required: [
|
|
"checkvintf",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "ota_metadata_proto",
|
|
version: {
|
|
py2: {
|
|
enabled: true,
|
|
},
|
|
py3: {
|
|
enabled: true,
|
|
},
|
|
},
|
|
srcs: [
|
|
"ota_metadata.proto",
|
|
],
|
|
proto: {
|
|
canonical_path_from_root: false,
|
|
},
|
|
}
|
|
|
|
python_defaults {
|
|
name: "releasetools_ota_from_target_files_defaults",
|
|
srcs: [
|
|
"edify_generator.py",
|
|
"non_ab_ota.py",
|
|
"ota_from_target_files.py",
|
|
"ota_utils.py",
|
|
"target_files_diff.py",
|
|
],
|
|
libs: [
|
|
"ota_metadata_proto",
|
|
"releasetools_check_target_files_vintf",
|
|
"releasetools_common",
|
|
"releasetools_verity_utils",
|
|
"apex_manifest",
|
|
],
|
|
required: [
|
|
"brillo_update_payload",
|
|
"checkvintf",
|
|
"lz4",
|
|
"toybox",
|
|
"unpack_bootimg",
|
|
"deapexer",
|
|
],
|
|
target: {
|
|
darwin: {
|
|
// required module "brillo_update_payload" is disabled on darwin
|
|
enabled: false,
|
|
},
|
|
},
|
|
}
|
|
|
|
//
|
|
// Host libraries.
|
|
//
|
|
|
|
python_defaults {
|
|
name: "releasetools_library_defaults",
|
|
version: {
|
|
py2: {
|
|
enabled: true,
|
|
},
|
|
py3: {
|
|
enabled: true,
|
|
},
|
|
},
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_add_img_to_target_files",
|
|
defaults: [
|
|
"releasetools_library_defaults",
|
|
"releasetools_add_img_to_target_files_defaults",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_apex_utils",
|
|
defaults: ["releasetools_library_defaults"],
|
|
srcs: [
|
|
"apex_utils.py",
|
|
],
|
|
libs: [
|
|
"apex_manifest",
|
|
"ota_metadata_proto",
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_build_image",
|
|
defaults: [
|
|
"releasetools_library_defaults",
|
|
"releasetools_build_image_defaults",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_build_super_image",
|
|
defaults: [
|
|
"releasetools_library_defaults",
|
|
"releasetools_build_super_image_defaults",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_check_target_files_vintf",
|
|
defaults: [
|
|
"releasetools_library_defaults",
|
|
"releasetools_check_target_files_vintf_defaults",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_common",
|
|
defaults: ["releasetools_library_defaults"],
|
|
srcs: [
|
|
"blockimgdiff.py",
|
|
"common.py",
|
|
"images.py",
|
|
"rangelib.py",
|
|
"sparse_img.py",
|
|
],
|
|
// Only the tools that are referenced directly are listed as required modules. For example,
|
|
// `avbtool` is not here, as the script always uses the one from info_dict['avb_avbtool'].
|
|
required: [
|
|
"aapt2",
|
|
"boot_signer",
|
|
"brotli",
|
|
"bsdiff",
|
|
"imgdiff",
|
|
"minigzip",
|
|
"lz4",
|
|
"mkbootfs",
|
|
"signapk",
|
|
"toybox",
|
|
"unpack_bootimg",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_img_from_target_files",
|
|
defaults: [
|
|
"releasetools_library_defaults",
|
|
"releasetools_img_from_target_files_defaults",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_ota_from_target_files",
|
|
defaults: [
|
|
"releasetools_library_defaults",
|
|
"releasetools_ota_from_target_files_defaults",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_verity_utils",
|
|
defaults: ["releasetools_library_defaults"],
|
|
srcs: [
|
|
"verity_utils.py",
|
|
],
|
|
required: [
|
|
"append2simg",
|
|
"build_verity_metadata",
|
|
"build_verity_tree",
|
|
"fec",
|
|
],
|
|
}
|
|
|
|
//
|
|
// Host binaries.
|
|
//
|
|
|
|
python_defaults {
|
|
name: "releasetools_binary_defaults",
|
|
version: {
|
|
py2: {
|
|
enabled: true,
|
|
embedded_launcher: true,
|
|
},
|
|
py3: {
|
|
enabled: false,
|
|
embedded_launcher: false,
|
|
},
|
|
},
|
|
// TODO (b/140144201) Build imgdiff from releasetools_common
|
|
required: [
|
|
"aapt2",
|
|
"boot_signer",
|
|
"brotli",
|
|
"bsdiff",
|
|
"imgdiff",
|
|
"minigzip",
|
|
"lz4",
|
|
"mkbootfs",
|
|
"signapk",
|
|
"toybox",
|
|
"unpack_bootimg",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "add_img_to_target_files",
|
|
defaults: [
|
|
"releasetools_binary_defaults",
|
|
"releasetools_add_img_to_target_files_defaults",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "build_image",
|
|
defaults: [
|
|
"releasetools_binary_defaults",
|
|
"releasetools_build_image_defaults",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "build_super_image",
|
|
defaults: [
|
|
"releasetools_binary_defaults",
|
|
"releasetools_build_super_image_defaults",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "check_partition_sizes",
|
|
srcs: [
|
|
"check_partition_sizes.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
],
|
|
defaults: [
|
|
"releasetools_binary_defaults",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "check_ota_package_signature",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"check_ota_package_signature.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
],
|
|
required: [
|
|
"delta_generator",
|
|
],
|
|
target: {
|
|
darwin: {
|
|
// required module "delta_generator" is disabled on darwin
|
|
enabled: false,
|
|
},
|
|
},
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "check_target_files_signatures",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"check_target_files_signatures.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
],
|
|
required: [
|
|
"aapt",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "check_target_files_vintf",
|
|
defaults: [
|
|
"releasetools_binary_defaults",
|
|
"releasetools_check_target_files_vintf_defaults"
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "img_from_target_files",
|
|
defaults: [
|
|
"releasetools_binary_defaults",
|
|
"releasetools_img_from_target_files_defaults",
|
|
],
|
|
}
|
|
|
|
python_defaults {
|
|
name: "releasetools_find_shareduid_violation_defaults",
|
|
srcs: [
|
|
"find_shareduid_violation.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "find_shareduid_violation",
|
|
defaults: [
|
|
"releasetools_binary_defaults",
|
|
"releasetools_find_shareduid_violation_defaults",
|
|
],
|
|
}
|
|
|
|
python_library_host {
|
|
name: "releasetools_find_shareduid_violation",
|
|
defaults: [
|
|
"releasetools_find_shareduid_violation_defaults",
|
|
"releasetools_library_defaults",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "make_recovery_patch",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"make_recovery_patch.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "merge_builds",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"merge_builds.py",
|
|
],
|
|
libs: [
|
|
"releasetools_build_super_image",
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "merge_target_files",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"merge_target_files.py",
|
|
],
|
|
libs: [
|
|
"releasetools_add_img_to_target_files",
|
|
"releasetools_build_super_image",
|
|
"releasetools_check_target_files_vintf",
|
|
"releasetools_common",
|
|
"releasetools_find_shareduid_violation",
|
|
"releasetools_img_from_target_files",
|
|
"releasetools_ota_from_target_files",
|
|
],
|
|
required: [
|
|
"checkvintf",
|
|
"host_init_verifier",
|
|
],
|
|
target: {
|
|
darwin: {
|
|
// libs dep "releasetools_ota_from_target_files" is disabled on darwin
|
|
enabled: false,
|
|
},
|
|
},
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "ota_from_target_files",
|
|
defaults: [
|
|
"releasetools_binary_defaults",
|
|
"releasetools_ota_from_target_files_defaults",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "ota_package_parser",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"ota_package_parser.py",
|
|
"rangelib.py",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "sparse_img",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"rangelib.py",
|
|
"sparse_img.py",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "sign_apex",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"sign_apex.py",
|
|
],
|
|
libs: [
|
|
"releasetools_apex_utils",
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "sign_target_files_apks",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"sign_target_files_apks.py",
|
|
],
|
|
libs: [
|
|
"releasetools_add_img_to_target_files",
|
|
"releasetools_apex_utils",
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "validate_target_files",
|
|
defaults: ["releasetools_binary_defaults"],
|
|
srcs: [
|
|
"validate_target_files.py",
|
|
],
|
|
libs: [
|
|
"releasetools_common",
|
|
],
|
|
}
|
|
|
|
//
|
|
// Tests.
|
|
//
|
|
|
|
python_defaults {
|
|
name: "releasetools_test_defaults",
|
|
srcs: [
|
|
"check_ota_package_signature.py",
|
|
"check_partition_sizes.py",
|
|
"check_target_files_signatures.py",
|
|
"make_recovery_patch.py",
|
|
"merge_target_files.py",
|
|
"ota_package_parser.py",
|
|
"sign_apex.py",
|
|
"sign_target_files_apks.py",
|
|
"validate_target_files.py",
|
|
|
|
"test_*.py",
|
|
],
|
|
libs: [
|
|
"releasetools_add_img_to_target_files",
|
|
"releasetools_apex_utils",
|
|
"releasetools_build_image",
|
|
"releasetools_build_super_image",
|
|
"releasetools_check_target_files_vintf",
|
|
"releasetools_common",
|
|
"releasetools_find_shareduid_violation",
|
|
"releasetools_img_from_target_files",
|
|
"releasetools_ota_from_target_files",
|
|
"releasetools_verity_utils",
|
|
],
|
|
data: [
|
|
"testdata/**/*",
|
|
":com.android.apex.compressed.v1",
|
|
":com.android.apex.compressed.v1_original",
|
|
],
|
|
target: {
|
|
darwin: {
|
|
// libs dep "releasetools_ota_from_target_files" is disabled on darwin
|
|
enabled: false,
|
|
},
|
|
},
|
|
required: [
|
|
"deapexer",
|
|
],
|
|
}
|
|
|
|
python_test_host {
|
|
name: "releasetools_test",
|
|
defaults: ["releasetools_test_defaults"],
|
|
main: "test_utils.py",
|
|
version: {
|
|
py2: {
|
|
enabled: true,
|
|
// When using embedded launcher, atest will try (but may fail) to load libc++.so from
|
|
// host, because the test executable won't be able to find the needed libs via its
|
|
// runpath.
|
|
embedded_launcher: false,
|
|
},
|
|
py3: {
|
|
enabled: false,
|
|
embedded_launcher: false,
|
|
},
|
|
},
|
|
test_options: {
|
|
unit_test: true,
|
|
},
|
|
}
|
|
|
|
python_test_host {
|
|
name: "releasetools_py3_test",
|
|
defaults: ["releasetools_test_defaults"],
|
|
main: "test_utils.py",
|
|
version: {
|
|
py2: {
|
|
enabled: false,
|
|
embedded_launcher: false,
|
|
},
|
|
py3: {
|
|
enabled: true,
|
|
embedded_launcher: false,
|
|
},
|
|
},
|
|
test_options: {
|
|
unit_test: true,
|
|
},
|
|
}
|