@@ -606,40 +606,38 @@ jobs:
606606 # the shim on PATH dispatches against whichever home owns it, so an
607607 # emulator installed only in the ambient one answers "not installed" when
608608 # mcpp asks.
609- - name : Install the emulators, and this host's mingw-w64 (#662)
609+ - name : Install the AArch64 user emulator with xlings
610610 run : |
611611 set -euo pipefail
612- # The runner image carries third-party apt lists (Google Chrome
613- # among them) that this job does not use, and a transient
614- # `Hash Sum mismatch` on one of them fails the whole update -- which
615- # killed two cross-build jobs in setup, before a single byte was
616- # compiled. Dropping the lists this job has no use for is what makes
617- # the step's failure mean something about this job.
618- #
619- # BY CONTENT, NOT BY FILENAME. The first attempt removed
620- # `google-chrome.list` and the update failed on the same URL: on
621- # ubuntu-24.04 the runner writes deb822 `.sources` files, so the
622- # name was a guess and the guess was wrong.
623- sudo grep -rlE 'dl[.]google[.]com|packages[.]microsoft[.]com' \
624- /etc/apt/sources.list.d/ 2>/dev/null | xargs -r sudo rm -f
625- # `mingw-w64` (the distro package, NOT `mingw-cross-gcc`) is what
626- # 738's `mingw-host-headers` capability probes for
627- # (`/usr/x86_64-w64-mingw32/include`). The assertion it gates --
628- # clang's own driver no longer searches the host once a graph
629- # package supplies the target's C library -- has no discriminating
630- # power without a host copy to have leaked in in the first place;
631- # this is the one runner in the fleet that installs it for that
632- # reason (run_all.sh's capability probe, and the design doc's note
633- # on `# requires:` gates CI never satisfies on its own).
634- sudo apt-get update -qq && sudo apt-get install -y -qq qemu-user mingw-w64
635- "$XLINGS_BIN" install xim:qemu-riscv -y
612+ "$XLINGS_BIN" install xim:qemu-user-aarch64@7.2.0 -g -y -u
613+ XLINGS_HOME="${MCPP_HOME:-$HOME/.mcpp}/registry" \
614+ "$XLINGS_BIN" install xim:qemu-user-aarch64@7.2.0 -g -y -u
615+ qemu-aarch64-static --version
616+
617+ - name : Install the RISC-V system emulator with xlings
618+ run : |
619+ set -euo pipefail
620+ "$XLINGS_BIN" install xim:qemu-riscv@9.2.4-1 -g -y -u
636621 XLINGS_HOME="${MCPP_HOME:-$HOME/.mcpp}/registry" \
637- "$XLINGS_BIN" install xim:qemu-riscv -y
638- # Reachable AND runnable, asserted before the tests: without this the
639- # scripts would simply skip and say so in a line nobody reads.
640- qemu-aarch64 --version | head -1
641- "$XLINGS_BIN" run qemu-system-riscv64 --version 2>/dev/null | head -1 \
642- || command -v qemu-system-riscv64
622+ "$XLINGS_BIN" install xim:qemu-riscv@9.2.4-1 -g -y -u
623+ "$XLINGS_BIN" run qemu-system-riscv64 --version
624+
625+ - name : Install the separate host MinGW header fixture with xlings
626+ run : |
627+ set -euo pipefail
628+ source tests/e2e/_toolchain_env.sh
629+ # This store stays outside MCPP_HOME. Test 738 first proves that
630+ # unrestricted Clang finds its headers through PATH, then proves
631+ # that the graph-supplied C library closes that host search.
632+ export XLINGS_HOME="$RUNNER_TEMP/openkal-host-mingw"
633+ mkdir -p "$XLINGS_HOME"
634+ cd "$XLINGS_HOME"
635+ "$XLINGS_BIN" config --mirror GLOBAL
636+ "$XLINGS_BIN" install "xim:mingw-cross-gcc@$MINGW_CROSS_VERSION" -g -y
637+ host_root="$XLINGS_HOME/data/xpkgs/xim-x-mingw-cross-gcc/$MINGW_CROSS_VERSION"
638+ test -f "$host_root/x86_64-w64-mingw32/include/io.h"
639+ test -x "$host_root/bin/x86_64-w64-mingw32-gcc"
640+ echo "MCPP_E2E_HOST_MINGW_ROOT=$host_root" >> "$GITHUB_ENV"
643641
644642 - name : The scripts
645643 run : |
@@ -707,6 +705,8 @@ jobs:
707705 "OK: the list answers what can be built, not what has a payload" || fail=1
708706 check 738_a_graph_supplied_target_closes_the_hosts_own_search.sh \
709707 "PASS: 738 a graph-supplied target closes the host's own search" || fail=1
708+ check 738_a_graph_supplied_target_closes_the_hosts_own_search.sh \
709+ "ok: unprotected clang finds the separate host MinGW headers" || fail=1
710710 # mcpp#696, the link-side twin of 738: both legs, because the one
711711 # that separates the engines is the refusal, and a skip of either
712712 # prints the final line all the same.
0 commit comments