7f1bcbda2a
CI repro (readLinkAt) / Reproduce determinate-nix test failure (push) Successful in 24s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
65 lines
2.4 KiB
YAML
65 lines
2.4 KiB
YAML
name: CI repro (readLinkAt)
|
|
|
|
# Throwaway workflow to reproduce the determinate-nix `readLinkAt.works` unit
|
|
# test failure seen in the master CI build, and capture the full gtest log.
|
|
# Runs only on this branch; delete the branch when done.
|
|
|
|
on:
|
|
push:
|
|
branches: [ci-repro-readlinkat]
|
|
|
|
jobs:
|
|
repro:
|
|
name: Reproduce determinate-nix test failure
|
|
runs-on: ubuntu-26.04
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: DeterminateSystems/determinate-nix-action@v3
|
|
with:
|
|
github-token: ${{ secrets.GH_PULL_TOKEN }}
|
|
extra-conf: |
|
|
sandbox-fallback = false
|
|
cores = 6
|
|
|
|
lazy-trees = true
|
|
eval-cores = 0
|
|
|
|
accept-flake-config = true
|
|
extra-substituters = https://nix-cache.nul.ie
|
|
extra-trusted-public-keys = nix-cache.nul.ie-1:BzH5yMfF4HbzY1C977XzOxoPhEc9Zbu39ftPkUbH+m4=
|
|
|
|
- name: Nix build-dir / store settings
|
|
run: |
|
|
echo "===== nix config (build-dir / store / sandbox) ====="
|
|
nix config show 2>/dev/null | grep -iE 'build-dir|store|sandbox|temp' || true
|
|
echo "===== TMPDIR/env ====="
|
|
echo "TMPDIR=$TMPDIR RUNNER_TEMP=$RUNNER_TEMP GITHUB_WORKSPACE=$GITHUB_WORKSPACE HOME=$HOME"
|
|
|
|
- name: Mount table
|
|
run: |
|
|
echo "===== df -T ====="
|
|
df -T || df -h
|
|
echo "===== mount ====="
|
|
mount 2>/dev/null | grep -iE 'overlay|tmpfs|/nix|ext4|xfs|btrfs|9p|fuse' || mount
|
|
|
|
- name: Symlink-length probe
|
|
run: |
|
|
# Determine, per candidate dir, the longest symlink target that can be
|
|
# created (the test needs PATH_MAX/2 = 2048 and PATH_MAX-1 = 4095).
|
|
probe() {
|
|
local d="$1"
|
|
[ -d "$d" ] || { echo " $d: (absent)"; return; }
|
|
local fstype; fstype=$(stat -f -c %T "$d" 2>/dev/null || echo '?')
|
|
local res=""
|
|
for n in 256 1000 2048 3000 4095; do
|
|
local tgt; tgt=$(head -c "$n" < /dev/zero | tr '\0' 'y')
|
|
if ln -sf "$tgt" "$d/.symtest.$n" 2>/dev/null; then res="$res $n"; else res="$res !$n"; fi
|
|
rm -f "$d/.symtest.$n" 2>/dev/null || true
|
|
done
|
|
echo " $d [$fstype]:$res"
|
|
}
|
|
echo "===== max symlink target length per dir (n = ok, !n = ENAMETOOLONG) ====="
|
|
for d in /tmp /var/tmp /dev/shm /nix /nix/var "$HOME" "$RUNNER_TEMP" "$GITHUB_WORKSPACE" /root /build; do
|
|
probe "$d"
|
|
done
|