mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-09 15:19:07 +00:00
std.Build.Cache: add HexDigest type
This commit is contained in:
parent
69195d0cd4
commit
26e27f5f64
1 changed files with 15 additions and 14 deletions
|
|
@ -179,6 +179,7 @@ fn getPrefixSubpath(allocator: Allocator, prefix: []const u8, path: []u8) ![]u8
|
||||||
pub const bin_digest_len = 16;
|
pub const bin_digest_len = 16;
|
||||||
pub const hex_digest_len = bin_digest_len * 2;
|
pub const hex_digest_len = bin_digest_len * 2;
|
||||||
pub const BinDigest = [bin_digest_len]u8;
|
pub const BinDigest = [bin_digest_len]u8;
|
||||||
|
pub const HexDigest = [hex_digest_len]u8;
|
||||||
|
|
||||||
/// This is currently just an arbitrary non-empty string that can't match another manifest line.
|
/// This is currently just an arbitrary non-empty string that can't match another manifest line.
|
||||||
const manifest_header = "0";
|
const manifest_header = "0";
|
||||||
|
|
@ -300,11 +301,11 @@ pub const HashHelper = struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a hex encoded hash of the inputs, mutating the state of the hasher.
|
/// Returns a hex encoded hash of the inputs, mutating the state of the hasher.
|
||||||
pub fn final(hh: *HashHelper) [hex_digest_len]u8 {
|
pub fn final(hh: *HashHelper) HexDigest {
|
||||||
var bin_digest: BinDigest = undefined;
|
var bin_digest: BinDigest = undefined;
|
||||||
hh.hasher.final(&bin_digest);
|
hh.hasher.final(&bin_digest);
|
||||||
|
|
||||||
var out_digest: [hex_digest_len]u8 = undefined;
|
var out_digest: HexDigest = undefined;
|
||||||
_ = fmt.bufPrint(
|
_ = fmt.bufPrint(
|
||||||
&out_digest,
|
&out_digest,
|
||||||
"{s}",
|
"{s}",
|
||||||
|
|
@ -346,7 +347,7 @@ pub const Manifest = struct {
|
||||||
// will then use the same timestamp, to avoid unnecessary filesystem writes.
|
// will then use the same timestamp, to avoid unnecessary filesystem writes.
|
||||||
want_refresh_timestamp: bool = true,
|
want_refresh_timestamp: bool = true,
|
||||||
files: std.ArrayListUnmanaged(File) = .{},
|
files: std.ArrayListUnmanaged(File) = .{},
|
||||||
hex_digest: [hex_digest_len]u8,
|
hex_digest: HexDigest,
|
||||||
/// Populated when hit() returns an error because of one
|
/// Populated when hit() returns an error because of one
|
||||||
/// of the files listed in the manifest.
|
/// of the files listed in the manifest.
|
||||||
failed_file_index: ?usize = null,
|
failed_file_index: ?usize = null,
|
||||||
|
|
@ -829,7 +830,7 @@ pub const Manifest = struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a hex encoded hash of the inputs.
|
/// Returns a hex encoded hash of the inputs.
|
||||||
pub fn final(self: *Manifest) [hex_digest_len]u8 {
|
pub fn final(self: *Manifest) HexDigest {
|
||||||
assert(self.manifest_file != null);
|
assert(self.manifest_file != null);
|
||||||
|
|
||||||
// We don't close the manifest file yet, because we want to
|
// We don't close the manifest file yet, because we want to
|
||||||
|
|
@ -841,7 +842,7 @@ pub const Manifest = struct {
|
||||||
var bin_digest: BinDigest = undefined;
|
var bin_digest: BinDigest = undefined;
|
||||||
self.hash.hasher.final(&bin_digest);
|
self.hash.hasher.final(&bin_digest);
|
||||||
|
|
||||||
var out_digest: [hex_digest_len]u8 = undefined;
|
var out_digest: HexDigest = undefined;
|
||||||
_ = fmt.bufPrint(
|
_ = fmt.bufPrint(
|
||||||
&out_digest,
|
&out_digest,
|
||||||
"{s}",
|
"{s}",
|
||||||
|
|
@ -1021,8 +1022,8 @@ test "cache file and then recall it" {
|
||||||
std.time.sleep(1);
|
std.time.sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
var digest1: [hex_digest_len]u8 = undefined;
|
var digest1: HexDigest = undefined;
|
||||||
var digest2: [hex_digest_len]u8 = undefined;
|
var digest2: HexDigest = undefined;
|
||||||
|
|
||||||
{
|
{
|
||||||
var cache = Cache{
|
var cache = Cache{
|
||||||
|
|
@ -1089,8 +1090,8 @@ test "check that changing a file makes cache fail" {
|
||||||
std.time.sleep(1);
|
std.time.sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
var digest1: [hex_digest_len]u8 = undefined;
|
var digest1: HexDigest = undefined;
|
||||||
var digest2: [hex_digest_len]u8 = undefined;
|
var digest2: HexDigest = undefined;
|
||||||
|
|
||||||
{
|
{
|
||||||
var cache = Cache{
|
var cache = Cache{
|
||||||
|
|
@ -1152,8 +1153,8 @@ test "no file inputs" {
|
||||||
|
|
||||||
const temp_manifest_dir = "no_file_inputs_manifest_dir";
|
const temp_manifest_dir = "no_file_inputs_manifest_dir";
|
||||||
|
|
||||||
var digest1: [hex_digest_len]u8 = undefined;
|
var digest1: HexDigest = undefined;
|
||||||
var digest2: [hex_digest_len]u8 = undefined;
|
var digest2: HexDigest = undefined;
|
||||||
|
|
||||||
var cache = Cache{
|
var cache = Cache{
|
||||||
.gpa = testing.allocator,
|
.gpa = testing.allocator,
|
||||||
|
|
@ -1211,9 +1212,9 @@ test "Manifest with files added after initial hash work" {
|
||||||
std.time.sleep(1);
|
std.time.sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
var digest1: [hex_digest_len]u8 = undefined;
|
var digest1: HexDigest = undefined;
|
||||||
var digest2: [hex_digest_len]u8 = undefined;
|
var digest2: HexDigest = undefined;
|
||||||
var digest3: [hex_digest_len]u8 = undefined;
|
var digest3: HexDigest = undefined;
|
||||||
|
|
||||||
{
|
{
|
||||||
var cache = Cache{
|
var cache = Cache{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue