- Java 56.6%
- Go 29.4%
- Shell 8.9%
- C 1.9%
- Makefile 1.3%
- Other 1.9%
The docs only ever showed .../releases/download/v2026.08.08-checkpoint, which is a URL prefix used as a shell variable in the curl loop. It resolves only with a filename appended, so pasting it into a browser returns 404 -- which is exactly what happened. Added the release page link and said plainly why the prefix is not one. |
||
|---|---|---|
| apps | ||
| docs | ||
| manifests | ||
| patches | ||
| rootdir | ||
| scripts | ||
| .gitignore | ||
| AndroidProducts.mk | ||
| BoardConfig.mk | ||
| BUILDING.md | ||
| device.mk | ||
| lineage.dependencies | ||
| lineage_xyauto_bengal.mk | ||
| prebuilt-SHA256SUMS.txt | ||
| README.md | ||
XYAUTO / Podofo SM4250 head unit — LineageOS 23.2 (hybrid, OEM kernel)
Everything needed to reproduce the working system image for the Podofo/XYAUTO Qualcomm Bengal (SM4250 / SM6115) head unit, and to work on the code.
BUILDING.md— the build guide. Host requirements, getting the source at the exact revisions this was built from, the prebuilts, building, packaging, and an honest description of what this is and is not.docs/STRATEGY.md— the project's own statement of the Stage-1 strategy and its rules. Authoritative on intent.
What this is, in one paragraph
A hybrid: system.img is built from LineageOS 23.2 source, while the kernel,
ramdisk, DTBO and vendor partition are kept as byte-frozen prebuilts from the
working OEM firmware. There is no kernel source — the unit runs a
4.19.157-perf OEM kernel that was never published, so TARGET_NO_KERNEL := true
and boot.img is consumed as-is. Package composition comes from PHH Treble, but
the output is a device build, not a universal GSI (BUILDING_GSI := false).
It is not yet a from-scratch device port; BUILDING.md says exactly how far it
is from one.
Layout
| path | what |
|---|---|
BoardConfig.mk, device.mk, lineage_xyauto_bengal.mk, … |
the device tree. This directory is device/xyauto/xyauto_bengal |
scripts/ |
import prebuilts, install into a Lineage checkout, guarded build launcher, PGM packaging |
manifests/ |
two pinned manifests — use the -upstream- one; see below |
apps/ |
four standalone Gradle apps; three ship inside vendor.img |
rootdir/, docs/ |
recovery fstab, hardware inventory, strategy |
patches/device-phh-treble/ |
the one patch install-into-source.sh applies |
patches/lineage-gsi-7bf212f4/ |
verbatim mirror of the 314 MisterZtr patches, in case that upstream disappears. Not the build input — see its PROVENANCE.md |
prebuilt/ |
not in Git — six images, 4.2 GB, on the release page |
prebuilt-SHA256SUMS.txt |
expected hashes of those six, committed here so they can be checked against the release |
Two manifests, and picking the wrong one wastes an afternoon:
lineage-23.2-pinned-upstream-20260807.xml— use this. All 1178 projects at commits that are fetchable from their real remotes.lineage-23.2-pinned-20260807.xml— a record of the reference machine's working heads. It includes 315 commits created locally byapply-patches.shthat exist on no remote, sorepo syncfails against it. Kept for provenance only.
apps/ is not part of the Android build and Soong ignores it — the apps are
built with Gradle and ship as APKs inside the frozen vendor image.
scripts/install-into-source.sh clones this whole repository into
device/xyauto/xyauto_bengal, so apps/ rides along harmlessly.
The short version
Read BUILDING.md before running this — several steps have non-obvious failure
modes documented there. You need roughly 450 GB of free disk and a lot of RAM.
# 1. source, at the exact revisions
mkdir lineage-23.2-src && cd lineage-23.2-src
repo init -u https://github.com/LineageOS/android.git -b lineage-23.2 --git-lfs
cp /path/to/repo/manifests/lineage-23.2-pinned-upstream-20260807.xml .repo/manifests/
repo init -m lineage-23.2-pinned-upstream-20260807.xml
repo sync --force-sync --optimized-fetch --no-tags --no-clone-bundle --prune -j4
# 2. the 314 compatibility patches -- AFTER sync, and mandatory
bash LineageOS_gsi/patches/apply-patches.sh .
# 3. prebuilt images -- browse them at
# https://forgejo.meinte.net/meinte/lineage23.2-hybrid-oemkernel/releases/tag/v2026.08.08-checkpoint
mkdir -p ~/xyauto-prebuilt && cd ~/xyauto-prebuilt
BASE=https://forgejo.meinte.net/meinte/lineage23.2-hybrid-oemkernel/releases/download/v2026.08.08-checkpoint
for f in SHA256SUMS.txt boot.img dtbo.img vendor.img system_ext.img product.img working-system.img; do
curl -L -O -C - "$BASE/$f"
done
sha256sum -c SHA256SUMS.txt # run from inside this directory
# 4. device tree into the checkout
cd /path/to/repo
./scripts/import-prebuilts.sh ~/xyauto-prebuilt
./scripts/install-into-source.sh /path/to/lineage-23.2-src
# 5. build
cd /path/to/lineage-23.2-src
source build/envsetup.sh
lunch lineage_xyauto_bengal-bp4a-userdebug
m systemimage
The download base above is a URL prefix, not a page — it only resolves with a filename appended, so pasting it into a browser gives a 404. To browse or download by hand, use the release page: https://forgejo.meinte.net/meinte/lineage23.2-hybrid-oemkernel/releases/tag/v2026.08.08-checkpoint
sha256sum -c must be run from the directory holding the images — the checksum
file lists bare filenames. The downloads support range requests, so -C -
resumes a broken transfer of the 2.7 GB image.
Reference build
The checkpoint this reproduces was built 2026-08-08 and boot-tested on the
reference unit: Android reached sys.boot_completed=1, the display stayed up,
and the MCU bridge, DSP daemon, system-suspend and keystore services were
verified running. lpdump validated both SUPER metadata slots and all four
logical extents, and e2fsck -fn passed for system, system-ext, product and
vendor.
Compatibility warning
Use this only on hardware with the same board, panel and partition layout.
Marketing names and exterior appearance are not sufficient proof. Flashing a
different XYAUTO board, panel configuration or SUPER layout can leave the unit
unable to boot or display an image. Read the safety rules at the end of
BUILDING.md and in docs/STRATEGY.md first.