aboutsummaryrefslogtreecommitdiff
path: root/src/install/bin.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/install/bin.zig')
-rw-r--r--src/install/bin.zig26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/install/bin.zig b/src/install/bin.zig
index adbd5f4d3..b559f4f53 100644
--- a/src/install/bin.zig
+++ b/src/install/bin.zig
@@ -172,7 +172,7 @@ pub const Bin = extern struct {
done: bool = false,
dir_iterator: ?std.fs.IterableDir.Iterator = null,
package_name: String,
- package_installed_node_modules: std.fs.Dir = std.fs.Dir{ .fd = std.math.maxInt(std.os.fd_t) },
+ package_installed_node_modules: std.fs.Dir = std.fs.Dir{ .fd = bun.fdcast(bun.invalid_fd) },
buf: [bun.MAX_PATH_BYTES]u8 = undefined,
string_buffer: []const u8,
extern_string_buf: []const ExternalString,
@@ -257,8 +257,8 @@ pub const Bin = extern struct {
pub const Linker = struct {
bin: Bin,
- package_installed_node_modules: std.os.fd_t = std.math.maxInt(std.os.fd_t),
- root_node_modules_folder: std.os.fd_t = std.math.maxInt(std.os.fd_t),
+ package_installed_node_modules: bun.FileDescriptor = bun.invalid_fd,
+ root_node_modules_folder: bun.FileDescriptor = bun.invalid_fd,
/// Used for generating relative paths
package_name: strings.StringOrTinyString,
@@ -290,6 +290,10 @@ pub const Bin = extern struct {
}
fn setSimlinkAndPermissions(this: *Linker, target_path: [:0]const u8, dest_path: [:0]const u8) void {
+ if (comptime Environment.isWindows) {
+ bun.todo(@src(), {});
+ return;
+ }
std.os.symlinkatZ(target_path, this.root_node_modules_folder, dest_path) catch |err| {
// Silently ignore PathAlreadyExists
// Most likely, the symlink was already created by another package
@@ -320,7 +324,7 @@ pub const Bin = extern struct {
var remain: []u8 = &dest_buf;
if (!link_global) {
- const root_dir = std.fs.Dir{ .fd = this.root_node_modules_folder };
+ const root_dir = std.fs.Dir{ .fd = bun.fdcast(this.root_node_modules_folder) };
const from = root_dir.realpath(dot_bin, &target_buf) catch |err| {
this.err = err;
return;
@@ -337,7 +341,7 @@ pub const Bin = extern struct {
from_remain[0..dot_bin.len].* = dot_bin.*;
from_remain = from_remain[dot_bin.len..];
} else {
- if (this.global_bin_dir.fd >= std.math.maxInt(std.os.fd_t)) {
+ if (bun.toFD(this.global_bin_dir.fd) == bun.invalid_fd) {
this.err = error.MissingGlobalBinDir;
return;
}
@@ -354,7 +358,7 @@ pub const Bin = extern struct {
remain[0] = std.fs.path.sep;
remain = remain[1..];
- this.root_node_modules_folder = this.global_bin_dir.fd;
+ this.root_node_modules_folder = bun.toFD(this.global_bin_dir.fd);
}
const name = this.package_name.slice();
@@ -364,7 +368,9 @@ pub const Bin = extern struct {
remain = remain[1..];
if (comptime Environment.isWindows) {
- @compileError("Bin.Linker.link() needs to be updated to generate .cmd files on Windows");
+ // TODO: Bin.Linker.link() needs to be updated to generate .cmd files on Windows
+ bun.todo(@src(), {});
+ return;
}
switch (this.bin.tag) {
@@ -458,7 +464,7 @@ pub const Bin = extern struct {
bun.copy(u8, remain, target);
remain = remain[target.len..];
- var dir = std.fs.Dir{ .fd = this.package_installed_node_modules };
+ var dir = std.fs.Dir{ .fd = bun.fdcast(this.package_installed_node_modules) };
var joined = Path.joinStringBuf(&target_buf, &parts, .auto);
@as([*]u8, @ptrFromInt(@intFromPtr(joined.ptr)))[joined.len] = 0;
@@ -514,7 +520,7 @@ pub const Bin = extern struct {
dest_buf[0.."../".len].* = "../".*;
remain = dest_buf["../".len..];
} else {
- if (this.global_bin_dir.fd >= std.math.maxInt(std.os.fd_t)) {
+ if (this.global_bin_dir.fd >= bun.invalid_fd) {
this.err = error.MissingGlobalBinDir;
return;
}
@@ -610,7 +616,7 @@ pub const Bin = extern struct {
bun.copy(u8, remain, target);
remain = remain[target.len..];
- var dir = std.fs.Dir{ .fd = this.package_installed_node_modules };
+ var dir = std.fs.Dir{ .fd = bun.fdcast(this.package_installed_node_modules) };
var joined = Path.joinStringBuf(&target_buf, &parts, .auto);
@as([*]u8, @ptrFromInt(@intFromPtr(joined.ptr)))[joined.len] = 0;