Zig Version
0.10.0-dev.3315+1a16b7214
Steps to Reproduce
// main.zigconststd=@import("std");
conststdout=std.io.getStdOut().writer();
conststdin=std.io.getStdIn().reader();
pubfnmain() !void {
vargeneral_purpose_allocator=std.heap.GeneralPurposeAllocator(.{}){};
constgalloc=general_purpose_allocator.allocator();
defer_=general_purpose_allocator.deinit();
constinput=trystdin.readUntilDelimiterAlloc(galloc, '\n', 1000);
defergalloc.free(input);
_=trystdout.print("input = {s}\n", .{input});
}// build.zigconststd=@import("std");
pubfnbuild(b: *std.build.Builder) void {
// Standard target options allows the person running `zig build` to choose// what target to build for. Here we do not override the defaults, which// means any target is allowed, and the default is native. Other options// for restricting supported target set are available.consttarget=b.standardTargetOptions(.{});
// Standard release options allow the person running `zig build` to select// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.constmode=b.standardReleaseOptions();
constexe=b.addExecutable("app", "src/main.zig");
exe.setTarget(target);
exe.setBuildMode(mode);
exe.install();
construn_cmd=exe.run();
run_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
run_cmd.addArgs(args);
}
construn_step=b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
constexe_tests=b.addTest("src/main.zig");
exe_tests.setTarget(target);
exe_tests.setBuildMode(mode);
consttest_step=b.step("test", "Run unit tests");
test_step.dependOn(&exe_tests.step);
}Expected Behavior
should be able to read from stdin
Actual Behavior
~/projects/exp/zig
❯ zigbuildrunerror: NotOpenForReading/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:650:22: 0x228fd5instd.os.read (app)
.BADF=>returnerror.NotOpenForReading, // Can be a race condition.^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs/file.zig:975:13: 0x228e31instd.fs.file.File.read (app)
returnos.read(self.handle, buffer);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/io/reader.zig:26:13: 0x22ca1finstd.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)
.read (app)
returnreadFn(self.context, buffer);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/io/reader.zig:232:30: 0x22c930instd.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read
).readByte (app)
constamt_read=tryself.read(result[0..]);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/io/reader.zig:114:32: 0x22c811instd.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read
).readUntilDelimiterArrayList (app)
varbyte: u8=tryself.readByte();
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/io/reader.zig:136:13: 0x22c562instd.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read
).readUntilDelimiterAlloc (app)
tryself.readUntilDelimiterArrayList(&array_list, delimiter, max_size);
^/home/username/projects/exp/zig/src/main.zig:10:19: 0x22a1a3inmain (app)
constinput=trystdin.readUntilDelimiterAlloc(galloc, '\n', 1000);
^Thefollowingcommandexitedwitherrorcode1 (expected0):
cd/home/username/projects/exp/zig && /home/username/projects/exp/zig/zig-out/bin/apperror: UnexpectedExitCode/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:2749:19: 0x2a168binstd.os.mkdiratZ (build)
.EXIST=>returnerror.PathAlreadyExists,
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:2709:9: 0x2a1573instd.os.mkdirat (build)
returnmkdiratZ(dir_fd, &sub_dir_path_c, mode);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs.zig:1332:9: 0x2a1466instd.fs.Dir.makeDir (build)
tryos.mkdirat(self.fd, sub_path, default_new_dir_mode);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:1680:23: 0x28afddinstd.os.openatZ (build)
.NOENT=>returnerror.FileNotFound,
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs.zig:1081:13: 0x276e4cinstd.fs.Dir.openFileZ (build)
tryos.openatZ(self.fd, sub_path, os_flags, 0);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs.zig:1008:9: 0x274c61instd.fs.Dir.openFile (build)
returnself.openFileZ(&path_c, flags);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:2754:19: 0x2a1702instd.os.mkdiratZ (build)
.NOENT=>returnerror.FileNotFound,
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/os.zig:2709:9: 0x2a1573instd.os.mkdirat (build)
returnmkdiratZ(dir_fd, &sub_dir_path_c, mode);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/fs.zig:1332:9: 0x2a1466instd.fs.Dir.makeDir (build)
tryos.mkdirat(self.fd, sub_path, default_new_dir_mode);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build/RunStep.zig:277:17: 0x2dc687instd.build.RunStep.runCommand (build)
returnerror.UnexpectedExitCode;
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build/RunStep.zig:183:5: 0x2ccad6instd.build.RunStep.make (build)
tryrunCommand(
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build.zig:3648:9: 0x2a1b9einstd.build.Step.make (build)
tryself.makeFn(self);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build.zig:508:9: 0x2a0fecinstd.build.Builder.makeOneStep (build)
trys.make();
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build.zig:502:17: 0x2a0f98instd.build.Builder.makeOneStep (build)
returnerr;
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/std/build.zig:463:13: 0x2974c1instd.build.Builder.make (build)
tryself.makeOneStep(s);
^/home/username/zig/0.10.0-dev.3315+1a16b7214/files/lib/build_runner.zig:213:21: 0x2911b5inmain (build)
else=>returnerr,
^error: thefollowingbuildcommandfailedwithexitcode1:
/home/username/projects/exp/zig/zig-cache/o/f68e9a1804c76861e552af4fc326bcdf/build/home/username/zig/0.10.0-dev.3315+1a16b7214/files/zig/home/username/projects/exp/zig/home/username/projects/exp/zig/zig-cache/home/username/.cache/zigrun
this error only happens when build.zig is being compiled when you execute zig build run
so if you run zig build run again this error does not occur
Zig Version
0.10.0-dev.3315+1a16b7214
Steps to Reproduce
Expected Behavior
should be able to read from stdin
Actual Behavior
this error only happens when build.zig is being compiled when you execute
zig build runso if you run
zig build runagain this error does not occur