Commit 3f8f63b132

Andrew Kelley <andrew@ziglang.org>
2023-02-12 16:17:49
std.Build: make cache_root and global_cache_root relative to cwd
This makes it so that when there is a tree of std.Build objects, only one zig-cache is used (the top-level application) instead of polluting package directories with zig-cache folders.
1 parent d97042a
Changed files (3)
lib/std/Build/CompileStep.zig
@@ -1350,10 +1350,10 @@ fn make(step: *Step) !void {
     }
 
     try zig_args.append("--cache-dir");
-    try zig_args.append(builder.pathFromRoot(builder.cache_root.path orelse "."));
+    try zig_args.append(builder.cache_root.path orelse ".");
 
     try zig_args.append("--global-cache-dir");
-    try zig_args.append(builder.pathFromRoot(builder.global_cache_root.path orelse "."));
+    try zig_args.append(builder.global_cache_root.path orelse ".");
 
     try zig_args.append("--name");
     try zig_args.append(self.name);
@@ -1786,7 +1786,7 @@ fn make(step: *Step) !void {
 
         const resolved_args_file = try mem.concat(builder.allocator, u8, &.{
             "@",
-            builder.pathFromRoot(try builder.cache_root.join(builder.allocator, &.{args_file})),
+            try builder.cache_root.join(builder.allocator, &.{args_file}),
         });
 
         zig_args.shrinkRetainingCapacity(2);
lib/std/Build.zig
@@ -1644,7 +1644,6 @@ pub const GeneratedFile = struct {
 };
 
 /// A file source is a reference to an existing or future file.
-///
 pub const FileSource = union(enum) {
     /// A plain file path, relative to build root or absolute.
     path: []const u8,
lib/build_runner.zig
@@ -49,12 +49,12 @@ pub fn main() !void {
     };
 
     const local_cache_directory: std.Build.Cache.Directory = .{
-        .path = try std.fs.path.relative(allocator, build_root, cache_root),
+        .path = cache_root,
         .handle = try std.fs.cwd().makeOpenPath(cache_root, .{}),
     };
 
     const global_cache_directory: std.Build.Cache.Directory = .{
-        .path = try std.fs.path.relative(allocator, build_root, global_cache_root),
+        .path = global_cache_root,
         .handle = try std.fs.cwd().makeOpenPath(global_cache_root, .{}),
     };