Chinese README: README.zh-CN.md
These Dockerfiles are the build-image definitions used by local verification, CI, and the legacy VisualGDB debug container.
Image layout:
sources/stores the shared dependency version manifest, GitHub source-fetch helpers, target build scripts,lv_conf.h, and the legacy ARM toolchain bundles. Portable third-party source snapshots are not checked in locally anymore.x86Legacy/keeps the legacy Wheezy-based X86 debug image, including MiniGUI 2.0.4, SSH, and the old toolchain/debug baseline.x86/is the modern native i386 build image. It stays aligned with the non-legacy platform images and does not carry the old MiniGUI/SSH/debug stack.arm/forARMx64/forX64arm64/forARM64loongson/forLA64
Shared dependency policy:
- All portable third-party dependencies are downloaded at build time from pinned GitHub release/tag archives and verified with SHA256 before extraction.
- The current pinned versions are
curl 8.10.1,freetype 2.13.3,libusb 1.0.23,sqlite 3.51.2,ffmpeg 4.4.5, andlvgl 9.5.0. libusbis intentionally pinned to1.0.23because1.0.24+switched to a C11 baseline, which is not a safe match for the legacy ARMgcc 4.6.1toolchain.sqlitestays aligned with the upstream app's3.51.2baseline so the image exposes a matching staticlibsqlite3.a, and it is fetched from the pinned GitHub mirror tag at image-build time like the other portable dependencies.- Every image now builds
freetype/sqlite/libusb/curl/ffmpeg/lvglfrom source and installs static libraries, headers, and pkg-config metadata for the target platform. lvglis built with the sharedlv_conf.h, with FreeType, QRCode, FFmpeg, and Linux framebuffer support enabled.x86Legacyvendors the requiredMiniGUI 2.0.4source archive locally so the legacy image stays buildable even if the upstream GitHub repository is renamed, deleted, or otherwise unavailable.
Batch build with Docker Compose:
docker-compose.ymlcan start all build images in parallel and bind-mount a host source directory into/LaneApp.docker-compose.ymlis the runtime entrypoint and pulls prebuilt images from GHCR by default.docker-compose.override.ymlonly carries the localbuilddefinitions. When you rundocker compose up --build, Compose uses the override and rebuilds the images locally before starting them.- Set
BUILD_DIRto the host directory you want to build, and optionally setBUILD_COMMAND(defaults tomake). - Optionally set
PCCT_IMAGE_PREFIX(defaults toghcr.io/maikebing) andPCCT_IMAGE_TAG(defaults tolatest) to switch image registry/tag. - The repo root also provides
compose-up-all.cmdandcompose-up-all.shwrapper scripts so you do not have to export the environment variables manually each time. - The wrapper scripts default to
pullmode, which only usesdocker-compose.ymland pulls remote images. Pass--buildor--mode buildto adddocker-compose.override.ymland rebuild the images locally. - The wrapper scripts default to the
alltarget set. You can narrow the run with--targets, for examplex64,arm64,x86,x64, orx86 x64. Supported targets arex86legacy,x86,arm,x64,arm64, andloongson. - PowerShell example:
$env:BUILD_DIR='D:/path/to/project'; $env:BUILD_COMMAND='make'; docker compose up --build - Bash example:
BUILD_DIR=/abs/path/to/project BUILD_COMMAND=make docker compose up --build - Windows
cmdexamples:compose-up-all.cmd D:\path\to\projectcompose-up-all.cmd D:\path\to\project --targets x64,arm64compose-up-all.cmd D:\path\to\project "cmake --build build" --build --targets x86,x64compose-up-all.cmd D:\path\to\project --mode build --targets all -- --abort-on-container-exit - Linux/macOS
shexamples:sh ./compose-up-all.sh /path/to/projectsh ./compose-up-all.sh /path/to/project --targets x64,arm64sh ./compose-up-all.sh /path/to/project "cmake --build build" --build --targets x86,x64sh ./compose-up-all.sh /path/to/project --mode build --targets all -- --abort-on-container-exit - The compose run exits after all service commands finish. Build outputs stay in the mounted host directory.
Legacy VisualGDB debug entrypoint:
- Start the local debug builder with
docker compose -f docker-compose.debug.yml up --build -d x86-debug-builder - The container exposes SSH on
127.0.0.1:2221, which matchesLaneApp-Debug.vgdbsettings x86Legacystill keeps the MiniGUI 2.0.4, SSH, and dual-targetarm + x86legacy workflow; the other images stay on the unified modern dependency stack.