Director’s Cut (DX) Version¶
Background¶
As it was shown in the introduction, ACBS was meant to replace the original ABBS utility with better reliability and functionalities. However, later it was clear that ACBS itself was riddled with numerous bugs and issues.
After years of disrepair, the original ACBS was apparently beyond repair. Although the members of the AOSC community were getting used to the workarounds and quirks of ACBS, a better solution was still much desired.
The original author, liushuyu, decided to face on the challenge. It took him what feels like three months to complete the rewrite, and the result is then the DX version.
Version Number¶
The DX version still uses the same version schema as the original. The first release of the DX version is
version 20200615
.
Behavioral Changes¶
Since the DX version is a complete re-implementation, there are some changes to its behaviors:
Dependency resolution: The original version uses a dumb algorithm, which will spawn a new thread to build the dependent package before the package you requested. The new version will use the Tarjan search algorithm to determine what and in which order the dependencies should be built in advance.
Parser: The original version uses bash itself to parse the build files. This is proven to be unreliable. The new version uses
bashvar.py
fromabbs-meta
.Source fetching: The new version now name the source files using their checksum hashes to avoid name collisions. The Git repository is now fetched using the “bare repository” mode, and during the checkout phase, the repository is checked out using “detached” mode. In this case, the
.git
folder will not exist in the build directory.Overall reliability: The new version now uses type checking to ensure basic stability. No type errors are allowed to pass through under the newly set up CI system.