diff options
author | 2023-08-31 03:35:28 +0300 | |
---|---|---|
committer | 2023-08-30 17:35:28 -0700 | |
commit | 037463fc48a96cfdacb647ba44e021abd5e4769e (patch) | |
tree | 2c8f39f90e7ecb9c013981f26a494033a24b27c0 /src | |
parent | 04215e2f3a8c11d9e2b5f336eee40e6f7ebf11c9 (diff) | |
download | bun-037463fc48a96cfdacb647ba44e021abd5e4769e.tar.gz bun-037463fc48a96cfdacb647ba44e021abd5e4769e.tar.zst bun-037463fc48a96cfdacb647ba44e021abd5e4769e.zip |
[install] fix stale root life-cycle script in lockfile (#4411)
fixes #4319
Diffstat (limited to 'src')
-rw-r--r-- | src/install/install.zig | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/install/install.zig b/src/install/install.zig index ee23fa427..768113d35 100644 --- a/src/install/install.zig +++ b/src/install/install.zig @@ -7524,13 +7524,6 @@ pub const PackageManager = struct { package_json_source, Features.main, ); - if (!root.scripts.filled) { - maybe_root.scripts.enqueue( - manager.lockfile, - lockfile.buffers.string_bytes.items, - strings.withoutTrailingSlash(Fs.FileSystem.instance.top_level_dir), - ); - } var mapping = try manager.lockfile.allocator.alloc(PackageID, maybe_root.dependencies.len); @memset(mapping, invalid_package_id); @@ -7565,6 +7558,8 @@ pub const PackageManager = struct { new_dep.count(lockfile.buffers.string_bytes.items, *Lockfile.StringBuilder, builder); } + maybe_root.scripts.count(lockfile.buffers.string_bytes.items, *Lockfile.StringBuilder, builder); + const off = @as(u32, @truncate(manager.lockfile.buffers.dependencies.items.len)); const len = @as(u32, @truncate(new_dependencies.len)); var packages = manager.lockfile.packages.slice(); @@ -7598,6 +7593,12 @@ pub const PackageManager = struct { } } + manager.lockfile.packages.items(.scripts)[0] = maybe_root.scripts.clone( + lockfile.buffers.string_bytes.items, + *Lockfile.StringBuilder, + builder, + ); + builder.clamp(); // Split this into two passes because the below may allocate memory or invalidate pointers @@ -7619,6 +7620,16 @@ pub const PackageManager = struct { } } } + + if (manager.summary.update > 0) root.scripts = .{}; + } + + if (!root.scripts.filled) { + maybe_root.scripts.enqueue( + manager.lockfile, + lockfile.buffers.string_bytes.items, + strings.withoutTrailingSlash(Fs.FileSystem.instance.top_level_dir), + ); } } }, |