diff options
author | 2023-10-10 21:13:42 -0700 | |
---|---|---|
committer | 2023-10-10 21:13:42 -0700 | |
commit | 39446ebdb8044f00c4e1e2d83a20842a8f839f1c (patch) | |
tree | 6741a90fffb72767ba022031ff61a678f416b791 /src | |
parent | c2c3b0d4a9004ffbf8a86ac362b432a5d858dd0e (diff) | |
download | bun-39446ebdb8044f00c4e1e2d83a20842a8f839f1c.tar.gz bun-39446ebdb8044f00c4e1e2d83a20842a8f839f1c.tar.zst bun-39446ebdb8044f00c4e1e2d83a20842a8f839f1c.zip |
Fix lifecycle scripts not running on reinstallation (#6376)
* Include trusted dependencies in lockfile
* Add a remote dependency to lifecycle script test
Diffstat (limited to 'src')
-rw-r--r-- | src/install/lockfile.zig | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/install/lockfile.zig b/src/install/lockfile.zig index dc0a64475..165a7159c 100644 --- a/src/install/lockfile.zig +++ b/src/install/lockfile.zig @@ -4221,6 +4221,7 @@ pub const Serializer = struct { const header_bytes: string = "#!/usr/bin/env bun\n" ++ version; const has_workspace_package_ids_tag: u64 = @bitCast([_]u8{ 'w', 'O', 'r', 'K', 's', 'P', 'a', 'C' }); + const has_trusted_dependencies_tag: u64 = @bitCast([_]u8{ 't', 'R', 'u', 'S', 't', 'E', 'D', 'd' }); pub fn save(this: *Lockfile, comptime StreamType: type, stream: StreamType) !void { var old_package_list = this.packages; @@ -4282,6 +4283,19 @@ pub const Serializer = struct { ); } + if (this.trusted_dependencies.count() > 0) { + try writer.writeAll(std.mem.asBytes(&has_trusted_dependencies_tag)); + + try Lockfile.Buffers.writeArray( + StreamType, + stream, + @TypeOf(&writer), + &writer, + []u32, + this.trusted_dependencies.keys(), + ); + } + const end = try stream.getPos(); try writer.writeAll(&alignment_bytes_to_repeat_buffer); @@ -4393,6 +4407,30 @@ pub const Serializer = struct { } } + { + const remaining_in_buffer = total_buffer_size -| stream.pos; + + if (remaining_in_buffer > 8 and total_buffer_size <= stream.buffer.len) { + const next_num = try reader.readIntLittle(u64); + if (next_num == has_trusted_dependencies_tag) { + var trusted_dependencies_hashes = try Lockfile.Buffers.readArray( + stream, + allocator, + std.ArrayListUnmanaged(u32), + ); + defer trusted_dependencies_hashes.deinit(allocator); + + try lockfile.trusted_dependencies.ensureTotalCapacity(allocator, trusted_dependencies_hashes.items.len); + + lockfile.trusted_dependencies.entries.len = trusted_dependencies_hashes.items.len; + @memcpy(lockfile.trusted_dependencies.keys(), trusted_dependencies_hashes.items); + try lockfile.trusted_dependencies.reIndex(allocator); + } else { + stream.pos -= 8; + } + } + } + lockfile.scratch = Lockfile.Scratch.init(allocator); lockfile.package_index = PackageIndex.Map.initContext(allocator, .{}); lockfile.string_pool = StringPool.initContext(allocator, .{}); |