diff options
author | 2022-02-25 00:28:25 -0800 | |
---|---|---|
committer | 2022-02-25 00:48:36 -0800 | |
commit | 293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f (patch) | |
tree | 52cd823205ca899e27e91480365bba82c5f6b871 /src/install/install.zig | |
parent | b8c6865ce0a0385982e51de5614689b43f265562 (diff) | |
download | bun-293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f.tar.gz bun-293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f.tar.zst bun-293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f.zip |
[bun install] Add metadata hash
Diffstat (limited to 'src/install/install.zig')
-rw-r--r-- | src/install/install.zig | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/install/install.zig b/src/install/install.zig index 68bd071fc..371a2948d 100644 --- a/src/install/install.zig +++ b/src/install/install.zig @@ -2925,6 +2925,7 @@ pub const PackageManager = struct { load_lockfile: bool = true, install_packages: bool = true, save_yarn_lock: bool = false, + print_meta_hash_string: bool = false, }; pub const Enable = struct { @@ -4817,7 +4818,7 @@ pub const PackageManager = struct { NetworkThread.global.pool.sleep_on_idle_network_thread = true; const needs_clean_lockfile = had_any_diffs or needs_new_lockfile or manager.package_json_updates.len > 0; - + var did_meta_hash_change = needs_clean_lockfile; if (needs_clean_lockfile) { manager.lockfile = try manager.lockfile.clean(manager.package_json_updates); } @@ -4833,6 +4834,12 @@ pub const PackageManager = struct { manager.lockfile.verifyResolutions(manager.options.local_package_features, manager.options.remote_package_features, log_level); } + if (needs_clean_lockfile or manager.options.enable.force_save_lockfile) { + did_meta_hash_change = try manager.lockfile.hasMetaHashChanged( + PackageManager.verbose_install or manager.options.do.print_meta_hash_string, + ); + } + if (manager.options.global) { try manager.setupGlobalDir(&ctx); } @@ -4843,7 +4850,7 @@ pub const PackageManager = struct { // 2. There is a determinism issue in the file where alignment bytes might be garbage data // This is a bug that needs to be fixed, however we can work around it for now // by avoiding saving the lockfile - if (manager.options.do.save_lockfile and (needs_clean_lockfile or + if (manager.options.do.save_lockfile and (did_meta_hash_change or manager.lockfile.isEmpty() or manager.options.enable.force_save_lockfile)) { @@ -4930,6 +4937,12 @@ pub const PackageManager = struct { try Lockfile.Printer.Tree.print(&printer, Output.WriterType, Output.writer(), false); } + if (!did_meta_hash_change) { + manager.summary.remove = 0; + manager.summary.add = 0; + manager.summary.update = 0; + } + var printed_timestamp = false; if (install_summary.success > 0) { // it's confusing when it shows 3 packages and says it installed 1 |