The main purpose of BringAuto Packager is to easily build and store binaries and libraries for huge system base that we want to support.
BringAuto Packager (BAP) uses docker as a build environment and Git LFS as a storage backend.
Both of these technologies (Git, Docker) are well known and do not need any special training for programmers who want to use them.
Following terms are reffered in this documentation:
- Package - is a set of "data" mainly represented by files stored on the computer disk
- Package Group - is a set of Packages that share common properties; the meaning of "common properties" term is context dependent, in most cases it means "share the same code"
- Config - is a json file representing one Package
- Context - is a directory where all Config files (including Dockerfiles for images) are stored
- Package Repository - is a storage (directory) where built Packages are stored
Each Package has exactly one Config.
Each Package belongs to a Package Group.
Each docker image has a name assigned.
Docker images are referred from Config by it's name.
Each Package has a package_name, version_tag and platform_string represented as a string.
These three attributes are unique identification of the Package.
Let A, B are Packages. We say that A is equal to B if and only if
package_nameof A is equal topackage_nameof B,version_tagof A is equal toversion_tagof B,platform_stringof A is equal toplatform_stringof B.
Packages in the Package Repository are identified by Package ID.
Package name is a string.
Each Package name consist from three parts:
package_name= <base_package_name><debug_suffix><library_type>prefix,base_package_nameanddebug_suffixare strings.base_package_nameshould contain only [a-zA-Z0-9-] characters.
prefix= "lib"debug_suffix= "d" if the Package is built as "Debug"debug_suffix= "" if the Package is built as "Release"library_type= "-dev" if the Package is development package (contains headers, ...)library_type= "" if the Package contains only runtime lib
prefix= ""debug_suffix= "d" if the Package is built as "Debug"debug_suffix= "" if the Package is built as "Release"library_type= ""