Bound utf-8 character reads below the SBCL SIMD fast path #217
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Nix | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: nix-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| package: | |
| name: ${{ matrix.name }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: Linux x86-64 | |
| runner: ubuntu-24.04 | |
| architecture: x86_64 | |
| - name: macOS arm64 | |
| runner: macos-14 | |
| architecture: arm64 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Verify runner architecture | |
| run: test "$(uname -m)" = "${{ matrix.architecture }}" | |
| - name: Install Nix | |
| uses: cachix/install-nix-action@v31 | |
| with: | |
| github_access_token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Check flake | |
| run: nix flake check --no-update-lock-file --print-build-logs | |
| - name: Build package | |
| run: nix build .#autolith --no-update-lock-file --print-build-logs | |
| - name: Smoke-test first run | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| temporary_home=$(mktemp -d) | |
| export HOME="$temporary_home/home" | |
| export XDG_CONFIG_HOME="$temporary_home/config" | |
| export XDG_DATA_HOME="$temporary_home/data" | |
| export XDG_STATE_HOME="$temporary_home/state" | |
| status=0 | |
| ./result/bin/autolith </dev/null \ | |
| >"$temporary_home/stdout" \ | |
| 2>"$temporary_home/stderr" & | |
| autolith_process=$! | |
| ( | |
| sleep 600 | |
| if kill -0 "$autolith_process" 2>/dev/null; then | |
| kill "$autolith_process" || true | |
| fi | |
| ) & | |
| watchdog_process=$! | |
| wait "$autolith_process" || status=$? | |
| kill "$watchdog_process" 2>/dev/null || true | |
| wait "$watchdog_process" 2>/dev/null || true | |
| cat "$temporary_home/stderr" | |
| cat "$temporary_home/stdout" | |
| fail_smoke() | |
| { | |
| local title=$1 | |
| local detail=$2 | |
| detail=${detail//'%'/'%25'} | |
| detail=${detail//$'\r'/'%0D'} | |
| detail=${detail//$'\n'/'%0A'} | |
| printf '::error title=%s::%s\n' "$title" "$detail" | |
| exit 1 | |
| } | |
| if [ "$status" -ne 0 ]; then | |
| diagnostic=$(printf 'status=%s\nstderr:\n' "$status" | |
| tail -c 8000 "$temporary_home/stderr" | |
| printf '\nstdout:\n' | |
| tail -c 8000 "$temporary_home/stdout") | |
| fail_smoke "Autolith first run exited with status $status" "$diagnostic" | |
| fi | |
| for artifact in \ | |
| "$XDG_DATA_HOME/autolith/recovery/autolith-recovery.core" \ | |
| "$XDG_DATA_HOME/autolith/recovery/manifest.sexp" \ | |
| "$XDG_DATA_HOME/autolith/active/autolith-active.core" \ | |
| "$XDG_DATA_HOME/autolith/active/manifest.sexp"; do | |
| if [ ! -f "$artifact" ]; then | |
| fail_smoke "Autolith first run omitted an image artifact" "$artifact" | |
| fi | |
| done | |
| for marker in \ | |
| "Installed pristine recovery image" \ | |
| "Installed preloaded active image" \ | |
| "AUTOLITH v"; do | |
| if ! grep -F "$marker" "$temporary_home/stdout" >/dev/null; then | |
| fail_smoke "Autolith first run omitted an output marker" "$marker" | |
| fi | |
| done |