From 1264469a41e89e72635c3b60b4cd3dca17876964 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 18 Dec 2025 09:50:07 -0800 Subject: [PATCH] compiler: fix build from source on macOS --- lib/std/zig/LibCInstallation.zig | 4 ++-- lib/std/zig/system/NativePaths.zig | 13 +++++++------ src/link/MachO.zig | 6 +++--- src/main.zig | 5 ++--- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/std/zig/LibCInstallation.zig b/lib/std/zig/LibCInstallation.zig index c1fc8fccaa..83ed23be04 100644 --- a/lib/std/zig/LibCInstallation.zig +++ b/lib/std/zig/LibCInstallation.zig @@ -177,9 +177,9 @@ pub fn findNative(gpa: Allocator, io: Io, args: FindNativeOptions) FindError!Lib var self: LibCInstallation = .{}; if (is_darwin and args.target.os.tag.isDarwin()) { - if (!std.zig.system.darwin.isSdkInstalled(gpa)) + if (!std.zig.system.darwin.isSdkInstalled(gpa, io)) return error.DarwinSdkNotFound; - const sdk = std.zig.system.darwin.getSdk(gpa, args.target) orelse + const sdk = std.zig.system.darwin.getSdk(gpa, io, args.target) orelse return error.DarwinSdkNotFound; defer gpa.free(sdk); diff --git a/lib/std/zig/system/NativePaths.zig b/lib/std/zig/system/NativePaths.zig index eea12ee272..bf66f912ae 100644 --- a/lib/std/zig/system/NativePaths.zig +++ b/lib/std/zig/system/NativePaths.zig @@ -1,11 +1,12 @@ -const std = @import("../../std.zig"); +const NativePaths = @This(); const builtin = @import("builtin"); + +const std = @import("../../std.zig"); +const Io = std.Io; const Allocator = std.mem.Allocator; const process = std.process; const mem = std.mem; -const NativePaths = @This(); - arena: Allocator, include_dirs: std.ArrayList([]const u8) = .empty, lib_dirs: std.ArrayList([]const u8) = .empty, @@ -13,7 +14,7 @@ framework_dirs: std.ArrayList([]const u8) = .empty, rpaths: std.ArrayList([]const u8) = .empty, warnings: std.ArrayList([]const u8) = .empty, -pub fn detect(arena: Allocator, native_target: *const std.Target) !NativePaths { +pub fn detect(arena: Allocator, io: Io, native_target: *const std.Target) !NativePaths { var self: NativePaths = .{ .arena = arena }; var is_nix = false; if (process.getEnvVarOwned(arena, "NIX_CFLAGS_COMPILE")) |nix_cflags_compile| { @@ -115,8 +116,8 @@ pub fn detect(arena: Allocator, native_target: *const std.Target) !NativePaths { // TODO: consider also adding macports paths if (builtin.target.os.tag.isDarwin()) { - if (std.zig.system.darwin.isSdkInstalled(arena)) sdk: { - const sdk = std.zig.system.darwin.getSdk(arena, native_target) orelse break :sdk; + if (std.zig.system.darwin.isSdkInstalled(arena, io)) sdk: { + const sdk = std.zig.system.darwin.getSdk(arena, io, native_target) orelse break :sdk; try self.addLibDir(try std.fs.path.join(arena, &.{ sdk, "usr/lib" })); try self.addFrameworkDir(try std.fs.path.join(arena, &.{ sdk, "System/Library/Frameworks" })); try self.addIncludeDir(try std.fs.path.join(arena, &.{ sdk, "usr/include" })); diff --git a/src/link/MachO.zig b/src/link/MachO.zig index b3c62db2df..513c857dbf 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -617,7 +617,7 @@ pub fn flush( else => |e| return diags.fail("failed to write code signature: {s}", .{@errorName(e)}), }; const emit = self.base.emit; - invalidateKernelCache(emit.root_dir.handle, emit.sub_path) catch |err| switch (err) { + invalidateKernelCache(io, emit.root_dir.handle, emit.sub_path) catch |err| switch (err) { else => |e| return diags.fail("failed to invalidate kernel cache: {t}", .{e}), }; } @@ -3621,11 +3621,11 @@ pub fn getTarget(self: *const MachO) *const std.Target { /// into a new inode, remove the original file, and rename the copy to match /// the original file. This is super messy, but there doesn't seem any other /// way to please the XNU. -pub fn invalidateKernelCache(dir: Io.Dir, sub_path: []const u8) !void { +pub fn invalidateKernelCache(io: Io, dir: Io.Dir, sub_path: []const u8) !void { const tracy = trace(@src()); defer tracy.end(); if (builtin.target.os.tag.isDarwin() and builtin.target.cpu.arch == .aarch64) { - try dir.copyFile(sub_path, dir, sub_path, .{}); + try dir.copyFile(sub_path, dir, sub_path, io, .{}); } } diff --git a/src/main.zig b/src/main.zig index 8e30febb81..fb2a8cfe0f 100644 --- a/src/main.zig +++ b/src/main.zig @@ -3985,9 +3985,8 @@ fn createModule( resolved_target.is_native_os and resolved_target.is_native_abi and create_module.want_native_include_dirs) { - var paths = std.zig.system.NativePaths.detect(arena, target) catch |err| { - fatal("unable to detect native system paths: {s}", .{@errorName(err)}); - }; + var paths = std.zig.system.NativePaths.detect(arena, io, target) catch |err| + fatal("unable to detect native system paths: {t}", .{err}); for (paths.warnings.items) |warning| { warn("{s}", .{warning}); }