diff --git a/lib/build_runner.zig b/lib/build_runner.zig index 45c1f41fd3..48c70646b1 100644 --- a/lib/build_runner.zig +++ b/lib/build_runner.zig @@ -997,6 +997,7 @@ fn usage(builder: *std.Build, already_ran_build: bool, out_stream: anytype) !voi \\ -j Limit concurrent jobs (default is to use all CPU cores) \\ --maxrss Limit memory usage (default is to use available memory) \\ --skip-oom-steps Instead of failing, skip steps that would exceed --maxrss + \\ --fetch Exit after fetching dependency tree \\ \\Project-Specific Options: \\ diff --git a/src/main.zig b/src/main.zig index fe6f08a54d..8c13dacfa5 100644 --- a/src/main.zig +++ b/src/main.zig @@ -4621,6 +4621,7 @@ pub const usage_build = \\ --global-cache-dir [path] Override path to global Zig cache directory \\ --zig-lib-dir [arg] Override path to Zig lib directory \\ --build-runner [file] Override path to build runner + \\ --fetch Exit after fetching dependency tree \\ -h, --help Print this help and exit \\ ; @@ -4643,6 +4644,7 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi var child_argv = std.ArrayList([]const u8).init(arena); var reference_trace: ?u32 = null; var debug_compile_errors = false; + var fetch_only = false; const argv_index_exe = child_argv.items.len; _ = try child_argv.addOne(); @@ -4692,6 +4694,8 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi } else if (mem.eql(u8, arg, "-freference-trace")) { try child_argv.append(arg); reference_trace = 256; + } else if (mem.eql(u8, arg, "--fetch")) { + fetch_only = true; } else if (mem.startsWith(u8, arg, "-freference-trace=")) { try child_argv.append(arg); const num = arg["-freference-trace=".len..]; @@ -4884,6 +4888,8 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi process.exit(1); } + if (fetch_only) return cleanExit(); + try job_queue.createDependenciesModule(&dependencies_zig_src); const deps_mod = m: {