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