mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
incr-check: minor fixes
* fix inconsistency in global cache directory name * don't error if spawning external executor fails * handle CRLF correctly
This commit is contained in:
parent
14ccbbef9f
commit
ada60616b3
1 changed files with 22 additions and 7 deletions
|
|
@ -110,7 +110,7 @@ pub fn main() !void {
|
||||||
"--cache-dir",
|
"--cache-dir",
|
||||||
".local-cache",
|
".local-cache",
|
||||||
"--global-cache-dir",
|
"--global-cache-dir",
|
||||||
".global_cache",
|
".global-cache",
|
||||||
"--listen=-",
|
"--listen=-",
|
||||||
});
|
});
|
||||||
if (opt_resolved_lib_dir) |resolved_lib_dir| {
|
if (opt_resolved_lib_dir) |resolved_lib_dir| {
|
||||||
|
|
@ -373,7 +373,7 @@ const Eval = struct {
|
||||||
};
|
};
|
||||||
|
|
||||||
var argv_buf: [2][]const u8 = undefined;
|
var argv_buf: [2][]const u8 = undefined;
|
||||||
const argv: []const []const u8, const ignore_stderr: bool = switch (std.zig.system.getExternalExecutor(
|
const argv: []const []const u8, const is_foreign: bool = switch (std.zig.system.getExternalExecutor(
|
||||||
eval.host,
|
eval.host,
|
||||||
&eval.target.resolved,
|
&eval.target.resolved,
|
||||||
.{ .link_libc = eval.target.backend == .cbe },
|
.{ .link_libc = eval.target.backend == .cbe },
|
||||||
|
|
@ -395,8 +395,6 @@ const Eval = struct {
|
||||||
.qemu, .wine, .wasmtime, .darling => |executor_cmd| argv: {
|
.qemu, .wine, .wasmtime, .darling => |executor_cmd| argv: {
|
||||||
argv_buf[0] = executor_cmd;
|
argv_buf[0] = executor_cmd;
|
||||||
argv_buf[1] = binary_path;
|
argv_buf[1] = binary_path;
|
||||||
// Some executors (looking at you, Wine) like throwing some stderr in, just for fun.
|
|
||||||
// Therefore, we'll ignore stderr when using a foreign executor.
|
|
||||||
break :argv .{ argv_buf[0..2], true };
|
break :argv .{ argv_buf[0..2], true };
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
@ -410,15 +408,31 @@ const Eval = struct {
|
||||||
.cwd_dir = eval.tmp_dir,
|
.cwd_dir = eval.tmp_dir,
|
||||||
.cwd = eval.tmp_dir_path,
|
.cwd = eval.tmp_dir_path,
|
||||||
}) catch |err| {
|
}) catch |err| {
|
||||||
|
if (is_foreign) {
|
||||||
|
// Chances are the foreign executor isn't available. Skip this evaluation.
|
||||||
|
if (eval.allow_stderr) {
|
||||||
|
std.log.warn("update '{s}': skipping execution of '{s}' via executor for foreign target '{s}': {s}", .{
|
||||||
|
update.name,
|
||||||
|
binary_path,
|
||||||
|
try eval.target.resolved.zigTriple(eval.arena),
|
||||||
|
@errorName(err),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
eval.fatal("update '{s}': failed to run the generated executable '{s}': {s}", .{
|
eval.fatal("update '{s}': failed to run the generated executable '{s}': {s}", .{
|
||||||
update.name, binary_path, @errorName(err),
|
update.name, binary_path, @errorName(err),
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
if (!ignore_stderr and result.stderr.len != 0) {
|
|
||||||
|
// Some executors (looking at you, Wine) like throwing some stderr in, just for fun.
|
||||||
|
// Therefore, we'll ignore stderr when using a foreign executor.
|
||||||
|
if (!is_foreign and result.stderr.len != 0) {
|
||||||
std.log.err("update '{s}': generated executable '{s}' had unexpected stderr:\n{s}", .{
|
std.log.err("update '{s}': generated executable '{s}' had unexpected stderr:\n{s}", .{
|
||||||
update.name, binary_path, result.stderr,
|
update.name, binary_path, result.stderr,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (result.term) {
|
switch (result.term) {
|
||||||
.Exited => |code| switch (update.outcome) {
|
.Exited => |code| switch (update.outcome) {
|
||||||
.unknown, .compile_errors => unreachable,
|
.unknown, .compile_errors => unreachable,
|
||||||
|
|
@ -438,7 +452,8 @@ const Eval = struct {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if (!ignore_stderr and result.stderr.len != 0) std.process.exit(1);
|
|
||||||
|
if (!is_foreign and result.stderr.len != 0) std.process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn requestUpdate(eval: *Eval) !void {
|
fn requestUpdate(eval: *Eval) !void {
|
||||||
|
|
@ -594,7 +609,7 @@ const Case = struct {
|
||||||
if (std.mem.startsWith(u8, line, "#")) {
|
if (std.mem.startsWith(u8, line, "#")) {
|
||||||
var line_it = std.mem.splitScalar(u8, line, '=');
|
var line_it = std.mem.splitScalar(u8, line, '=');
|
||||||
const key = line_it.first()[1..];
|
const key = line_it.first()[1..];
|
||||||
const val = line_it.rest();
|
const val = std.mem.trimRight(u8, line_it.rest(), "\r"); // windows moment
|
||||||
if (val.len == 0) {
|
if (val.len == 0) {
|
||||||
fatal("line {d}: missing value", .{line_n});
|
fatal("line {d}: missing value", .{line_n});
|
||||||
} else if (std.mem.eql(u8, key, "target")) {
|
} else if (std.mem.eql(u8, key, "target")) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue