diff options
| author | Sahnvour <sahnvour@pm.me> | 2023-08-12 13:15:05 +0200 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-10-19 14:24:35 -0400 |
| commit | b87353a17f4fe297b83d2f75cbf1c737ebb71c74 (patch) | |
| tree | 51c461fec1a46d80df5339ad5984cc6ff8bfd748 /src/main.zig | |
| parent | 530dc0405c9f48fa3b241f078cf815164e4448ab (diff) | |
| download | zig-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.zig | 10 |
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); |
