From 38afc870c120e44c0e1525d4e1c124e867e4e38a Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Fri, 19 Jun 2026 08:09:27 +0800 Subject: [PATCH 1/2] ci(fresh-install): add findutils to arch/tumbleweed distro legs quick_install.sh (fetched from xlings main) locates the extracted xlings dir with `find`. On opensuse/tumbleweed:latest, which ships without findutils, the install died with: bash: line 148: find: command not found exit code 127 before mcpp ever ran. The arch leg lacked an explicit findutils too and only passed because the base image bundles it. List findutils explicitly on both legs (matching fedora/debian/ubuntu) and add a matrix note so the hard `find` dependency isn't dropped again. Failing run: https://github.com/mcpp-community/mcpp/actions/runs/27796803895 --- .github/workflows/ci-fresh-install.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-fresh-install.yml b/.github/workflows/ci-fresh-install.yml index d3b7b6c..341ab24 100644 --- a/.github/workflows/ci-fresh-install.yml +++ b/.github/workflows/ci-fresh-install.yml @@ -136,16 +136,22 @@ jobs: strategy: fail-fast: false matrix: + # findutils (find) is mandatory on every leg: quick_install.sh + # locates the extracted xlings dir with `find`, so a missing find + # fails the install with exit 127 *before* mcpp ever runs. Minimal + # images (opensuse/tumbleweed) ship without it; arch's base merely + # bundles it by luck. List it explicitly everywhere — don't rely on + # the base image. include: - distro: fedora-latest image: fedora:latest setup: dnf -y install curl bash tar gzip xz git findutils binutils file glibc-langpack-en - distro: arch image: archlinux:latest - setup: pacman -Sy --noconfirm curl bash tar gzip xz git binutils file + setup: pacman -Sy --noconfirm curl bash tar gzip xz git findutils binutils file - distro: tumbleweed image: opensuse/tumbleweed:latest - setup: zypper -n install curl bash tar gzip xz git binutils file + setup: zypper -n install curl bash tar gzip xz git findutils binutils file - distro: debian-testing image: debian:testing setup: apt-get update && apt-get -y install curl bash tar gzip xz-utils git ca-certificates binutils findutils file From f37b292a81fedb4f09e78520fa782434ff28cc92 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Fri, 19 Jun 2026 08:14:41 +0800 Subject: [PATCH 2/2] ci(fresh-install): drop redundant GITHUB_PATH append in container leg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The findutils fix unmasked a second, tumbleweed-only failure at the start of "Configure mcpp": OCI runtime exec failed: exec: "sh": executable file not found in $PATH exit code 127 opensuse/tumbleweed's image declares no PATH in its config. Appending a single dir to $GITHUB_PATH makes the runner exec every later step's `sh` with only that dir on PATH, so /usr/bin/sh becomes unfindable. The setup/install steps passed only because they ran before the append. Every container-matrix step already does `export PATH="$HOME/.xlings/subos/current/bin:$PATH"` in its own script, so the GITHUB_PATH append was redundant — and the sole cause of the corruption. Drop it. (The bare linux-fresh leg keeps its GITHUB_PATH: its later steps call mcpp directly without re-exporting.) --- .github/workflows/ci-fresh-install.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-fresh-install.yml b/.github/workflows/ci-fresh-install.yml index 341ab24..69de54f 100644 --- a/.github/workflows/ci-fresh-install.yml +++ b/.github/workflows/ci-fresh-install.yml @@ -173,7 +173,13 @@ jobs: - name: Install xlings + mcpp run: | curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v0.4.38 - echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH" + # Deliberately NOT writing to $GITHUB_PATH here. On container + # images that declare no PATH in their config (opensuse/ + # tumbleweed), appending a single dir to GITHUB_PATH makes the + # runner exec later steps' `sh` with only that dir on PATH — + # `sh` (in /usr/bin) vanishes and the next step dies with + # `exec: "sh": ... not found` / exit 127. Each step below already + # exports PATH itself, so the append is redundant anyway. - name: Configure mcpp run: |