authorgravatar for liljaanton2001@gmail.comantlilja <liljaanton2001@gmail.com> 2020-12-01 16:47:47+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-10 18:06:19-05:00
log26399b5249cbc8774e50856fed6d2336e396cb69
tree4cca369b95eed856058c34ce4963c91955251aa0
parenta3de27ef3bbc5212b2129ed75bab3503da09b9cf

Added global-cache argument to build system + removed extra args.

* Field global_cache_root was added to Builder struct along with mandatory argument for build_runner.zig. Logic for using the custom global cache was also added. * The arguments --cache-dir and --global-cache-dir are no longer passed directly through to build_runner.zig and are instead only passed through the mandatory cache_root and global_cache_root arguments.

3 files changed, 32 insertions(+), 4 deletions(-)

lib/std/build.zig+16-1
......@@ -61,6 +61,7 @@ pub const Builder = struct {
6161 installed_files: ArrayList(InstalledFile),
6262 build_root: []const u8,
6363 cache_root: []const u8,
64 global_cache_root: []const u8,
6465 release_mode: ?builtin.Mode,
6566 is_release: bool,
6667 override_lib_dir: ?[]const u8,
......@@ -126,6 +127,7 @@ pub const Builder = struct {
126127 zig_exe: []const u8,
127128 build_root: []const u8,
128129 cache_root: []const u8,
130 global_cache_root: []const u8,
129131 ) !*Builder {
130132 const env_map = try allocator.create(BufMap);
131133 env_map.* = try process.getEnvMap(allocator);
......@@ -135,6 +137,7 @@ pub const Builder = struct {
135137 .zig_exe = zig_exe,
136138 .build_root = build_root,
137139 .cache_root = try fs.path.relative(allocator, build_root, cache_root),
140 .global_cache_root = global_cache_root,
138141 .verbose = false,
139142 .verbose_tokenize = false,
140143 .verbose_ast = false,
......@@ -1128,7 +1131,13 @@ test "builder.findProgram compiles" {
11281131 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
11291132 defer arena.deinit();
11301133
1131 const builder = try Builder.create(&arena.allocator, "zig", "zig-cache", "zig-cache");
1134 const builder = try Builder.create(
1135 &arena.allocator,
1136 "zig",
1137 "zig-cache",
1138 "zig-cache",
1139 "zig-cache",
1140 );
11321141 defer builder.destroy();
11331142 _ = builder.findProgram(&[_][]const u8{}, &[_][]const u8{}) catch null;
11341143}
......@@ -2196,6 +2205,9 @@ pub const LibExeObjStep = struct {
21962205 try zig_args.append("--cache-dir");
21972206 try zig_args.append(builder.pathFromRoot(builder.cache_root));
21982207
2208 try zig_args.append("--global-cache-dir");
2209 try zig_args.append(builder.pathFromRoot(builder.global_cache_root));
2210
21992211 zig_args.append("--name") catch unreachable;
22002212 zig_args.append(self.name) catch unreachable;
22012213
......@@ -2826,6 +2838,7 @@ test "Builder.dupePkg()" {
28262838 "test",
28272839 "test",
28282840 "test",
2841 "test",
28292842 );
28302843 defer builder.destroy();
28312844
......@@ -2869,6 +2882,7 @@ test "LibExeObjStep.addBuildOption" {
28692882 "test",
28702883 "test",
28712884 "test",
2885 "test",
28722886 );
28732887 defer builder.destroy();
28742888
......@@ -2906,6 +2920,7 @@ test "LibExeObjStep.addPackage" {
29062920 "test",
29072921 "test",
29082922 "test",
2923 "test",
29092924 );
29102925 defer builder.destroy();
29112926
lib/std/special/build_runner.zig+11-1
......@@ -41,8 +41,18 @@ pub fn main() !void {
4141 warn("Expected third argument to be cache root directory path\n", .{});
4242 return error.InvalidArgs;
4343 };
44 const global_cache_root = nextArg(args, &arg_idx) orelse {
45 warn("Expected third argument to be global cache root directory path\n", .{});
46 return error.InvalidArgs;
47 };
4448
45 const builder = try Builder.create(allocator, zig_exe, build_root, cache_root);
49 const builder = try Builder.create(
50 allocator,
51 zig_exe,
52 build_root,
53 cache_root,
54 global_cache_root,
55 );
4656 defer builder.destroy();
4757
4858 var targets = ArrayList([]const u8).init(allocator);
src/main.zig+5-2
......@@ -2260,6 +2260,9 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
22602260 const argv_index_cache_dir = child_argv.items.len;
22612261 _ = try child_argv.addOne();
22622262
2263 const argv_index_global_cache_dir = child_argv.items.len;
2264 _ = try child_argv.addOne();
2265
22632266 {
22642267 var i: usize = 0;
22652268 while (i < args.len) : (i += 1) {
......@@ -2280,13 +2283,11 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
22802283 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});
22812284 i += 1;
22822285 override_local_cache_dir = args[i];
2283 try child_argv.appendSlice(&[_][]const u8{ arg, args[i] });
22842286 continue;
22852287 } else if (mem.eql(u8, arg, "--global-cache-dir")) {
22862288 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});
22872289 i += 1;
22882290 override_global_cache_dir = args[i];
2289 try child_argv.appendSlice(&[_][]const u8{ arg, args[i] });
22902291 continue;
22912292 }
22922293 }
......@@ -2371,6 +2372,8 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
23712372 };
23722373 defer global_cache_directory.handle.close();
23732374
2375 child_argv.items[argv_index_global_cache_dir] = global_cache_directory.path orelse cwd_path;
2376
23742377 var local_cache_directory: Compilation.Directory = l: {
23752378 if (override_local_cache_dir) |local_cache_dir_path| {
23762379 break :l .{