Skip to content

Bound utf-8 character reads below the SBCL SIMD fast path #217

Bound utf-8 character reads below the SBCL SIMD fast path

Bound utf-8 character reads below the SBCL SIMD fast path #217

Workflow file for this run

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