diff options
author | 2022-11-15 17:52:04 -0800 | |
---|---|---|
committer | 2022-11-15 17:52:04 -0800 | |
commit | 934360646fd063a84c6527eea059dc40ae0050bb (patch) | |
tree | 41d17932e07fd3230ab924b102079d84ee0403e3 /src/install | |
parent | 98df9d7703708cc7351563b9500d6a337003c3eb (diff) | |
download | bun-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.zig | 27 | ||||
-rw-r--r-- | src/install/install.zig | 38 | ||||
-rw-r--r-- | src/install/npm.zig | 7 |
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 }, |