From b87353a17f4fe297b83d2f75cbf1c737ebb71c74 Mon Sep 17 00:00:00 2001 From: Sahnvour Date: Sat, 12 Aug 2023 13:15:05 +0200 Subject: 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 --- src/main.zig | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') 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); -- cgit v1.2.3