Containerized, Podman-native AppImage build infrastructure for PicoForge.
This repository provides container environment definitions (Containerfiles) and build scripts for producing 4 AppImage release variants:
| Variant | C Library Target | Baseline / Target OS | Architecture | GHCR Builder Image Tag | Output Filename Pattern |
|---|---|---|---|---|---|
glibc-x86_64 |
glibc |
Rocky Linux 8 (glibc 2.28+) | x86_64 |
glibc-2.28-x86_64 |
picoforge_<version>_glibc-2.28_x86-64.AppImage |
glibc-aarch64 |
glibc |
Rocky Linux 8 (glibc 2.28+) | aarch64 |
glibc-2.28-aarch64 |
picoforge_<version>_glibc-2.28_aarch64.AppImage |
musl-x86_64 |
musl |
Alpine Linux (musl libc) | x86_64 |
musl-x86_64 |
picoforge_<version>_musl_x86-64.AppImage |
musl-aarch64 |
musl |
Alpine Linux (musl libc) | aarch64 |
musl-aarch64 |
picoforge_<version>_musl_aarch64.AppImage |
- Podman-Native: All build environments are defined via dedicated
Containerfiles (Containerfile.glibc-x86_64,Containerfile.glibc-aarch64,Containerfile.musl-x86_64,Containerfile.musl-aarch64). - Prebuilt Image Caching via GHCR: Container images are built and pushed to GitHub Container Registry (
ghcr.io/${{ github.repository_owner }}/picoforge-appimage-builder:<tag>). During AppImage builds, Podman pulls the prebuilt image in ~5 seconds instead of building from scratch. - glibc Compatibility Floor: Built on Rocky Linux 8 (
glibc 2.28) withgcc-toolset-13, ensuring wide backward compatibility across standard desktop distributions (Ubuntu 20.04+, Debian 10+, RHEL 8+, Fedora, Arch). - musl Compatibility: Built on Alpine Linux with dynamically linked
musllibraries for musl-based distributions (Alpine, Void Linux, Chimera Linux, etc.). - Host Dependencies: All required shared libraries are bundled inside the AppImage by
linuxdeploy, with the exception oflibpcsclite.so.1(the smartcard daemon library, which talks topcscdon the host system).
To build any variant locally, clone picoforge inside this directory (or mount your local copy of picoforge):
# 1. Build the Podman container image
podman build -t picoforge-appimage-builder:glibc-2.28-x86_64 -f Containerfile.glibc-x86_64 .
# 2. Run the build script inside the container
podman run --rm -v $(pwd)/..:/workspace:z picoforge-appimage-builder:glibc-2.28-x86_64 /workspace/picoforge-linux-builds/build.sh glibc-x86_64The resulting AppImage will be placed in dist/.
publish-containers.yml: Automatically builds and pushes all 4 builder images to GHCR whenever anyContainerfile.*changes.build-appimages.yml: Pulls prebuilt builder images from GHCR (with local build fallback), executespodman runto compile PicoForge, and uploads/releases the resulting AppImages.