std.Build.RunStep: fix default caching logic

RunStep is supposed to auto-detect whether the intend is for
side-effects or for producing an output file. The auto-detection logic
was incorrect, and this commit fixes it.

I tested this manually locally. Automated testing will require a more
significant investment in the test harness, which I will work on in a
future enhancement.

closes #14666
This commit is contained in:
Andrew Kelley 2023-02-18 11:31:31 -07:00
parent 07630eb696
commit 5e7b09ce9f

View File

@ -188,6 +188,10 @@ fn stdIoActionToBehavior(action: StdIoAction) std.ChildProcess.StdIo {
}
fn needOutputCheck(self: RunStep) bool {
switch (self.condition) {
.always => return false,
.output_outdated => {},
}
if (self.extra_file_dependencies.len > 0) return true;
for (self.argv.items) |arg| switch (arg) {
@ -195,10 +199,7 @@ fn needOutputCheck(self: RunStep) bool {
else => continue,
};
return switch (self.condition) {
.always => false,
.output_outdated => true,
};
return false;
}
fn make(step: *Step) !void {