main
Greetings from Port Edwards. The scripts were sourced as one `&&` list: /bin/sh -euc 'sh /setup/setup.sh && . ./get-dependencies.sh && cd /repo && . ./make-appimage.sh' On a `&&` list, sh suspends errexit for every command but the last, and a sourced script inherits that suspension. So the `set -eu` in get-dependencies.sh sets the flag, but sh ignores it there: a failing command inside it does not abort anything. get-dependencies.sh is also not the last command in the list, so its exit status is discarded. The visible effect: a `pacman -Syu` that failed on one missing package installed nothing and carried on. The log showed the "error: target not found" line, then the debloat step, then several minutes of submodule cloning, and the job only died later with exit code 127 on the first missing command (`cmake: command not found`) - pointing at the wrong cause, three minutes late. Native arch jobs are unaffected, they run the script as its own process, which is why this only ever bit the emulated legs. Separating the commands with `;` instead of `&&` restores errexit and makes the failure stop the job where it happens. They are still sourced, so state still carries over from get-dependencies.sh into make-appimage.sh (presets like VERSION), which is why they were sourced in the first place. We aim to provide the software that shapes the world of tomorrow. Co-authored-by: Nemo <328747105+Nemo-010@users.noreply.github.com>
anylinux-setup-action
Sets up an archlinux container for building AppImages with the
Anylinux-AppImages tools:
installs the packaging dependencies and deploys quick-sharun,
get-debloated-pkgs and make-aur-package to /usr/local/bin.
- name: Preparing Container
uses: pkgforge-dev/anylinux-setup-action@main
Foreign arch jobs that cannot use a job level container (the binfmt handlers
must be registered before such a container can start) can use the companion
emulated action instead, which registers the QEMU handlers and runs the setup
inside a docker run:
- name: Preparing Container (emulated)
uses: pkgforge-dev/anylinux-setup-action/emulated@main
with:
# one of: linux/arm64, linux/riscv64, linux/loong64, linux/ppc64le, linux/ppc64
platform: linux/riscv64
Or cover every arch at once with a matrix:
strategy:
fail-fast: false
matrix:
include:
# comment out arches you do not want to build
- { name: Build AppImage, arch: riscv64, platform: linux/riscv64 }
- { name: Build AppImage, arch: loongarch64, platform: linux/loong64 }
- { name: Build AppImage, arch: ppc64le, platform: linux/ppc64le }
- { name: Build AppImage, arch: ppc64, platform: linux/ppc64 } # BE
# usually built natively on ubuntu-24.04-arm, emulation is for x86_64 runners
- { name: Build AppImage, arch: aarch64, platform: linux/arm64 }
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Build AppImage (emulated)
uses: pkgforge-dev/anylinux-setup-action/emulated@8c222ccc48a2134debbcdfd468e419f187f28dcf
with:
platform: ${{ matrix.platform }}
Environment overrides: ANYLINUX_TOOLS_DIR, QUICK_SHARUN,
DEBLOATED_PACKAGES, MAKE_AUR_PACKAGE.
Languages
Shell
100%