| author | |
| committer | |
| log | ea70a983ba54efe1d73b85d393596dcb98e19c02 |
| tree | 425c5a97c39b42decdad4edae498f978835a531d |
| parent | 235d56cb828b97cb72895b310119e08abb0fe907 |
* 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(); |
| 1130 | 1133 | ||
| 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)); |
| 2126 | 2135 | ||
| 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; |
| 2129 | 2141 | ||
| ... | @@ -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(); |
| 2740 | 2753 | ||
| ... | @@ -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(); |
| 2783 | 2797 | ||
| ... | @@ -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(); |
| 2820 | 2835 |
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 | }; | ||
| 44 | 48 | ||
| 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(); |
| 47 | 57 | ||
| 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(); |
| 2230 | 2230 | ||
| 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(); |
| 2341 | 2342 | ||
| 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 .{ |