std.Build.Step.Run: account for new environment variable

Introduces `disable_zig_progress` which prevents the build runner from
assigning the child process a progress node.

This is needed for the empty_env test which requires the environment to
be completely empty.
This commit is contained in:
Andrew Kelley 2024-05-27 11:21:04 -07:00
parent 0937992a14
commit a5e4fe5487
2 changed files with 8 additions and 1 deletions

View File

@ -23,6 +23,11 @@ cwd: ?Build.LazyPath,
/// Override this field to modify the environment, or use setEnvironmentVariable
env_map: ?*EnvMap,
/// When `true` prevents `ZIG_PROGRESS` environment variable from being passed
/// to the child process, which otherwise would be used for the child to send
/// progress updates to the parent.
disable_zig_progress: bool,
/// Configures whether the Run step is considered to have side-effects, and also
/// whether the Run step will inherit stdio streams, forwarding them to the
/// parent process, in which case will require a global lock to prevent other
@ -152,6 +157,7 @@ pub fn create(owner: *std.Build, name: []const u8) *Run {
.argv = .{},
.cwd = null,
.env_map = null,
.disable_zig_progress = false,
.stdio = .infer_from_args,
.stdin = .none,
.extra_file_dependencies = &.{},
@ -1235,7 +1241,7 @@ fn spawnChildAndCollect(
child.stdin_behavior = .Pipe;
}
if (run.stdio != .zig_test) {
if (run.stdio != .zig_test and !run.disable_zig_progress) {
child.progress_node = prog_node;
}

View File

@ -21,6 +21,7 @@ pub fn build(b: *std.Build) void {
const run = b.addRunArtifact(main);
run.clearEnvironment();
run.disable_zig_progress = true;
test_step.dependOn(&run.step);
}