Ship Magisk like GOLDEN; KernelSU optional recycle only; parallel to sunfish-a16-rom standby.
94 lines
3.7 KiB
Markdown
94 lines
3.7 KiB
Markdown
# 003 — Build notes (LOS 23.2 sunfish vanilla)
|
|
|
|
**Host:** `rom-dev01` as `android-build`
|
|
**Tree:** `/srv/rom/src/lineage`
|
|
**Artifacts:** `/srv/rom/artifacts/003-…`
|
|
**Logs:** `/srv/rom/logs/003-…`
|
|
**ccache:** `CCACHE_DIR=/srv/rom/ccache` (export in build shell)
|
|
|
|
## Parallelism — squeeze the HW
|
|
|
|
Guest is **8 vCPU / ~62 GiB**. Policy for this host:
|
|
|
|
| Job | Default | Notes |
|
|
|-----|---------|--------|
|
|
| `mka bacon` / Soong ninja | **`-j8`** | Match `nproc`; do not leave `-j4` idle |
|
|
| `repo sync` | `-j8` OK | Network-bound; `-j4` fine if flaky |
|
|
| OOM during link | try `-j6` | Only then; document why |
|
|
|
|
Do **not** pass `-j` to `brunch` (it eats extra args as variant). Use
|
|
`breakfast` + `mka bacon -j8`, or `/srv/rom/logs/003-build/run-brunch.sh`.
|
|
|
|
If `mpstat` shows high **%steal**, the Proxmox host is oversubscribed — fix
|
|
outside this repo (pin/dedicate vCPUs); guest governors usually unavailable.
|
|
|
|
## Manifest (wiki-verified 2026-09-13)
|
|
|
|
```bash
|
|
mkdir -p /srv/rom/src/lineage && cd /srv/rom/src/lineage
|
|
repo init -u https://github.com/LineageOS/android.git -b lineage-23.2 --git-lfs --no-clone-bundle
|
|
repo sync -c -j8
|
|
```
|
|
|
|
Primary: https://wiki.lineageos.org/devices/sunfish/build/
|
|
Branch `lineage-23.2` listed for sunfish.
|
|
|
|
## Build (after sync + proprietary blobs)
|
|
|
|
```bash
|
|
export CCACHE_DIR=/srv/rom/ccache
|
|
export USE_CCACHE=1
|
|
cd /srv/rom/src/lineage
|
|
source build/envsetup.sh
|
|
breakfast sunfish userdebug
|
|
# extract proprietary blobs: TheMuppets lineage-23.2 → vendor/google/sunfish
|
|
mka bacon -j8 # do NOT pass -j to brunch; wrapper: /srv/rom/logs/003-build/run-brunch.sh
|
|
```
|
|
|
|
Target expected: `lineage_sunfish-userdebug` (confirm after `breakfast`).
|
|
|
|
## Metadata to capture on success
|
|
|
|
- `repo manifest -r` → artifacts dir
|
|
- SHA-256 of zip/images
|
|
- compressed build log
|
|
- `-j` used, wall time, host `nproc`/RAM note
|
|
|
|
## Status
|
|
|
|
- [x] repo init (`/srv/rom/src/lineage`, `lineage-23.2`, 2026-09-13)
|
|
- [x] repo sync (`finished 2026-09-13T21:27:26Z exit=0`; ~180G; log `/srv/rom/logs/003-sync/sync.log`)
|
|
- [x] proprietary blobs policy documented (factory base + AXP/GOS diffs later)
|
|
- [x] TheMuppets `lineage-23.2` synced → `vendor/google/sunfish`
|
|
- [x] first successful build — `#### build completed successfully` /
|
|
`END … exit=0` (2026-09-14T13:52:46Z); j8 segment **06:45:43**
|
|
- [x] artifacts + `repo manifest -r` + SHA-256 + `brunch.log.gz` →
|
|
`/srv/rom/artifacts/003-vanilla/20260914-lineage-23.2-sunfish/`
|
|
(rsync → `.local-artifacts/…` on laptop)
|
|
- [x] flash LAB + smoke (`docs/003-flash-lab.md`) — done 2026-09-14;
|
|
gate → `004` (`docs/003-gate-handoff.md`)
|
|
|
|
## R7 note (vanilla `003`)
|
|
|
|
For the first vanilla build: **factory-equivalent blobs only**. AXP/Graphene
|
|
diffs land in later hardening/compat features — not in the clean baseline.
|
|
|
|
## Proprietary blobs (qué son)
|
|
|
|
Android open source **no** incluye todo lo que el Pixel necesita para radio,
|
|
cámara, firmware, etc. Esos binarios cerrados de Google/Qualcomm se llaman
|
|
**proprietary blobs** (o “vendor blobs”). Sin ellos, `brunch sunfish` no
|
|
arranca hardware real.
|
|
|
|
### Decision (owner 2026-09-13) — no overthink
|
|
|
|
| Layer | Approach |
|
|
|-------|----------|
|
|
| **Base blobs** | Factory Google / Lineage-equivalent extract (e.g. TheMuppets or `extract-files` from factory) — same hardware binaries stock uses |
|
|
| **AXP diffs** | Only sunfish-relevant proprietary/packaging diffs from AXP A15 reference |
|
|
| **GrapheneOS diffs** | Historical **sunfish A13** where still applicable; plus ideas from a **currently supported Pixel** when code is shared and still relevant (sunfish is EOL — do not assume every modern GOS change ports) |
|
|
|
|
Do **not** chase exotic blob sets for location quality; NLP/services matter more than swapping vendor GPS blobs.
|
|
|
|
|