aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorSahnvour <sahnvour@pm.me>2023-08-12 13:15:05 +0200
committerAndrew Kelley <andrew@ziglang.org>2023-10-19 14:24:35 -0400
commitb87353a17f4fe297b83d2f75cbf1c737ebb71c74 (patch)
tree51c461fec1a46d80df5339ad5984cc6ff8bfd748 /src/main.zig
parent530dc0405c9f48fa3b241f078cf815164e4448ab (diff)
downloadzig-b87353a17f4fe297b83d2f75cbf1c737ebb71c74.tar.gz
zig-b87353a17f4fe297b83d2f75cbf1c737ebb71c74.zip
std.Build: add --seed argument to randomize step dependencies spawning
help detect possibly hidden dependencies on the running order of steps, especially in -j1 mode
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main.zig b/src/main.zig
index cdf3d5a397..02a33a5a9d 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -4930,6 +4930,8 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi
var reference_trace: ?u32 = null;
var debug_compile_errors = false;
var fetch_only = false;
+ const micros: u32 = @truncate(@as(u64, @bitCast(std.time.microTimestamp())));
+ var seed: []const u8 = try std.fmt.allocPrint(arena, "{}", .{micros});
const argv_index_exe = child_argv.items.len;
_ = try child_argv.addOne();
@@ -4945,6 +4947,9 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi
const argv_index_global_cache_dir = child_argv.items.len;
_ = try child_argv.addOne();
+ try child_argv.appendSlice(&[_][]const u8{ "--seed", seed });
+ const argv_index_seed = child_argv.items.len - 1;
+
{
var i: usize = 0;
while (i < args.len) : (i += 1) {
@@ -4993,6 +4998,11 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi
} else if (mem.eql(u8, arg, "--debug-compile-errors")) {
try child_argv.append(arg);
debug_compile_errors = true;
+ } else if (mem.eql(u8, arg, "--seed")) {
+ if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});
+ i += 1;
+ child_argv.items[argv_index_seed] = args[i];
+ continue;
}
}
try child_argv.append(arg);