LiHaohua 8d25731a6b Fix TS2345: handle nullable exit code in DockerSetup
r.code is number | null, use nullish coalescing to default to 1.
2026-04-29 20:39:15 +08:00

CardputerZero AppBuilder

Online build system for M5CardputerZero applications. Submit any public Git repository and get a ready-to-install .deb package — no local toolchain required.

How It Works

  1. Go to Actions > Build DEB Package > Run workflow

  2. Fill in the form:

    Field Required Example Description
    Repository URL Yes https://github.com/eggfly/M5CardputerZero-UserDemo.git Any public HTTP Git URL (GitHub, GitCode, Gitee, etc.)
    Branch No master Leave empty to use the repository's default branch
  3. The system automatically scans for app-builder.json files in the repo, builds each project, and packages them as .deb

  4. Download the .deb from the workflow run's Artifacts section

app-builder.json

Place this file in each project directory that should be built:

{
  "package_name": "userdemo",
  "version": "0.1",
  "app_name": "UserDemo",
  "bin_name": "M5CardputerZero-UserDemo",
  "description": "M5CardputerZero User Demo Application"
}

Install on Device

scp <package>_arm64.deb pi@<device-ip>:/tmp/
ssh pi@<device-ip> "sudo dpkg -i /tmp/<package>_arm64.deb"

Architecture

The CI pipeline runs on x86_64 and cross-compiles to ARM64 (aarch64) using the aarch64-linux-gnu- toolchain — the same approach used by the M5Stack_Linux_Libs SDK. This is significantly faster than emulated ARM64 builds.

User Input (repo URL)
        │
        ▼
  ┌──────────────┐     ┌──────────────┐     ┌──────────────┐     ┌──────────────┐
  │  git clone   │────▶│   discover   │────▶│ scons build  │────▶│  dpkg-deb    │
  │  --recursive │     │ app-builder  │     │ (x86→arm64)  │     │  packaging   │
  └──────────────┘     │    .json     │     └──────────────┘     └──────────────┘
                       └──────────────┘              │
                              │                      ▼
                        N projects          N × .deb artifacts
                        (parallel)            (download)

DEB Package Structure

Generated packages follow the APPLaunch packaging conventions:

<package>.deb
├── DEBIAN/
│   ├── control
│   ├── postinst      (enable & start systemd service)
│   └── prerm         (stop & disable service)
├── lib/systemd/system/
│   └── <package>.service
└── usr/share/APPLaunch/
    ├── applications/<package>.desktop
    ├── bin/<executable>
    ├── lib/
    └── share/
        ├── font/*.ttf
        └── images/*.png

Future: Desktop IDE

CardputerZero AppBuilder is planned to become a cross-platform desktop IDE (Windows, macOS, Linux) for building M5CardputerZero applications locally — a visual scaffold for beginners and hobbyists to create, build, and deploy apps to their devices.

License

MIT

S
Description
No description provided
Readme MIT 4.4 MiB
Languages
Rust 71.1%
C 14.8%
Python 7.8%
CMake 5.3%
JavaScript 0.6%
Other 0.4%