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 {...@@ -61,6 +61,7 @@ pub const Builder = struct {
61 installed_files: ArrayList(InstalledFile),61 installed_files: ArrayList(InstalledFile),
62 build_root: []const u8,62 build_root: []const u8,
63 cache_root: []const u8,63 cache_root: []const u8,
64 global_cache_root: []const u8,
64 release_mode: ?builtin.Mode,65 release_mode: ?builtin.Mode,
65 is_release: bool,66 is_release: bool,
66 override_lib_dir: ?[]const u8,67 override_lib_dir: ?[]const u8,
...@@ -126,6 +127,7 @@ pub const Builder = struct {...@@ -126,6 +127,7 @@ pub const Builder = struct {
126 zig_exe: []const u8,127 zig_exe: []const u8,
127 build_root: []const u8,128 build_root: []const u8,
128 cache_root: []const u8,129 cache_root: []const u8,
130 global_cache_root: []const u8,
129 ) !*Builder {131 ) !*Builder {
130 const env_map = try allocator.create(BufMap);132 const env_map = try allocator.create(BufMap);
131 env_map.* = try process.getEnvMap(allocator);133 env_map.* = try process.getEnvMap(allocator);
...@@ -135,6 +137,7 @@ pub const Builder = struct {...@@ -135,6 +137,7 @@ pub const Builder = struct {
135 .zig_exe = zig_exe,137 .zig_exe = zig_exe,
136 .build_root = build_root,138 .build_root = build_root,
137 .cache_root = try fs.path.relative(allocator, build_root, cache_root),139 .cache_root = try fs.path.relative(allocator, build_root, cache_root),
140 .global_cache_root = global_cache_root,
138 .verbose = false,141 .verbose = false,
139 .verbose_tokenize = false,142 .verbose_tokenize = false,
140 .verbose_ast = false,143 .verbose_ast = false,
...@@ -1128,7 +1131,13 @@ test "builder.findProgram compiles" {...@@ -1128,7 +1131,13 @@ test "builder.findProgram compiles" {
1128 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);1131 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
1129 defer arena.deinit();1132 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 );
1132 defer builder.destroy();1141 defer builder.destroy();
1133 _ = builder.findProgram(&[_][]const u8{}, &[_][]const u8{}) catch null;1142 _ = builder.findProgram(&[_][]const u8{}, &[_][]const u8{}) catch null;
1134}1143}
...@@ -2196,6 +2205,9 @@ pub const LibExeObjStep = struct {...@@ -2196,6 +2205,9 @@ pub const LibExeObjStep = struct {
2196 try zig_args.append("--cache-dir");2205 try zig_args.append("--cache-dir");
2197 try zig_args.append(builder.pathFromRoot(builder.cache_root));2206 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
2199 zig_args.append("--name") catch unreachable;2211 zig_args.append("--name") catch unreachable;
2200 zig_args.append(self.name) catch unreachable;2212 zig_args.append(self.name) catch unreachable;
22012213
...@@ -2826,6 +2838,7 @@ test "Builder.dupePkg()" {...@@ -2826,6 +2838,7 @@ test "Builder.dupePkg()" {
2826 "test",2838 "test",
2827 "test",2839 "test",
2828 "test",2840 "test",
2841 "test",
2829 );2842 );
2830 defer builder.destroy();2843 defer builder.destroy();
28312844
...@@ -2869,6 +2882,7 @@ test "LibExeObjStep.addBuildOption" {...@@ -2869,6 +2882,7 @@ test "LibExeObjStep.addBuildOption" {
2869 "test",2882 "test",
2870 "test",2883 "test",
2871 "test",2884 "test",
2885 "test",
2872 );2886 );
2873 defer builder.destroy();2887 defer builder.destroy();
28742888
...@@ -2906,6 +2920,7 @@ test "LibExeObjStep.addPackage" {...@@ -2906,6 +2920,7 @@ test "LibExeObjStep.addPackage" {
2906 "test",2920 "test",
2907 "test",2921 "test",
2908 "test",2922 "test",
2923 "test",
2909 );2924 );
2910 defer builder.destroy();2925 defer builder.destroy();
29112926
lib/std/special/build_runner.zig+11-1
...@@ -41,8 +41,18 @@ pub fn main() !void {...@@ -41,8 +41,18 @@ pub fn main() !void {
41 warn("Expected third argument to be cache root directory path\n", .{});41 warn("Expected third argument to be cache root directory path\n", .{});
42 return error.InvalidArgs;42 return error.InvalidArgs;
43 };43 };
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 );
46 defer builder.destroy();56 defer builder.destroy();
4757
48 var targets = ArrayList([]const u8).init(allocator);58 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...@@ -2260,6 +2260,9 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
2260 const argv_index_cache_dir = child_argv.items.len;2260 const argv_index_cache_dir = child_argv.items.len;
2261 _ = try child_argv.addOne();2261 _ = try child_argv.addOne();
22622262
2263 const argv_index_global_cache_dir = child_argv.items.len;
2264 _ = try child_argv.addOne();
2265
2263 {2266 {
2264 var i: usize = 0;2267 var i: usize = 0;
2265 while (i < args.len) : (i += 1) {2268 while (i < args.len) : (i += 1) {
...@@ -2280,13 +2283,11 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v...@@ -2280,13 +2283,11 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
2280 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});2283 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});
2281 i += 1;2284 i += 1;
2282 override_local_cache_dir = args[i];2285 override_local_cache_dir = args[i];
2283 try child_argv.appendSlice(&[_][]const u8{ arg, args[i] });
2284 continue;2286 continue;
2285 } else if (mem.eql(u8, arg, "--global-cache-dir")) {2287 } else if (mem.eql(u8, arg, "--global-cache-dir")) {
2286 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});2288 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});
2287 i += 1;2289 i += 1;
2288 override_global_cache_dir = args[i];2290 override_global_cache_dir = args[i];
2289 try child_argv.appendSlice(&[_][]const u8{ arg, args[i] });
2290 continue;2291 continue;
2291 }2292 }
2292 }2293 }
...@@ -2371,6 +2372,8 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v...@@ -2371,6 +2372,8 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
2371 };2372 };
2372 defer global_cache_directory.handle.close();2373 defer global_cache_directory.handle.close();
23732374
2375 child_argv.items[argv_index_global_cache_dir] = global_cache_directory.path orelse cwd_path;
2376
2374 var local_cache_directory: Compilation.Directory = l: {2377 var local_cache_directory: Compilation.Directory = l: {
2375 if (override_local_cache_dir) |local_cache_dir_path| {2378 if (override_local_cache_dir) |local_cache_dir_path| {
2376 break :l .{2379 break :l .{