default.xml pins every project of the baseos_brax3 build, under the Brax3_BaseOs namespace, with per-project clone-depth. README.md describes the layout and how to sync. |
||
|---|---|---|
| default.xml | ||
| README.md | ||
BaseOS for the BraX3
The repo manifest for BaseOS, an Android 16 distribution for the BraX3
smartphone (MediaTek MT6835 / Dimensity 6300), by Brax Technologies.
This repository is the entry point: it lists every other repository the build needs and pins each to an exact revision. Start here.
| Android | 16 (AOSP android-16.0.0_r4) |
| Base | LineageOS 23.2 |
| Kernel | 5.15.209-android13-8, GKI android13-5.15 |
| SoC | MediaTek MT6835 (Dimensity 6300), arm64 |
| Device | BraX3 (brax3) |
| Branch | baseos-1.0 |
| Lunch target | baseos_brax3-bp4a-userdebug |
Contents
- Quick start
- Prerequisites
- 1. Get the source
- 2. Resolve the Git LFS prebuilts
- 3. Build
- Troubleshooting
- Reporting a problem
Quick start
mkdir baseos && cd baseos
repo init -u https://git.os-source.co/Brax3_BaseOs/android_manifest -b baseos-1.0
repo sync -c --no-clone-bundle --no-tags -j8
repo forall -c 'git lfs ls-files -n >/dev/null 2>&1 && git lfs pull'
source build/envsetup.sh
lunch baseos_brax3-bp4a-userdebug
m -j"$(nproc)"
Read on if any of that fails — two of these steps have non-obvious failure modes, and both are described below.
If you would rather not manage the toolchain yourself, Brax3_BaseOs/build
provides a containerised builder that runs all of the above for you.
Prerequisites
- Disk: ~120 GB for the source tree, plus ~250 GB for build output.
- Memory: 64 GB recommended. 32 GB will work with reduced parallelism.
- OS: a current Linux distribution. Ubuntu 22.04+ or Debian 12+ are known
good; the AOSP toolchain itself is hermetic, so the host mostly needs to
provide
git,git-lfs,python3andrepo. git-lfsmust be installed before syncing. See step 2.
Get the repo tool if you do not have it:
mkdir -p ~/bin && export PATH=~/bin:$PATH
curl -fsSL https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
1. Get the source
repo init -u https://git.os-source.co/Brax3_BaseOs/android_manifest -b baseos-1.0
repo sync -c --no-clone-bundle --no-tags -j8
Brax3_BaseOs/* projects are fetched over HTTPS from git.os-source.co; AOSP
and LineageOS projects come from their own upstreams, as declared by the
remote elements in default.xml. Every project is pinned to an explicit
revision, so --depth is not used; per-project clone-depth is set in the
manifest where a shallow fetch is wanted. default.xml also sets
<default sync-c="true" sync-j="8"/>, so clients fetch only the pinned
revision of each project rather than every branch of every project.
The mirror lags Gerrit by a minute or two after a push, so a revision uploaded
moments ago may not be fetchable yet. Upload and review are unaffected: the
review attribute in default.xml is independent of the fetch URL.
2. Resolve the Git LFS prebuilts
This step is not optional, and skipping it costs you two hours.
repo sync fetches git objects but never runs the Git LFS smudge filter, so
LFS-backed files arrive as ~130-byte pointer stubs rather than their real
contents. The WebView prebuilts are LFS-backed:
external/chromium-webview/prebuilt/{arm,arm64,x86,x86_64}/webview.apk
Left unresolved, the build runs for about 1 hour 45 minutes and then fails at 86%:
external/chromium-webview/prebuilt/arm64/webview.apk: error: failed opening zip: Invalid file.
error: Command '[... aapt2 dump badging .../webview.apk]' returned non-zero exit status 1.
Run this after every sync:
repo forall -c 'git lfs ls-files -n >/dev/null 2>&1 && git lfs pull'
Verify — the arm64 APK should be around 247 MB:
$ file external/chromium-webview/prebuilt/arm64/webview.apk
Android package (APK), with AndroidManifest.xml
An unresolved stub reports ASCII text and begins with
version https://git-lfs.github.com/spec/v1.
3. Build
source build/envsetup.sh
lunch baseos_brax3-bp4a-userdebug
m -j"$(nproc)"
Do not build as root. Running
repoormundersudoproduces a root-owned tree that later non-root syncs and builds cannot write to. This is tedious to unpick; it is much easier not to do it.
The kernel is built from source by default, from
Brax3_BaseOs/android_kernel_mt6835 and
Brax3_BaseOs/android_vendor_mediatek_kernel_modules. Passing
BUILD_KERNEL=false uses the prebuilt kernel, DTB and vendor_dlkm modules
committed in device/brax/brax3-kernel instead; that flag is read by the
device's BoardConfig.mk. The two paths are meant to produce equivalent
images, which holds only while the committed prebuilts are the output of a
build of the current kernel source.
Artifacts land in out/target/product/brax3/. See Brax3_BaseOs/build for
the flashable-image targets and for the containerised build path.
Troubleshooting
Build fails at ~86% on webview.apk
Unresolved Git LFS pointers. See step 2. Run
the repo forall command and rebuild; no clean is required.
Permission denied during sync or build
The tree was probably created or synced as root. Restore ownership:
sudo chown -R "$(id -u):$(id -g)" .
Connection refused on port 29418
Transient Gerrit restart; port 29418 is the SSH review endpoint, not the fetch
path. Re-run repo sync; it is resumable. Adding --retry-fetches=3 makes it
ride out short outages.
Reporting a problem
For build problems, or a question about how this manifest pins a revision, contact Brax Technologies.
© Brax Technologies.