Fix test-zig0 cache invalidation on every commit
The git-describe version string (including commit hash) was passed via exe_options to zig_internals_mod, causing verbose_dumper to recompile (~7 min) after every commit. Create separate zig0_exe_options with a fixed version "0.15.2-zig0-dev" for test-zig0/all-zig0 targets. Also verify matched_count against c_func_count in Air comparisons to catch spurious extra functions from the C pipeline. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
31
build.zig
31
build.zig
@@ -252,7 +252,8 @@ pub fn build(b: *std.Build) !void {
|
||||
exe_options.addOption(bool, "llvm_has_arc", llvm_has_arc);
|
||||
exe_options.addOption(bool, "llvm_has_xtensa", llvm_has_xtensa);
|
||||
exe_options.addOption(bool, "debug_gpa", debug_gpa);
|
||||
exe_options.addOption(DevEnv, "dev", b.option(DevEnv, "dev", "Build a compiler with a reduced feature set for development of specific features") orelse if (only_c) .bootstrap else .full);
|
||||
const dev_mode: DevEnv = b.option(DevEnv, "dev", "Build a compiler with a reduced feature set for development of specific features") orelse if (only_c) .bootstrap else .full;
|
||||
exe_options.addOption(DevEnv, "dev", dev_mode);
|
||||
exe_options.addOption(ValueInterpretMode, "value_interpret_mode", value_interpret_mode);
|
||||
|
||||
if (link_libc) {
|
||||
@@ -685,8 +686,32 @@ pub fn build(b: *std.Build) !void {
|
||||
break :blk b.resolveTargetQuery(query);
|
||||
};
|
||||
|
||||
// Separate build_options for zig0 tests with a fixed version string, so
|
||||
// that the verbose_dumper cache is not invalidated on every git commit.
|
||||
const zig0_exe_options = b.addOptions();
|
||||
zig0_exe_options.addOption(u32, "mem_leak_frames", mem_leak_frames);
|
||||
zig0_exe_options.addOption(bool, "skip_non_native", skip_non_native);
|
||||
zig0_exe_options.addOption(bool, "have_llvm", enable_llvm);
|
||||
zig0_exe_options.addOption(bool, "llvm_has_m68k", llvm_has_m68k);
|
||||
zig0_exe_options.addOption(bool, "llvm_has_csky", llvm_has_csky);
|
||||
zig0_exe_options.addOption(bool, "llvm_has_arc", llvm_has_arc);
|
||||
zig0_exe_options.addOption(bool, "llvm_has_xtensa", llvm_has_xtensa);
|
||||
zig0_exe_options.addOption(bool, "debug_gpa", debug_gpa);
|
||||
zig0_exe_options.addOption(DevEnv, "dev", dev_mode);
|
||||
zig0_exe_options.addOption(ValueInterpretMode, "value_interpret_mode", value_interpret_mode);
|
||||
zig0_exe_options.addOption([:0]const u8, "version", try b.allocator.dupeZ(u8, "0.15.2-zig0-dev"));
|
||||
zig0_exe_options.addOption(std.SemanticVersion, "semver", try std.SemanticVersion.parse("0.15.2-zig0-dev"));
|
||||
zig0_exe_options.addOption(bool, "enable_debug_extensions", enable_debug_extensions);
|
||||
zig0_exe_options.addOption(bool, "enable_logging", enable_logging);
|
||||
zig0_exe_options.addOption(bool, "enable_link_snapshots", enable_link_snapshots);
|
||||
zig0_exe_options.addOption(bool, "enable_tracy", tracy != null);
|
||||
zig0_exe_options.addOption(bool, "enable_tracy_callstack", tracy_callstack);
|
||||
zig0_exe_options.addOption(bool, "enable_tracy_allocation", tracy_allocation);
|
||||
zig0_exe_options.addOption(u32, "tracy_callstack_depth", tracy_callstack_depth);
|
||||
zig0_exe_options.addOption(bool, "value_tracing", value_tracing);
|
||||
|
||||
const test_zig0_step = b.step("test-zig0", "Run zig0 C implementation tests");
|
||||
addZig0TestStep(b, test_zig0_step, zig0_target, optimize, zig0_cc, zig0_no_exec, zig0_valgrind, zig0_test_timeout, exe_options);
|
||||
addZig0TestStep(b, test_zig0_step, zig0_target, optimize, zig0_cc, zig0_no_exec, zig0_valgrind, zig0_test_timeout, zig0_exe_options);
|
||||
|
||||
const fmt_zig0 = b.step("fmt-zig0", "Format zig0 C code");
|
||||
const clang_format = b.addSystemCommand(&.{ "clang-format", "-i" });
|
||||
@@ -749,7 +774,7 @@ pub fn build(b: *std.Build) !void {
|
||||
all_zig0.dependOn(&zig0_fmt_check.step);
|
||||
all_zig0.dependOn(lint_zig0);
|
||||
for (zig0_compilers) |compiler| {
|
||||
addZig0TestStep(b, all_zig0, zig0_target, optimize, compiler, false, zig0_valgrind, zig0_test_timeout, exe_options);
|
||||
addZig0TestStep(b, all_zig0, zig0_target, optimize, compiler, false, zig0_valgrind, zig0_test_timeout, zig0_exe_options);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -251,6 +251,10 @@ fn semaAirRawCheck(source: [:0]const u8) !void {
|
||||
std.debug.print("zig_compare_air error: {s}\n", .{std.mem.span(e)});
|
||||
return error.AirMismatch;
|
||||
}
|
||||
if (cmp_result.matched_count != result.c_func_air_list.len) {
|
||||
std.debug.print("Air func count mismatch: zig matched {d}, c produced {d}\n", .{ cmp_result.matched_count, result.c_func_air_list.len });
|
||||
return error.AirMismatch;
|
||||
}
|
||||
}
|
||||
|
||||
test "sema: Air raw C vs Zig comparison (empty)" {
|
||||
|
||||
@@ -92,6 +92,10 @@ fn stagesCheck(gpa: Allocator, comptime path: []const u8, source: [:0]const u8)
|
||||
std.debug.print("zig_compare_air error: {s}\n", .{std.mem.span(e)});
|
||||
return error.AirMismatch;
|
||||
}
|
||||
if (cmp_result.matched_count != c_func_air_list.len) {
|
||||
std.debug.print("Air func count mismatch: zig matched {d}, c produced {d}\n", .{ cmp_result.matched_count, c_func_air_list.len });
|
||||
return error.AirMismatch;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user