| 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,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 | } |
| ... | @@ -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)); |
| 2198 | 2207 | ||
| 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; |
| 2201 | 2213 | ||
| ... | @@ -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(); |
| 2831 | 2844 | ||
| ... | @@ -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(); |
| 2874 | 2888 | ||
| ... | @@ -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(); |
| 2911 | 2926 |
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| ... | @@ -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(); |
| 2262 | 2262 | ||
| 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(); |
| 2373 | 2374 | ||
| 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 .{ |