zig icon indicating copy to clipboard operation
zig copied to clipboard

FileNotFound error when building with lib.emit_h = true

Open DiskPoppy opened this issue 3 years ago • 2 comments
trafficstars

Zig Version

0.10.0-dev.4060+61aaef0b0

Steps to Reproduce

I'm using macOS. In any project, such as the one generated by zig init-lib, add lib.emit_h = true, then do zig build

Expected Behavior

For it to emit the header together with zig.h without error

Actual Behavior

It emits the header, but without zig.h, and errors out with the following:

error: FileNotFound
/Users/me/zig/lib/zig/std/os.zig:2753:19: 0x1016c0dee in mkdiratZ (build)
        .EXIST => return error.PathAlreadyExists,
                  ^
/Users/me/zig/lib/zig/std/os.zig:2713:9: 0x1016a6f83 in mkdirat (build)
        return mkdiratZ(dir_fd, &sub_dir_path_c, mode);
        ^
/Users/me/zig/lib/zig/std/fs.zig:1361:9: 0x1016a6e3b in makeDir (build)
        try os.mkdirat(self.fd, sub_path, default_new_dir_mode);
        ^
/Users/me/zig/lib/zig/std/os.zig:2753:19: 0x1016c0dee in mkdiratZ (build)
        .EXIST => return error.PathAlreadyExists,
                  ^
/Users/me/zig/lib/zig/std/os.zig:2713:9: 0x1016a6f83 in mkdirat (build)
        return mkdiratZ(dir_fd, &sub_dir_path_c, mode);

/Users/me/zig/lib/zig/std/fs.zig:1361:9: 0x1016a6e3b in makeDir (build)
        try os.mkdirat(self.fd, sub_path, default_new_dir_mode);
        ^
/Users/me/zig/lib/zig/std/os.zig:1683:23: 0x10170b837 in openatZ (build)
            .NOENT => return error.FileNotFound,
                      ^
/Users/me/zig/lib/zig/std/fs.zig:1110:13: 0x1016ee1d8 in openFileZ (build)
            try os.openatZ(self.fd, sub_path, os_flags, 0);
            ^
/Users/me/zig/lib/zig/std/fs.zig:1037:9: 0x1016b309f in openFile (build)
        return self.openFileZ(&path_c, flags);
        ^
/Users/me/zig/lib/zig/std/fs.zig:2250:24: 0x101735d0b in updateFile (build)
        var src_file = try source_dir.openFile(source_path, .{});
                       ^
/Users/me/zig/lib/zig/std/build.zig:1088:29: 0x101736dc2 in updateFile (build)
        const prev_status = try fs.Dir.updateFile(cwd, source_path, cwd, dest_path, .{});
                            ^
/Users/me/zig/lib/zig/std/build.zig:3434:13: 0x101718983 in make (build)
            try builder.updateFile(self.artifact.getOutputHSource().getPath(builder), full_pdb_path);
            ^
/Users/me/zig/lib/zig/std/build.zig:3655:9: 0x1016c1367 in make (build)
        try self.makeFn(self);
        ^
/Users/me/zig/lib/zig/std/build.zig:508:9: 0x1016a7ec9 in makeOneStep (build)
        try s.make();
        ^
/Users/me/zig/lib/zig/std/build.zig:502:17: 0x1016a7e2d in makeOneStep (build)
                return err;
                ^
/Users/me/zig/lib/zig/std/build.zig:463:13: 0x1016a7aaa in make (build)
            try self.makeOneStep(s);
            ^
/Users/me/zig/lib/zig/build_runner.zig:213:21: 0x1016aafff in main (build)
            else => return err,

DiskPoppy avatar Sep 25 '22 18:09 DiskPoppy

I think it's because it's trying to install the header from zig-cache/o but the header is generated in the root dir instead.

DiskPoppy avatar Sep 25 '22 21:09 DiskPoppy

Is this macOS specific? I'm unable to reproduce on Linux.

Vexu avatar Nov 03 '22 15:11 Vexu

I'm on Mac on version 0.11.0-dev.669+bd5a8f86a, and this is still a problem.

Jengamon avatar Dec 09 '22 20:12 Jengamon

Confirmed that this also happens on Linux with zig version 0.11.0-dev.5400+c49e4d534.

Problematic line might be build.zig:3430 from the stack track I get.

Jengamon avatar Dec 09 '22 21:12 Jengamon

Also bumping into this on Linux 0.10.0.

lambdadog avatar Dec 12 '22 22:12 lambdadog