aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Arden Sinclair <general@ardensinclair.com> 2023-10-10 21:13:42 -0700
committerGravatar GitHub <noreply@github.com> 2023-10-10 21:13:42 -0700
commit39446ebdb8044f00c4e1e2d83a20842a8f839f1c (patch)
tree6741a90fffb72767ba022031ff61a678f416b791 /src
parentc2c3b0d4a9004ffbf8a86ac362b432a5d858dd0e (diff)
downloadbun-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.zig38
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, .{});