authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-01-07 19:07:24-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-01-07 19:07:33-07:00
logc53a556a61fabbfa664d0bc433d0edf8092ee0db
treeacc7df3dbe3e57a51bfeedc55c179e7fc0d1d67c
parent01e34c1cd9a1cb56563e6c611c19d864c81de3c3

std.build.WriteFileStep: fix regression in this branch

This branch makes WriteFileStep use the same hashing algorithm as our cache system, reducing the divergence between zig build and the cache system.

2 files changed, 3 insertions(+), 5 deletions(-)

lib/std/build/ConfigHeaderStep.zig-1
...@@ -135,7 +135,6 @@ fn make(step: *Step) !void {...@@ -135,7 +135,6 @@ fn make(step: *Step) !void {
135 self.output_dir = try std.fs.path.join(gpa, &[_][]const u8{135 self.output_dir = try std.fs.path.join(gpa, &[_][]const u8{
136 self.builder.cache_root, "o", &hash_basename,136 self.builder.cache_root, "o", &hash_basename,
137 });137 });
138
139 var dir = std.fs.cwd().makeOpenPath(self.output_dir, .{}) catch |err| {138 var dir = std.fs.cwd().makeOpenPath(self.output_dir, .{}) catch |err| {
140 std.debug.print("unable to make path {s}: {s}\n", .{ self.output_dir, @errorName(err) });139 std.debug.print("unable to make path {s}: {s}\n", .{ self.output_dir, @errorName(err) });
141 return err;140 return err;
lib/std/build/WriteFileStep.zig+3-4
...@@ -82,16 +82,15 @@ fn make(step: *Step) !void {...@@ -82,16 +82,15 @@ fn make(step: *Step) !void {
82 }82 }
83 var digest: [16]u8 = undefined;83 var digest: [16]u8 = undefined;
84 hash.final(&digest);84 hash.final(&digest);
85 var hash_basename: [64]u8 = undefined;85 var hash_basename: [digest.len * 2]u8 = undefined;
86 _ = std.fmt.bufPrint(86 _ = std.fmt.bufPrint(
87 &hash_basename,87 &hash_basename,
88 "{s}",88 "{s}",
89 .{std.fmt.fmtSliceHexLower(&digest)},89 .{std.fmt.fmtSliceHexLower(&digest)},
90 ) catch unreachable;90 ) catch unreachable;
91
91 self.output_dir = try fs.path.join(self.builder.allocator, &[_][]const u8{92 self.output_dir = try fs.path.join(self.builder.allocator, &[_][]const u8{
92 self.builder.cache_root,93 self.builder.cache_root, "o", &hash_basename,
93 "o",
94 &hash_basename,
95 });94 });
96 var dir = fs.cwd().makeOpenPath(self.output_dir, .{}) catch |err| {95 var dir = fs.cwd().makeOpenPath(self.output_dir, .{}) catch |err| {
97 std.debug.print("unable to make path {s}: {s}\n", .{ self.output_dir, @errorName(err) });96 std.debug.print("unable to make path {s}: {s}\n", .{ self.output_dir, @errorName(err) });