Commit a5e4fe5487

Andrew Kelley <andrew@ziglang.org>
2024-05-27 20:21:04
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.
1 parent 0937992
Changed files (2)
lib
std
Build
Step
test
standalone
empty_env
lib/std/Build/Step/Run.zig
@@ -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;
     }
 
test/standalone/empty_env/build.zig
@@ -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);
 }