Files
build/tools/releasetools/Android.bp
Mohammad Samiul Islam 9fd5886e23 Create a function that can generate ApexInfo using target-files
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
2021-01-22 20:13:32 -05:00

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