authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-04-19 16:17:34-07:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-04-21 21:00:52+02:00
log7056ba9a5c750305726be862a51ff18e2318c138
tree9d6c12d285e2626ece4cd1778b5d537f0bc21f3c
parent92517c04c7ab0f87b60ed3b9a8c3e544674678fa
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

Fetch: Fix zip fetching when cache directory doesn't have tmp dir

Fixes #31964

1 files changed, 14 insertions(+), 2 deletions(-)

src/Package/Fetch.zig+14-2
...@@ -1513,7 +1513,19 @@ fn unzip(...@@ -1513,7 +1513,19 @@ fn unzip(
1513 .read = true,1513 .read = true,
1514 }) catch |err| switch (err) {1514 }) catch |err| switch (err) {
1515 error.PathAlreadyExists => continue,1515 error.PathAlreadyExists => continue,
1516 error.Canceled => return error.Canceled,1516 error.FileNotFound => {
1517 cache_root.handle.createDir(io, prefix, .default_dir) catch |dir_err| switch (dir_err) {
1518 error.Canceled => |e| return e,
1519 // error.PathAlreadyExists is considered a failure here because
1520 // it implies that the prefix is not a directory.
1521 else => |e| return f.fail(
1522 f.location_tok,
1523 try eb.printString("failed to create temporary directory: {t}", .{e}),
1524 ),
1525 };
1526 continue;
1527 },
1528 error.Canceled => |e| return e,
1517 else => |e| return f.fail(1529 else => |e| return f.fail(
1518 f.location_tok,1530 f.location_tok,
1519 try eb.printString("failed to create temporary zip file: {t}", .{e}),1531 try eb.printString("failed to create temporary zip file: {t}", .{e}),
...@@ -1526,7 +1538,7 @@ fn unzip(...@@ -1526,7 +1538,7 @@ fn unzip(
1526 var zip_file_writer = zip_file.writer(io, &zip_file_buffer);1538 var zip_file_writer = zip_file.writer(io, &zip_file_buffer);
15271539
1528 _ = reader.streamRemaining(&zip_file_writer.interface) catch |err| switch (err) {1540 _ = reader.streamRemaining(&zip_file_writer.interface) catch |err| switch (err) {
1529 error.ReadFailed => return error.ReadFailed,1541 error.ReadFailed => |e| return e,
1530 error.WriteFailed => return f.fail(1542 error.WriteFailed => return f.fail(
1531 f.location_tok,1543 f.location_tok,
1532 try eb.printString("failed writing temporary zip file: {t}", .{err}),1544 try eb.printString("failed writing temporary zip file: {t}", .{err}),