aboutsummaryrefslogtreecommitdiff
path: root/src/install/install.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-11-15 02:19:36 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-16 19:18:51 -0800
commitb5fd121f262d0dbeb14ce97487b5b299f1e62774 (patch)
treeefc4c7c81ef11b4eae0563948b09fee457a51d54 /src/install/install.zig
parentc292ea7b94785c0d08e90dd918352cecb4a18498 (diff)
downloadbun-b5fd121f262d0dbeb14ce97487b5b299f1e62774.tar.gz
bun-b5fd121f262d0dbeb14ce97487b5b299f1e62774.tar.zst
bun-b5fd121f262d0dbeb14ce97487b5b299f1e62774.zip
[bun install] WIP
Diffstat (limited to '')
-rw-r--r--src/install/install.zig29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/install/install.zig b/src/install/install.zig
index 31332c8f9..7b7a804ee 100644
--- a/src/install/install.zig
+++ b/src/install/install.zig
@@ -1753,7 +1753,6 @@ pub const PackageManager = struct {
resolved_package_index: PackageIndex = PackageIndex{},
task_queue: TaskDependencyQueue = TaskDependencyQueue{},
- progress: *std.Progress,
const PackageIndex = std.AutoHashMapUnmanaged(u64, *Package);
const PackageManifestMap = std.HashMapUnmanaged(u32, Npm.PackageManifest, IdentityContext, 80);
@@ -2175,6 +2174,8 @@ pub const PackageManager = struct {
Output.flush();
}
+ // var progress = std.Progress{};
+ // var node = progress.start(name: []const u8, estimated_total_items: usize)
manager = PackageManager{
.enable_cache = enable_cache,
.cache_directory_path = cache_directory_path,
@@ -2186,6 +2187,7 @@ pub const PackageManager = struct {
.root_package = root,
.thread_pool = ThreadPool.init(.{}),
.resolve_tasks = TaskChannel{},
+ // .progress
};
package_list.allocator = ctx.allocator;
@@ -2197,11 +2199,18 @@ pub const PackageManager = struct {
.is_main = true,
},
);
-
+ var total_count = count;
+ var extracted_count: usize = 0;
while (count > 0) : (count = @maximum(count, 1) - 1) {
- while (manager.resolve_tasks.tryReadItem() catch null) |task| {
+ while (manager.resolve_tasks.tryReadItem() catch null) |task_| {
+ var task: *Task = task_;
switch (task.tag) {
.package_manifest => {
+ if (task.status == .fail) {
+ Output.prettyErrorln("Failed to download package manifest for {s}", .{task.request.package_manifest});
+ Output.flush();
+ continue;
+ }
const manifest = task.data.package_manifest;
var entry = try manager.manifests.getOrPutValue(ctx.allocator, @truncate(u32, manifest.name.hash), manifest);
const dependency_list = manager.task_queue.get(task.id).?;
@@ -2210,13 +2219,27 @@ pub const PackageManager = struct {
var dependency: *Dependency = TaskCallbackContext.get(item, Dependency).?;
if (try manager.enqueueDependency(dependency, dependency.required)) |new_task| {
count += 1;
+ total_count += 1;
}
}
},
+ .tarball_download => {
+ if (task.status == .fail) {
+ Output.prettyErrorln("Failed to download package manifest for {s}", .{task.request.package_manifest});
+ Output.flush();
+ continue;
+ }
+ extracted_count += 1;
+ task.request.tarball_download.package.preinstall_state = Package.PreinstallState.done;
+ },
}
}
}
+ if (verbose_install) {
+ Output.prettyErrorln("Preinstall complete.\n Extracted: {d} Tasks: {d}", .{ extracted_count, total_count });
+ }
+
try manager.installDependencies();
}
};