authorgravatar for stel@comfy.monsterpraschke <stel@comfy.monster> 2021-11-27 16:40:26+00:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-02-05 16:33:57+02:00
logf2a82bafae414e9b454b77f6d0bcf768cfa9089b
tree52d46b871667025cee4b566d3992ae253751e4ef
parent0e1afb4d986c3316c6f024be50612b0a6c66777b

std: allow tests to use cache and setOutputDir


1 files changed, 23 insertions(+), 27 deletions(-)

lib/std/build.zig+23-27
...@@ -2862,40 +2862,36 @@ pub const LibExeObjStep = struct {...@@ -2862,40 +2862,36 @@ pub const LibExeObjStep = struct {
2862 });2862 });
2863 }2863 }
28642864
2865 if (self.kind == .@"test") {2865 try zig_args.append("--enable-cache");
2866 _ = try builder.execFromStep(zig_args.items, step);
2867 } else {
2868 try zig_args.append("--enable-cache");
28692866
2870 const output_dir_nl = try builder.execFromStep(zig_args.items, &self.step);2867 const output_dir_nl = try builder.execFromStep(zig_args.items, &self.step);
2871 const build_output_dir = mem.trimRight(u8, output_dir_nl, "\r\n");2868 const build_output_dir = mem.trimRight(u8, output_dir_nl, "\r\n");
28722869
2873 if (self.output_dir) |output_dir| {2870 if (self.output_dir) |output_dir| {
2874 var src_dir = try std.fs.cwd().openDir(build_output_dir, .{ .iterate = true });2871 var src_dir = try std.fs.cwd().openDir(build_output_dir, .{ .iterate = true });
2875 defer src_dir.close();2872 defer src_dir.close();
28762873
2877 // Create the output directory if it doesn't exist.2874 // Create the output directory if it doesn't exist.
2878 try std.fs.cwd().makePath(output_dir);2875 try std.fs.cwd().makePath(output_dir);
28792876
2880 var dest_dir = try std.fs.cwd().openDir(output_dir, .{});2877 var dest_dir = try std.fs.cwd().openDir(output_dir, .{});
2881 defer dest_dir.close();2878 defer dest_dir.close();
28822879
2883 var it = src_dir.iterate();2880 var it = src_dir.iterate();
2884 while (try it.next()) |entry| {2881 while (try it.next()) |entry| {
2885 // The compiler can put these files into the same directory, but we don't2882 // The compiler can put these files into the same directory, but we don't
2886 // want to copy them over.2883 // want to copy them over.
2887 if (mem.eql(u8, entry.name, "stage1.id") or2884 if (mem.eql(u8, entry.name, "stage1.id") or
2888 mem.eql(u8, entry.name, "llvm-ar.id") or2885 mem.eql(u8, entry.name, "llvm-ar.id") or
2889 mem.eql(u8, entry.name, "libs.txt") or2886 mem.eql(u8, entry.name, "libs.txt") or
2890 mem.eql(u8, entry.name, "builtin.zig") or2887 mem.eql(u8, entry.name, "builtin.zig") or
2891 mem.eql(u8, entry.name, "zld.id") or2888 mem.eql(u8, entry.name, "zld.id") or
2892 mem.eql(u8, entry.name, "lld.id")) continue;2889 mem.eql(u8, entry.name, "lld.id")) continue;
28932890
2894 _ = try src_dir.updateFile(entry.name, dest_dir, entry.name, .{});2891 _ = try src_dir.updateFile(entry.name, dest_dir, entry.name, .{});
2895 }
2896 } else {
2897 self.output_dir = build_output_dir;
2898 }2892 }
2893 } else {
2894 self.output_dir = build_output_dir;
2899 }2895 }
29002896
2901 // This will ensure all output filenames will now have the output_dir available!2897 // This will ensure all output filenames will now have the output_dir available!