| 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 | 61 | installed_files: ArrayList(InstalledFile), |
| 62 | 62 | build_root: []const u8, |
| 63 | 63 | cache_root: []const u8, |
| 64 | global_cache_root: []const u8, | |
| 64 | 65 | release_mode: ?builtin.Mode, |
| 65 | 66 | is_release: bool, |
| 66 | 67 | override_lib_dir: ?[]const u8, |
| ... | ... | @@ -126,6 +127,7 @@ pub const Builder = struct { |
| 126 | 127 | zig_exe: []const u8, |
| 127 | 128 | build_root: []const u8, |
| 128 | 129 | cache_root: []const u8, |
| 130 | global_cache_root: []const u8, | |
| 129 | 131 | ) !*Builder { |
| 130 | 132 | const env_map = try allocator.create(BufMap); |
| 131 | 133 | env_map.* = try process.getEnvMap(allocator); |
| ... | ... | @@ -135,6 +137,7 @@ pub const Builder = struct { |
| 135 | 137 | .zig_exe = zig_exe, |
| 136 | 138 | .build_root = build_root, |
| 137 | 139 | .cache_root = try fs.path.relative(allocator, build_root, cache_root), |
| 140 | .global_cache_root = global_cache_root, | |
| 138 | 141 | .verbose = false, |
| 139 | 142 | .verbose_tokenize = false, |
| 140 | 143 | .verbose_ast = false, |
| ... | ... | @@ -1128,7 +1131,13 @@ test "builder.findProgram compiles" { |
| 1128 | 1131 | var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); |
| 1129 | 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 | 1141 | defer builder.destroy(); |
| 1133 | 1142 | _ = builder.findProgram(&[_][]const u8{}, &[_][]const u8{}) catch null; |
| 1134 | 1143 | } |
| ... | ... | @@ -2124,6 +2133,9 @@ pub const LibExeObjStep = struct { |
| 2124 | 2133 | try zig_args.append("--cache-dir"); |
| 2125 | 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 | 2139 | zig_args.append("--name") catch unreachable; |
| 2128 | 2140 | zig_args.append(self.name) catch unreachable; |
| 2129 | 2141 | |
| ... | ... | @@ -2735,6 +2747,7 @@ test "Builder.dupePkg()" { |
| 2735 | 2747 | "test", |
| 2736 | 2748 | "test", |
| 2737 | 2749 | "test", |
| 2750 | "test", | |
| 2738 | 2751 | ); |
| 2739 | 2752 | defer builder.destroy(); |
| 2740 | 2753 | |
| ... | ... | @@ -2778,6 +2791,7 @@ test "LibExeObjStep.addBuildOption" { |
| 2778 | 2791 | "test", |
| 2779 | 2792 | "test", |
| 2780 | 2793 | "test", |
| 2794 | "test", | |
| 2781 | 2795 | ); |
| 2782 | 2796 | defer builder.destroy(); |
| 2783 | 2797 | |
| ... | ... | @@ -2815,6 +2829,7 @@ test "LibExeObjStep.addPackage" { |
| 2815 | 2829 | "test", |
| 2816 | 2830 | "test", |
| 2817 | 2831 | "test", |
| 2832 | "test", | |
| 2818 | 2833 | ); |
| 2819 | 2834 | defer builder.destroy(); |
| 2820 | 2835 |
lib/std/special/build_runner.zig+11-1| ... | ... | @@ -41,8 +41,18 @@ pub fn main() !void { |
| 41 | 41 | warn("Expected third argument to be cache root directory path\n", .{}); |
| 42 | 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 | 56 | defer builder.destroy(); |
| 47 | 57 | |
| 48 | 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 | 2228 | const argv_index_cache_dir = child_argv.items.len; |
| 2229 | 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 | 2235 | var i: usize = 0; |
| 2233 | 2236 | while (i < args.len) : (i += 1) { |
| ... | ... | @@ -2248,13 +2251,11 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v |
| 2248 | 2251 | if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg}); |
| 2249 | 2252 | i += 1; |
| 2250 | 2253 | override_local_cache_dir = args[i]; |
| 2251 | try child_argv.appendSlice(&[_][]const u8{ arg, args[i] }); | |
| 2252 | 2254 | continue; |
| 2253 | 2255 | } else if (mem.eql(u8, arg, "--global-cache-dir")) { |
| 2254 | 2256 | if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg}); |
| 2255 | 2257 | i += 1; |
| 2256 | 2258 | override_global_cache_dir = args[i]; |
| 2257 | try child_argv.appendSlice(&[_][]const u8{ arg, args[i] }); | |
| 2258 | 2259 | continue; |
| 2259 | 2260 | } |
| 2260 | 2261 | } |
| ... | ... | @@ -2339,6 +2340,8 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v |
| 2339 | 2340 | }; |
| 2340 | 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 | 2345 | var local_cache_directory: Compilation.Directory = l: { |
| 2343 | 2346 | if (override_local_cache_dir) |local_cache_dir_path| { |
| 2344 | 2347 | break :l .{ |