| ... | ... | @@ -290,9 +290,8 @@ const Eval = struct { |
| 290 | 290 | return; |
| 291 | 291 | }, |
| 292 | 292 | .emit_digest => { |
| 293 | | const EbpHdr = std.zig.Server.Message.EmitDigest; |
| 294 | | const ebp_hdr = @as(*align(1) const EbpHdr, @ptrCast(body)); |
| 295 | | _ = ebp_hdr; |
| 293 | var r: std.Io.Reader = .fixed(body); |
| 294 | _ = r.takeStruct(std.zig.Server.Message.EmitDigest, .little) catch unreachable; |
| 296 | 295 | if (stderr.bufferedLen() > 0) { |
| 297 | 296 | const stderr_data = try poller.toOwnedSlice(.stderr); |
| 298 | 297 | if (eval.allow_stderr) { |
| ... | ... | @@ -307,7 +306,7 @@ const Eval = struct { |
| 307 | 306 | // This message indicates the end of the update. |
| 308 | 307 | } |
| 309 | 308 | |
| 310 | | const digest = body[@sizeOf(EbpHdr)..][0..Cache.bin_digest_len]; |
| 309 | const digest = r.takeArray(Cache.bin_digest_len) catch unreachable; |
| 311 | 310 | const result_dir = ".local-cache" ++ std.fs.path.sep_str ++ "o" ++ std.fs.path.sep_str ++ Cache.binToHex(digest.*); |
| 312 | 311 | |
| 313 | 312 | const bin_name = try std.zig.EmitArtifact.bin.cacheName(arena, .{ |
| ... | ... | @@ -519,7 +518,10 @@ const Eval = struct { |
| 519 | 518 | .tag = .update, |
| 520 | 519 | .bytes_len = 0, |
| 521 | 520 | }; |
| 522 | | try eval.child.stdin.?.writeAll(std.mem.asBytes(&header)); |
| 521 | var w = eval.child.stdin.?.writer(&.{}); |
| 522 | w.interface.writeStruct(header, .little) catch |err| switch (err) { |
| 523 | error.WriteFailed => return w.err.?, |
| 524 | }; |
| 523 | 525 | } |
| 524 | 526 | |
| 525 | 527 | fn end(eval: *Eval, poller: *Poller) !void { |
| ... | ... | @@ -836,9 +838,12 @@ fn requestExit(child: *std.process.Child, eval: *Eval) void { |
| 836 | 838 | .tag = .exit, |
| 837 | 839 | .bytes_len = 0, |
| 838 | 840 | }; |
| 839 | | child.stdin.?.writeAll(std.mem.asBytes(&header)) catch |err| switch (err) { |
| 840 | | error.BrokenPipe => {}, |
| 841 | | else => eval.fatal("failed to send exit: {s}", .{@errorName(err)}), |
| 841 | var w = eval.child.stdin.?.writer(&.{}); |
| 842 | w.interface.writeStruct(header, .little) catch |err| switch (err) { |
| 843 | error.WriteFailed => switch (w.err.?) { |
| 844 | error.BrokenPipe => {}, |
| 845 | else => |e| eval.fatal("failed to send exit: {s}", .{@errorName(e)}), |
| 846 | }, |
| 842 | 847 | }; |
| 843 | 848 | |
| 844 | 849 | // Send EOF to stdin. |