406818967d
Merge pull request !84 from zhangcan42/master |
||
---|---|---|
.gitee | ||
test | ||
zipalign | ||
.gitattributes | ||
blocks_manager.py | ||
build_hmp.py | ||
build_module_img.py | ||
build_module_package.py | ||
build_pkcs7.py | ||
build_update.py | ||
bundle.json | ||
code_yacc.py | ||
create_hashdata.py | ||
create_signed_data.py | ||
create_update_package.py | ||
gigraph_process.py | ||
image_class.py | ||
LICENSE | ||
log_exception.py | ||
OAT.xml | ||
patch_package_process.py | ||
README_zh.md | ||
README.md | ||
script_generator.py | ||
transfers_manager.py | ||
unpack_updater_package.py | ||
update_package.py | ||
utils.py | ||
vendor_script.py |
Packaging Tool
Introduction
The packaging tool is used to prepare an update package. It provides the following functions:
-
Creating a full update package: The update package contains only the data necessary for full image update.
-
Creating a differential update package: The update package contains only the data necessary for differential image update.
-
Creating an update package with changeable partitions: The update package contains the partition table and full image data, which are used for partition change processing and image restoration after partition change.
Directory Structure
/base/update/packaging_tools
├── lib # Dependency libraries of the packaging tool.
├── blocks_manager.py # BlocksManager class for block management
├── build_update.py # Access to the packaging tool for differential update packages
├── gigraph_process.py # Stash for re-sorting the ActionList
├── image_class.py # Full image and sparse image parsing
├── log_exception.py # Global log system with custom exceptions
├── patch_package_process.py # Differential image processing for obtaining patch difference through differential calculation on blocks
├── script_generator.py # Update script generator
├── transfers_manager.py # ActionInfo object creation
├── update_package.py # Update package format management and update package writing
├── utils.py # Options management and related functions
└── vendor_script.py # Extended update scripts
Description
Running environment:
-
Ubuntu 18.04 or later
-
Python 3.5 or later
-
Python library xmltodict, which is used to parse XML files and needs to be installed independently.
-
bsdiff executable program, which performs differential calculation to generate the patch package
-
imgdiff executable program, which performs differential calculation on the zip, gz, and lz4 files to generate the patch package
-
e2fsdroid executable program, which performs differential calculation to generate the map files of an image
Parameter configuration:
Positional arguments:
target_package Target package file path.
update_package Update package file path.
Optional arguments:
-h, --help Show this help message and exit.
-s SOURCE_PACKAGE, --source_package SOURCE_PACKAGE Source package file path.
-nz, --no_zip No zip mode, which means to output update package without zip.
-pf PARTITION_FILE, --partition_file PARTITION_FILE Variable partition mode, which means to partition list file path.
-sa {ECC,RSA}, --signing_algorithm {ECC,RSA} Signing algorithms supported by the tool, including ECC and RSA.
-ha {sha256,sha384}, --hash_algorithm {sha256,sha384} Hash algorithms supported by the tool, including sha256 and sha384.
-pk PRIVATE_KEY, --private_key PRIVATE_KEY Private key file path.
Example code for creating a full update package:
python build_update.py ./target/ ./target/package -pk ./target/updater_config/rsa_private_key2048.pem
Example code for creating a differential update package:
python build_update.py -s source.zip ./target/ ./target/package -pk./target/updater_config/rsa_private_key2048.pem
Repositories Involved
Update subsystem
update_packaging_tools