Offer the container line to both shells, and name the short-path requirement
The container recipe carried a PowerShell backtick continuation in a snippet whose next paragraph invites a POSIX shell to run it, where a backtick is not a continuation. A continuation has to pick a shell, so the line does not have one. The Dockerfile's own copy of the recipe still mounted one machine's checkout by absolute path; it mounts whatever checkout is running it, like the other two. And the requirement a newcomer meets by tripping over it: on win32-x64 the harness needs the checkout somewhere short. MSBuild's file tracker gives out on long paths, so a run from a deep temporary directory fails the build for every mutant, the no-op control included. That is loud — the harness stops on a red control and prints what the child said — but what the child says is MSBuild, not the path. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ca6c0f5852
commit
c177533b4f
3 changed files with 22 additions and 8 deletions
|
|
@ -110,11 +110,12 @@ mutation harness that drives the runtime-lifetime scenarios is a Node script and
|
|||
a container that cannot run it cannot check the bridge it just built:
|
||||
|
||||
docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts
|
||||
docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src `
|
||||
cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native"
|
||||
docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native"
|
||||
|
||||
Both lines are run from the repository root, and the mount is that root wherever
|
||||
it is: `${PWD}` in PowerShell, `$(pwd)` in a POSIX shell.
|
||||
it is: `${PWD}` in PowerShell, `$(pwd)` in a POSIX shell. The second is one line
|
||||
because the shell it is offered to is not decided here; a continuation would have
|
||||
to pick one, and a backtick pasted into a POSIX shell is not a continuation.
|
||||
|
||||
`--security-opt seccomp=unconfined` is load-bearing, not caution. The
|
||||
ThreadSanitizer configuration needs the process's address space where it expects
|
||||
|
|
@ -125,6 +126,13 @@ with "unexpected memory mapping" — a configuration that never starts, which a
|
|||
mutation harness would otherwise read as every mutant being killed. The harness
|
||||
stops with that diagnosis rather than reporting kills it did not earn.
|
||||
|
||||
The win32-x64 half of the harness needs the checkout somewhere short — near a
|
||||
drive root rather than under a deep temporary directory. MSVC builds the bridge
|
||||
and its scenario runner through MSBuild, whose file tracker gives out on long
|
||||
paths, and the build then fails for every mutant including the no-op control.
|
||||
The harness stops on a red control rather than reporting a table of kills, so
|
||||
the failure is loud, but it names MSBuild and not the path.
|
||||
|
||||
Where an artifact was built is part of what it is. The Linux binary is linked
|
||||
against Debian 13's glibc, so a build from anywhere else is a different artifact
|
||||
whatever the file name says.
|
||||
|
|
|
|||
|
|
@ -47,11 +47,15 @@
|
|||
// dependencies:
|
||||
//
|
||||
// docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts
|
||||
// docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src `
|
||||
// cultlib-quic-native-dev bash -lc "node scripts/mutate-cultmesh.mjs native"
|
||||
// docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src cultlib-quic-native-dev bash -lc "node scripts/mutate-cultmesh.mjs native"
|
||||
//
|
||||
// Both from the repository root; the mount is that root wherever it is, as
|
||||
// `${PWD}` in PowerShell or `$(pwd)` in a POSIX shell.
|
||||
// `${PWD}` in PowerShell or `$(pwd)` in a POSIX shell. The second is one line
|
||||
// because a continuation would have to pick one of those shells.
|
||||
//
|
||||
// The win32-x64 half wants the checkout somewhere short, near a drive root. MSVC
|
||||
// builds the bridge through MSBuild, whose file tracker gives out on long paths,
|
||||
// and a run from a deep temporary directory fails its own no-op control.
|
||||
//
|
||||
// The seccomp flag is required, not cautious: the ThreadSanitizer configuration
|
||||
// is re-executed under `setarch -R`, and Docker's default profile denies the
|
||||
|
|
|
|||
|
|
@ -9,8 +9,10 @@
|
|||
# runner that mutates it at all.
|
||||
#
|
||||
# docker build -t cultlib-quic-native-dev -f scripts/quic-native-linux-dev.Dockerfile scripts
|
||||
# docker run --rm --security-opt seccomp=unconfined -v F:\Projects\CultLib:/src -w /src \
|
||||
# cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native"
|
||||
# docker run --rm --security-opt seccomp=unconfined -v "${PWD}:/src" -w /src cultlib-quic-native-dev bash -lc "scripts/build-quic-native.sh && node scripts/mutate-cultmesh.mjs native"
|
||||
#
|
||||
# Both from the repository root, and the mount is that root wherever it is:
|
||||
# `${PWD}` in PowerShell, `$(pwd)` in a POSIX shell.
|
||||
#
|
||||
# `--security-opt seccomp=unconfined` is not optional and not caution. The
|
||||
# ThreadSanitizer configuration needs the process's address space where it
|
||||
|
|
|
|||
Loading…
Reference in a new issue