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 17:00:38-07:00
logea70a983ba54efe1d73b85d393596dcb98e19c02
tree425c5a97c39b42decdad4edae498f978835a531d
parent235d56cb828b97cb72895b310119e08abb0fe907

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}
...@@ -2124,6 +2133,9 @@ pub const LibExeObjStep = struct {...@@ -2124,6 +2133,9 @@ pub const LibExeObjStep = struct {
2124 try zig_args.append("--cache-dir");2133 try zig_args.append("--cache-dir");
2125 try zig_args.append(builder.pathFromRoot(builder.cache_root));2134 try zig_args.append(builder.pathFromRoot(builder.cache_root));
21262135
2136 try zig_args.append("--global-cache-dir");
2137 try zig_args.append(builder.pathFromRoot(builder.global_cache_root));
2138
2127 zig_args.append("--name") catch unreachable;2139 zig_args.append("--name") catch unreachable;
2128 zig_args.append(self.name) catch unreachable;2140 zig_args.append(self.name) catch unreachable;
21292141
...@@ -2735,6 +2747,7 @@ test "Builder.dupePkg()" {...@@ -2735,6 +2747,7 @@ test "Builder.dupePkg()" {
2735 "test",2747 "test",
2736 "test",2748 "test",
2737 "test",2749 "test",
2750 "test",
2738 );2751 );
2739 defer builder.destroy();2752 defer builder.destroy();
27402753
...@@ -2778,6 +2791,7 @@ test "LibExeObjStep.addBuildOption" {...@@ -2778,6 +2791,7 @@ test "LibExeObjStep.addBuildOption" {
2778 "test",2791 "test",
2779 "test",2792 "test",
2780 "test",2793 "test",
2794 "test",
2781 );2795 );
2782 defer builder.destroy();2796 defer builder.destroy();
27832797
...@@ -2815,6 +2829,7 @@ test "LibExeObjStep.addPackage" {...@@ -2815,6 +2829,7 @@ test "LibExeObjStep.addPackage" {
2815 "test",2829 "test",
2816 "test",2830 "test",
2817 "test",2831 "test",
2832 "test",
2818 );2833 );
2819 defer builder.destroy();2834 defer builder.destroy();
28202835
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
...@@ -2228,6 +2228,9 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v...@@ -2228,6 +2228,9 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
2228 const argv_index_cache_dir = child_argv.items.len;2228 const argv_index_cache_dir = child_argv.items.len;
2229 _ = try child_argv.addOne();2229 _ = try child_argv.addOne();
22302230
2231 const argv_index_global_cache_dir = child_argv.items.len;
2232 _ = try child_argv.addOne();
2233
2231 {2234 {
2232 var i: usize = 0;2235 var i: usize = 0;
2233 while (i < args.len) : (i += 1) {2236 while (i < args.len) : (i += 1) {
...@@ -2248,13 +2251,11 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v...@@ -2248,13 +2251,11 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
2248 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});2251 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});
2249 i += 1;2252 i += 1;
2250 override_local_cache_dir = args[i];2253 override_local_cache_dir = args[i];
2251 try child_argv.appendSlice(&[_][]const u8{ arg, args[i] });
2252 continue;2254 continue;
2253 } else if (mem.eql(u8, arg, "--global-cache-dir")) {2255 } else if (mem.eql(u8, arg, "--global-cache-dir")) {
2254 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});2256 if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg});
2255 i += 1;2257 i += 1;
2256 override_global_cache_dir = args[i];2258 override_global_cache_dir = args[i];
2257 try child_argv.appendSlice(&[_][]const u8{ arg, args[i] });
2258 continue;2259 continue;
2259 }2260 }
2260 }2261 }
...@@ -2339,6 +2340,8 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v...@@ -2339,6 +2340,8 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v
2339 };2340 };
2340 defer global_cache_directory.handle.close();2341 defer global_cache_directory.handle.close();
23412342
2343 child_argv.items[argv_index_global_cache_dir] = global_cache_directory.path orelse cwd_path;
2344
2342 var local_cache_directory: Compilation.Directory = l: {2345 var local_cache_directory: Compilation.Directory = l: {
2343 if (override_local_cache_dir) |local_cache_dir_path| {2346 if (override_local_cache_dir) |local_cache_dir_path| {
2344 break :l .{2347 break :l .{