authorgravatar for kappaloris@gmail.comLoris Cro <kappaloris@gmail.com> 2023-12-11 23:08:03+01:00
committergravatar for kappaloris@gmail.comLoris Cro <kappaloris@gmail.com> 2023-12-11 23:08:03+01:00
log26e27f5f644437526b5ed5cad6559db8250bb545
treeb126f859fd57ab7927f02297f28ccba54a43440f
parent69195d0cd43468f213332c5792df04c941f8313d

std.Build.Cache: add HexDigest type


1 files changed, 15 insertions(+), 14 deletions(-)

lib/std/Build/Cache.zig+15-14
......@@ -179,6 +179,7 @@ fn getPrefixSubpath(allocator: Allocator, prefix: []const u8, path: []u8) ![]u8
179179pub const bin_digest_len = 16;
180180pub const hex_digest_len = bin_digest_len * 2;
181181pub const BinDigest = [bin_digest_len]u8;
182pub const HexDigest = [hex_digest_len]u8;
182183
183184/// This is currently just an arbitrary non-empty string that can't match another manifest line.
184185const manifest_header = "0";
......@@ -300,11 +301,11 @@ pub const HashHelper = struct {
300301 }
301302
302303 /// Returns a hex encoded hash of the inputs, mutating the state of the hasher.
303 pub fn final(hh: *HashHelper) [hex_digest_len]u8 {
304 pub fn final(hh: *HashHelper) HexDigest {
304305 var bin_digest: BinDigest = undefined;
305306 hh.hasher.final(&bin_digest);
306307
307 var out_digest: [hex_digest_len]u8 = undefined;
308 var out_digest: HexDigest = undefined;
308309 _ = fmt.bufPrint(
309310 &out_digest,
310311 "{s}",
......@@ -346,7 +347,7 @@ pub const Manifest = struct {
346347 // will then use the same timestamp, to avoid unnecessary filesystem writes.
347348 want_refresh_timestamp: bool = true,
348349 files: std.ArrayListUnmanaged(File) = .{},
349 hex_digest: [hex_digest_len]u8,
350 hex_digest: HexDigest,
350351 /// Populated when hit() returns an error because of one
351352 /// of the files listed in the manifest.
352353 failed_file_index: ?usize = null,
......@@ -829,7 +830,7 @@ pub const Manifest = struct {
829830 }
830831
831832 /// Returns a hex encoded hash of the inputs.
832 pub fn final(self: *Manifest) [hex_digest_len]u8 {
833 pub fn final(self: *Manifest) HexDigest {
833834 assert(self.manifest_file != null);
834835
835836 // We don't close the manifest file yet, because we want to
......@@ -841,7 +842,7 @@ pub const Manifest = struct {
841842 var bin_digest: BinDigest = undefined;
842843 self.hash.hasher.final(&bin_digest);
843844
844 var out_digest: [hex_digest_len]u8 = undefined;
845 var out_digest: HexDigest = undefined;
845846 _ = fmt.bufPrint(
846847 &out_digest,
847848 "{s}",
......@@ -1021,8 +1022,8 @@ test "cache file and then recall it" {
10211022 std.time.sleep(1);
10221023 }
10231024
1024 var digest1: [hex_digest_len]u8 = undefined;
1025 var digest2: [hex_digest_len]u8 = undefined;
1025 var digest1: HexDigest = undefined;
1026 var digest2: HexDigest = undefined;
10261027
10271028 {
10281029 var cache = Cache{
......@@ -1089,8 +1090,8 @@ test "check that changing a file makes cache fail" {
10891090 std.time.sleep(1);
10901091 }
10911092
1092 var digest1: [hex_digest_len]u8 = undefined;
1093 var digest2: [hex_digest_len]u8 = undefined;
1093 var digest1: HexDigest = undefined;
1094 var digest2: HexDigest = undefined;
10941095
10951096 {
10961097 var cache = Cache{
......@@ -1152,8 +1153,8 @@ test "no file inputs" {
11521153
11531154 const temp_manifest_dir = "no_file_inputs_manifest_dir";
11541155
1155 var digest1: [hex_digest_len]u8 = undefined;
1156 var digest2: [hex_digest_len]u8 = undefined;
1156 var digest1: HexDigest = undefined;
1157 var digest2: HexDigest = undefined;
11571158
11581159 var cache = Cache{
11591160 .gpa = testing.allocator,
......@@ -1211,9 +1212,9 @@ test "Manifest with files added after initial hash work" {
12111212 std.time.sleep(1);
12121213 }
12131214
1214 var digest1: [hex_digest_len]u8 = undefined;
1215 var digest2: [hex_digest_len]u8 = undefined;
1216 var digest3: [hex_digest_len]u8 = undefined;
1215 var digest1: HexDigest = undefined;
1216 var digest2: HexDigest = undefined;
1217 var digest3: HexDigest = undefined;
12171218
12181219 {
12191220 var cache = Cache{