aboutsummaryrefslogtreecommitdiff
path: root/src/install
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-15 17:52:04 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-15 17:52:04 -0800
commit934360646fd063a84c6527eea059dc40ae0050bb (patch)
tree41d17932e07fd3230ab924b102079d84ee0403e3 /src/install
parent98df9d7703708cc7351563b9500d6a337003c3eb (diff)
downloadbun-u/vjpr/zig-0.10.tar.gz
bun-u/vjpr/zig-0.10.tar.zst
bun-u/vjpr/zig-0.10.zip
Diffstat (limited to 'src/install')
-rw-r--r--src/install/bin.zig27
-rw-r--r--src/install/install.zig38
-rw-r--r--src/install/npm.zig7
3 files changed, 37 insertions, 35 deletions
diff --git a/src/install/bin.zig b/src/install/bin.zig
index b0d67c01e..51ae962a6 100644
--- a/src/install/bin.zig
+++ b/src/install/bin.zig
@@ -146,7 +146,7 @@ pub const Bin = extern struct {
bin: Bin,
i: usize = 0,
done: bool = false,
- dir_iterator: ?std.fs.Dir.Iterator = null,
+ 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) },
buf: [bun.MAX_PATH_BYTES]u8 = undefined,
@@ -167,7 +167,7 @@ pub const Bin = extern struct {
var joined = Path.joinStringBuf(&this.buf, &parts, .auto);
this.buf[joined.len] = 0;
var joined_: [:0]u8 = this.buf[0..joined.len :0];
- var child_dir = try dir.openIterableDirZ(joined_, .{});
+ var child_dir = try bun.openIterableDirZ(dir.fd, joined_);
this.dir_iterator = child_dir.iterate();
}
@@ -419,15 +419,16 @@ pub const Bin = extern struct {
var joined = Path.joinStringBuf(&target_buf, &parts, .auto);
@intToPtr([*]u8, @ptrToInt(joined.ptr))[joined.len] = 0;
var joined_: [:0]const u8 = joined.ptr[0..joined.len :0];
- var child_dir = dir.openIterableDirZ(joined_, .{}) catch |err| {
- this.err = err;
- return;
- };
+ var child_dir = bun.openIterableDirZ(dir.fd, joined_) catch |err| {
+ this.err = err;
+ return;
+ };
+
defer child_dir.close();
var iter = child_dir.iterate();
- var basedir_path = std.os.getFdPath(child_dir.fd, &target_buf) catch |err| {
+ var basedir_path = std.os.getFdPath(child_dir.dir.fd, &target_buf) catch |err| {
this.err = err;
return;
};
@@ -436,9 +437,9 @@ pub const Bin = extern struct {
var prev_target_buf_remain = target_buf_remain;
while (iter.next() catch null) |entry_| {
- const entry: std.fs.Dir.Entry = entry_;
+ const entry: std.fs.IterableDir.Entry = entry_;
switch (entry.kind) {
- std.fs.Dir.Entry.Kind.SymLink, std.fs.Dir.Entry.Kind.File => {
+ std.fs.IterableDir.Entry.Kind.SymLink, std.fs.IterableDir.Entry.Kind.File => {
target_buf_remain = prev_target_buf_remain;
std.mem.copy(u8, target_buf_remain, entry.name);
target_buf_remain = target_buf_remain[entry.name.len..];
@@ -571,7 +572,7 @@ pub const Bin = extern struct {
var joined = Path.joinStringBuf(&target_buf, &parts, .auto);
@intToPtr([*]u8, @ptrToInt(joined.ptr))[joined.len] = 0;
var joined_: [:0]const u8 = joined.ptr[0..joined.len :0];
- var child_dir = dir.openIterableDirZ(joined_, .{}) catch |err| {
+ var child_dir = bun.openIterableDirZFromDir(dir, joined_) catch |err| {
this.err = err;
return;
};
@@ -579,7 +580,7 @@ pub const Bin = extern struct {
var iter = child_dir.iterate();
- var basedir_path = std.os.getFdPath(child_dir.fd, &target_buf) catch |err| {
+ var basedir_path = std.os.getFdPath(child_dir.dir.fd, &target_buf) catch |err| {
this.err = err;
return;
};
@@ -588,9 +589,9 @@ pub const Bin = extern struct {
var prev_target_buf_remain = target_buf_remain;
while (iter.next() catch null) |entry_| {
- const entry: std.fs.Dir.Entry = entry_;
+ const entry: std.fs.IterableDir.Entry = entry_;
switch (entry.kind) {
- std.fs.Dir.Entry.Kind.SymLink, std.fs.Dir.Entry.Kind.File => {
+ std.fs.IterableDir.Entry.Kind.SymLink, std.fs.IterableDir.Entry.Kind.File => {
target_buf_remain = prev_target_buf_remain;
std.mem.copy(u8, target_buf_remain, entry.name);
target_buf_remain = target_buf_remain[entry.name.len..];
diff --git a/src/install/install.zig b/src/install/install.zig
index 8d9701611..bdf16faa9 100644
--- a/src/install/install.zig
+++ b/src/install/install.zig
@@ -889,10 +889,10 @@ const PackageInstall = struct {
fn installWithClonefileEachDir(this: *PackageInstall) !Result {
const Walker = @import("../walker_skippable.zig");
- var cached_package_dir = this.cache_dir.openDirZ(this.cache_dir_subpath, .{}, true) catch |err| return Result{
+ var cached_package_dir = bun.openIterableDirZFromDir(this.cache_dir, this.cache_dir_subpath) catch |err| return Result{
.fail = .{ .err = err, .step = .opening_cache_dir },
};
- defer cached_package_dir.close();
+ defer cached_package_dir.dir.close();
var walker_ = Walker.walk(
cached_package_dir,
this.allocator,
@@ -921,7 +921,7 @@ const PackageInstall = struct {
var path: [:0]u8 = stackpath[0..entry.path.len :0];
var basename: [:0]u8 = stackpath[entry.path.len - entry.basename.len .. entry.path.len :0];
switch (C.clonefileat(
- entry.dir.fd,
+ entry.dir.dir.fd,
basename,
destination_dir_.fd,
path,
@@ -1003,7 +1003,7 @@ const PackageInstall = struct {
const Walker = @import("../walker_skippable.zig");
const CopyFile = @import("../copy_file.zig");
- var cached_package_dir = this.cache_dir.openDirZ(this.cache_dir_subpath, .{}, true) catch |err| return Result{
+ var cached_package_dir = bun.openIterableDirZFromDir(this.cache_dir, this.cache_dir_subpath) catch |err| return Result{
.fail = .{ .err = err, .step = .opening_cache_dir },
};
defer cached_package_dir.close();
@@ -1043,14 +1043,14 @@ const PackageInstall = struct {
};
defer outfile.close();
- var infile = try entry.dir.openFile(entry.basename, .{ .mode = .read_only });
+ var infile = try entry.dir.dir.openFile(entry.basename, .{ .mode = .read_only });
defer infile.close();
const stat = infile.stat() catch continue;
_ = C.fchmod(outfile.handle, stat.mode);
CopyFile.copy(infile.handle, outfile.handle) catch {
- entry.dir.copyFile(entry.basename, destination_dir_, entry.path, .{}) catch |err| {
+ entry.dir.dir.copyFile(entry.basename, destination_dir_, entry.path, .{}) catch |err| {
progress_.root.end();
progress_.refresh();
@@ -1083,7 +1083,7 @@ const PackageInstall = struct {
fn installWithHardlink(this: *PackageInstall) !Result {
const Walker = @import("../walker_skippable.zig");
- var cached_package_dir = this.cache_dir.openDirZ(this.cache_dir_subpath, .{}, true) catch |err| return Result{
+ var cached_package_dir = bun.openIterableDirZFromDir(this.cache_dir, this.cache_dir_subpath) catch |err| return Result{
.fail = .{ .err = err, .step = .opening_cache_dir },
};
defer cached_package_dir.close();
@@ -1109,7 +1109,7 @@ const PackageInstall = struct {
std.os.mkdirat(destination_dir_.fd, entry.path, 0o755) catch {};
},
.File => {
- try std.os.linkat(entry.dir.fd, entry.basename, destination_dir_.fd, entry.path, 0);
+ try std.os.linkat(entry.dir.dir.fd, entry.basename, destination_dir_.fd, entry.path, 0);
real_file_count += 1;
},
else => {},
@@ -1144,7 +1144,7 @@ const PackageInstall = struct {
fn installWithSymlink(this: *PackageInstall) !Result {
const Walker = @import("../walker_skippable.zig");
- var cached_package_dir = this.cache_dir.openDirZ(this.cache_dir_subpath, .{}, true) catch |err| return Result{
+ var cached_package_dir = bun.openIterableDirZFromDir(this.cache_dir, this.cache_dir_subpath) catch |err| return Result{
.fail = .{ .err = err, .step = .opening_cache_dir },
};
defer cached_package_dir.close();
@@ -1221,7 +1221,7 @@ const PackageInstall = struct {
this.file_count = FileCopier.copy(
subdir.fd,
- cached_package_dir.fd,
+ cached_package_dir.dir.fd,
&walker_,
) catch |err|
return Result{
@@ -1868,7 +1868,7 @@ pub const PackageManager = struct {
var end: []u8 = undefined;
if (scope.url.hostname.len > 32 or available.len < 64) {
const visible_hostname = scope.url.hostname[0..@min(scope.url.hostname.len, 12)];
- end = std.fmt.bufPrint(available, "@@{s}__{x}", .{ visible_hostname, String.Builder.stringHash(scope.url.href) }) catch unreachable;
+ end = std.fmt.bufPrint(available, "@@{s}__{any}", .{ visible_hostname, bun.fmt.x(String.Builder.stringHash(scope.url.href)) }) catch unreachable;
} else {
end = std.fmt.bufPrint(available, "@@{s}", .{scope.url.hostname}) catch unreachable;
}
@@ -1893,14 +1893,14 @@ pub const PackageManager = struct {
} else if (version.tag.hasPre() and version.tag.hasBuild()) {
return std.fmt.bufPrintZ(
buf,
- "{s}@{d}.{d}.{d}-{x}+{X}",
- .{ name, version.major, version.minor, version.patch, version.tag.pre.hash, version.tag.build.hash },
+ "{s}@{d}.{d}.{d}-{any}+{X}",
+ .{ name, version.major, version.minor, version.patch, version.tag.pre.hash, bun.fmt.x(version.tag.build.hash) },
) catch unreachable;
} else if (version.tag.hasPre()) {
return std.fmt.bufPrintZ(
buf,
- "{s}@{d}.{d}.{d}-{x}",
- .{ name, version.major, version.minor, version.patch, version.tag.pre.hash },
+ "{s}@{d}.{d}.{d}-{any}",
+ .{ name, version.major, version.minor, version.patch, bun.fmt.x(version.tag.pre.hash) },
) catch unreachable;
} else if (version.tag.hasBuild()) {
return std.fmt.bufPrintZ(
@@ -5464,10 +5464,10 @@ pub const PackageManager = struct {
if (cwd.openDirZ(manager.options.bin_path, .{}, true)) |node_modules_bin_| {
var node_modules_bin: std.fs.Dir = node_modules_bin_;
const iterable_dir = std.fs.IterableDir{ .dir = .{ .fd = node_modules_bin.fd } };
- var iter: std.fs.Dir.Iterator = iterable_dir.iterate();
+ var iter: std.fs.IterableDir.Iterator = iterable_dir.iterate();
iterator: while (iter.next() catch null) |entry| {
switch (entry.kind) {
- std.fs.Dir.Entry.Kind.SymLink => {
+ std.fs.IterableDir.Entry.Kind.SymLink => {
// any symlinks which we are unable to open are assumed to be dangling
// note that using access won't work here, because access doesn't resolve symlinks
@@ -6684,7 +6684,7 @@ pub const PackageManager = struct {
// bun install may have installed new bins, so we need to update the PATH
// this can happen if node_modules/.bin didn't previously exist
// note: it is harmless to have the same directory in the PATH multiple times
- const current_path = manager.env.map.get("PATH");
+ const current_path = manager.env.map.get("PATH") orelse "/";
// TODO: windows
const cwd_without_trailing_slash = if (Fs.FileSystem.instance.top_level_dir.len > 1 and Fs.FileSystem.instance.top_level_dir[Fs.FileSystem.instance.top_level_dir.len - 1] == '/')
@@ -6696,7 +6696,7 @@ pub const PackageManager = struct {
ctx.allocator,
"{s}:{s}/node_modules/.bin",
.{
- current_path,
+ current_path ,
cwd_without_trailing_slash,
},
));
diff --git a/src/install/npm.zig b/src/install/npm.zig
index 112580c4c..ef45f956b 100644
--- a/src/install/npm.zig
+++ b/src/install/npm.zig
@@ -31,6 +31,7 @@ const ObjectPool = @import("../pool.zig").ObjectPool;
const Api = @import("../api/schema.zig").Api;
const DotEnv = @import("../env_loader.zig");
const ComptimeStringMap = @import("../comptime_string_map.zig").ComptimeStringMap;
+const bun = @import("../global.zig");
const Npm = @This();
@@ -556,18 +557,18 @@ pub const PackageManifest = struct {
var out_path_buf: ["-18446744073709551615".len + ".npm".len + 1]u8 = undefined;
var dest_path_stream = std.io.fixedBufferStream(&dest_path_buf);
var dest_path_stream_writer = dest_path_stream.writer();
- try dest_path_stream_writer.print("{x}.npm-{x}", .{ file_id, @max(std.time.milliTimestamp(), 0) });
+ try dest_path_stream_writer.print("{any}.npm-{any}", .{ bun.fmt.x(file_id), bun.fmt.x(@max(std.time.milliTimestamp(), 0)) });
try dest_path_stream_writer.writeByte(0);
var tmp_path: [:0]u8 = dest_path_buf[0 .. dest_path_stream.pos - 1 :0];
try writeFile(this, tmp_path, tmpdir);
- var out_path = std.fmt.bufPrintZ(&out_path_buf, "{x}.npm", .{file_id}) catch unreachable;
+ var out_path = std.fmt.bufPrintZ(&out_path_buf, "{any}.npm", .{bun.fmt.x(file_id)}) catch unreachable;
try std.os.renameatZ(tmpdir.fd, tmp_path, cache_dir.fd, out_path);
}
pub fn load(allocator: std.mem.Allocator, cache_dir: std.fs.Dir, package_name: string) !?PackageManifest {
const file_id = std.hash.Wyhash.hash(0, package_name);
var file_path_buf: [512 + 64]u8 = undefined;
- var file_path = try std.fmt.bufPrintZ(&file_path_buf, "{x}.npm", .{file_id});
+ var file_path = try std.fmt.bufPrintZ(&file_path_buf, "{any}.npm", .{bun.fmt.x(file_id)});
var cache_file = cache_dir.openFileZ(
file_path,
.{ .mode = .read_only },