Build for Linux
scripts/build-linux.sh
The output is build-linux/EpicCashDesktop-<version>-x86_64.AppImage.
Linux release builds always run in an Ubuntu 22.04 container, never on the host. A binary needs the glibc it was linked against, so building on the oldest supported system gives an app that starts on 22.04 and on every newer one.
Needs
- Docker.
git,rsyncandtaron the host.curlandjqon the host, unless you build without Tor: the script fetches the Tor bundle there (tools/fetch-tor.sh).- Clones of LEPIC and lepic-flutter that contain the pinned commits. The script reads them from
LEPIC_REPOandLEPIC_FLUTTER_REPO(default$HOME/lepicand$HOME/lepic-flutter; see Build from source).
What it does
- Exports LEPIC at
tools/lepic.revand lepic-flutter attools/lepic-flutter.revinto a cache folder outside the repository, and checks that the two pins agree. - Builds the container image from
scripts/linux/Dockerfile. - Copies a snapshot of the committed tree into a work folder, so the build never touches
app/buildor.dart_tool. - In the container: builds LEPIC (
cargo xtask mobile --package), runsflutter build linux --release, and packs the AppImage.
Switches
| Variable | Effect |
|---|---|
WFE_WORKTREE=1 | Build the working tree, uncommitted changes included, instead of HEAD. The build id gets -dirty when the tree has changes. |
WFE_TOR=0 | Build without Tor; see Build variants. |
WFE_TARGET | Flutter entry point. Default lib/main_desktop.dart. |
WFE_NODE_BIN | Path to an epic node binary to bundle as the built-in node. |
WFE_BUILD_LEPIC=0 | Skip the LEPIC build and use the library already in native/. |
LEPIC_REPO, LEPIC_FLUTTER_REPO | Where the pinned commits are read from. |
Extra arguments are passed on to flutter build linux.
Toolchain pins
- Ubuntu 22.04 base image,
scripts/linux/Dockerfile. - Flutter:
scripts/linux/flutter.version(currently 3.47.5). - Rust: the
channelin LEPIC'srust-toolchain.toml, passed to the image asRUST_VERSION. - appimagetool 1.9.1 with the type2 runtime 20251108, both checked against pinned SHA-256 sums.
Build caches are Docker volumes named wfe-linux-pub, wfe-linux-cargo, wfe-linux-home,
wfe-linux-build and wfe-linux-lepic-target. The image is large, about 4 GB.
Running the AppImage
The AppImage runtime is a static binary with libfuse3 built in. It needs no libfuse2, only a
fusermount3 helper, which a default Ubuntu desktop has. Without FUSE:
./EpicCashDesktop-<version>-x86_64.AppImage --appimage-extract-and-run
glibc, GTK and the other system libraries are not bundled. The system must provide GTK 3,
libsecret-1-0 and libEGL/GL (Mesa). A minimal container lacks libsecret and libEGL.
The app keeps its data in ~/.epic_cash_desktop. For install steps for users, see
Install.