| author | |
| committer | |
| log | 26399b5249cbc8774e50856fed6d2336e396cb69 |
| tree | 4cca369b95eed856058c34ce4963c91955251aa0 |
| parent | a3de27ef3bbc5212b2129ed75bab3503da09b9cf |
* 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 | } |
| ... | ... | @@ -2196,6 +2205,9 @@ pub const LibExeObjStep = struct { |
| 2196 | 2205 | try zig_args.append("--cache-dir"); |
| 2197 | 2206 | try zig_args.append(builder.pathFromRoot(builder.cache_root)); |
| 2198 | 2207 | |
| 2208 | try zig_args.append("--global-cache-dir"); | |
| 2209 | try zig_args.append(builder.pathFromRoot(builder.global_cache_root)); | |
| 2210 | ||
| 2199 | 2211 | zig_args.append("--name") catch unreachable; |
| 2200 | 2212 | zig_args.append(self.name) catch unreachable; |
| 2201 | 2213 | |
| ... | ... | @@ -2826,6 +2838,7 @@ test "Builder.dupePkg()" { |
| 2826 | 2838 | "test", |
| 2827 | 2839 | "test", |
| 2828 | 2840 | "test", |
| 2841 | "test", | |
| 2829 | 2842 | ); |
| 2830 | 2843 | defer builder.destroy(); |
| 2831 | 2844 | |
| ... | ... | @@ -2869,6 +2882,7 @@ test "LibExeObjStep.addBuildOption" { |
| 2869 | 2882 | "test", |
| 2870 | 2883 | "test", |
| 2871 | 2884 | "test", |
| 2885 | "test", | |
| 2872 | 2886 | ); |
| 2873 | 2887 | defer builder.destroy(); |
| 2874 | 2888 | |
| ... | ... | @@ -2906,6 +2920,7 @@ test "LibExeObjStep.addPackage" { |
| 2906 | 2920 | "test", |
| 2907 | 2921 | "test", |
| 2908 | 2922 | "test", |
| 2923 | "test", | |
| 2909 | 2924 | ); |
| 2910 | 2925 | defer builder.destroy(); |
| 2911 | 2926 |
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| ... | ... | @@ -2260,6 +2260,9 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v |
| 2260 | 2260 | const argv_index_cache_dir = child_argv.items.len; |
| 2261 | 2261 | _ = try child_argv.addOne(); |
| 2262 | 2262 | |
| 2263 | const argv_index_global_cache_dir = child_argv.items.len; | |
| 2264 | _ = try child_argv.addOne(); | |
| 2265 | ||
| 2263 | 2266 | { |
| 2264 | 2267 | var i: usize = 0; |
| 2265 | 2268 | while (i < args.len) : (i += 1) { |
| ... | ... | @@ -2280,13 +2283,11 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v |
| 2280 | 2283 | if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg}); |
| 2281 | 2284 | i += 1; |
| 2282 | 2285 | override_local_cache_dir = args[i]; |
| 2283 | try child_argv.appendSlice(&[_][]const u8{ arg, args[i] }); | |
| 2284 | 2286 | continue; |
| 2285 | 2287 | } else if (mem.eql(u8, arg, "--global-cache-dir")) { |
| 2286 | 2288 | if (i + 1 >= args.len) fatal("expected argument after '{}'", .{arg}); |
| 2287 | 2289 | i += 1; |
| 2288 | 2290 | override_global_cache_dir = args[i]; |
| 2289 | try child_argv.appendSlice(&[_][]const u8{ arg, args[i] }); | |
| 2290 | 2291 | continue; |
| 2291 | 2292 | } |
| 2292 | 2293 | } |
| ... | ... | @@ -2371,6 +2372,8 @@ pub fn cmdBuild(gpa: *Allocator, arena: *Allocator, args: []const []const u8) !v |
| 2371 | 2372 | }; |
| 2372 | 2373 | defer global_cache_directory.handle.close(); |
| 2373 | 2374 | |
| 2375 | child_argv.items[argv_index_global_cache_dir] = global_cache_directory.path orelse cwd_path; | |
| 2376 | ||
| 2374 | 2377 | var local_cache_directory: Compilation.Directory = l: { |
| 2375 | 2378 | if (override_local_cache_dir) |local_cache_dir_path| { |
| 2376 | 2379 | break :l .{ |