diff --git a/src/action_executor.zig b/src/action_executor.zig index 29a208f..246ba7f 100644 --- a/src/action_executor.zig +++ b/src/action_executor.zig @@ -2110,6 +2110,7 @@ fn createOutputParent(io: std.Io, work_root: std.Io.Dir, path: []const u8) !void fn prepareChrootBaseDirs(io: std.Io, chroot_root: std.Io.Dir) !void { try chroot_root.createDirPath(io, "dev"); + try chroot_root.symLink(io, "/proc/self/fd", "dev/fd", .{ .is_directory = true }); try chroot_root.createDirPath(io, "proc"); try chroot_root.createDirPath(io, "tmp"); try chroot_root.createDirPath(io, "var/tmp"); @@ -3641,6 +3642,9 @@ test "prepareChrootBaseDirs creates temporary directories" { defer work_dir.close(std.testing.io); try prepareChrootBaseDirs(std.testing.io, work_dir); + var descriptor_target: [64]u8 = undefined; + const descriptor_target_len = try work_dir.readLink(std.testing.io, "dev/fd", &descriptor_target); + try std.testing.expectEqualStrings("/proc/self/fd", descriptor_target[0..descriptor_target_len]); try work_dir.access(std.testing.io, "tmp", .{}); try work_dir.access(std.testing.io, "var/tmp", .{}); }