Skip to content

Commit 5dadbab

Browse files
committed
fix: stabilize macOS 26.1 xnu build
- let build.sh prefer versioned patches with fallback and feed hw overrides into installhdrs - make coreentitlements setup honor KDKROOT and 26.1/26.0 KDKs - drop bash process substitution around dsymutil to avoid /dev/fd EPERM - simplify sanitizer lipo step to prevent _SC_ARG_MAX failures
1 parent 9cfda12 commit 5dadbab

4 files changed

Lines changed: 52 additions & 8 deletions

File tree

build.sh

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,10 @@ patches() {
414414
PATCH_DIR="${WORK_DIR}/patches/15.0"
415415
;;
416416
'26.'*)
417-
PATCH_DIR="${WORK_DIR}/patches/26.0"
417+
PATCH_DIR="${WORK_DIR}/patches/${MACOS_VERSION}"
418+
if [ ! -d "${PATCH_DIR}" ]; then
419+
PATCH_DIR="${WORK_DIR}/patches/26.0"
420+
fi
418421
;;
419422
*)
420423
error "Invalid xnu version"
@@ -456,7 +459,8 @@ build_bootstrap_cmds() {
456459
CLONED_BOOTSTRAP_VERSION=$(cd "${WORK_DIR}/bootstrap_cmds"; git describe --always 2>/dev/null)
457460

458461
cd "${SRCROOT}"
459-
xcodebuild install -sdk macosx -project mig.xcodeproj ARCHS="arm64 x86_64" CODE_SIGN_IDENTITY="-" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" RC_ProjectNameAndSourceVersion="${CLONED_BOOTSTRAP_VERSION}"
462+
env LD="$(xcrun -find clang)" LDPLUSPLUS="$(xcrun -find clang++)" \
463+
xcodebuild install -sdk macosx -project mig.xcodeproj ARCHS="arm64 x86_64" CODE_SIGN_IDENTITY="-" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" RC_ProjectNameAndSourceVersion="${CLONED_BOOTSTRAP_VERSION}"
460464
cd "${WORK_DIR}"
461465
fi
462466
}
@@ -472,7 +476,8 @@ build_dtrace() {
472476
OBJROOT="${BUILD_DIR}/dtrace.obj"
473477
SYMROOT="${BUILD_DIR}/dtrace.sym"
474478
cd "${SRCROOT}"
475-
xcodebuild install -sdk macosx -target ctfconvert -target ctfdump -target ctfmerge ARCHS="arm64 x86_64" CODE_SIGN_IDENTITY="-" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}"
479+
env LD="$(xcrun -find clang)" LDPLUSPLUS="$(xcrun -find clang++)" \
480+
xcodebuild install -sdk macosx -target ctfconvert -target ctfdump -target ctfmerge ARCHS="arm64 x86_64" CODE_SIGN_IDENTITY="-" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}"
476481
cd "${WORK_DIR}"
477482
fi
478483
}
@@ -496,11 +501,12 @@ build_availabilityversions() {
496501
xnu_headers() {
497502
if [ ! -f "${HAVE_WE_INSTALLED_HEADERS_YET}" ]; then
498503
running "Installing xnu headers"
504+
ensure_hw_env_overrides
499505
SRCROOT="${WORK_DIR}/xnu"
500506
OBJROOT="${BUILD_DIR}/xnu-hdrs.obj"
501507
SYMROOT="${BUILD_DIR}/xnu-hdrs.sym"
502508
cd "${SRCROOT}"
503-
make installhdrs SDKROOT=macosx ARCH_CONFIGS="X86_64 ARM64" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" FAKEROOT_DIR="${FAKEROOT_DIR}" KDKROOT="${KDKROOT}" TIGHTBEAMC=${TIGHTBEAMC} RC_DARWIN_KERNEL_VERSION=${RC_DARWIN_KERNEL_VERSION}
509+
make installhdrs SDKROOT=macosx ARCH_CONFIGS="X86_64 ARM64" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" FAKEROOT_DIR="${FAKEROOT_DIR}" KDKROOT="${KDKROOT}" TIGHTBEAMC=${TIGHTBEAMC} RC_DARWIN_KERNEL_VERSION=${RC_DARWIN_KERNEL_VERSION} MEMORY_SIZE="${MEMORY_SIZE_OVERRIDE}" SYSCTL_HW_PHYSICALCPU="${PHYS_CPU_OVERRIDE}" SYSCTL_HW_LOGICALCPU="${LOGICAL_CPU_OVERRIDE}" KERNEL_BUILDS_IN_PARALLEL="${KERNEL_PARALLELISM_OVERRIDE:-1}"
504510
cd "${WORK_DIR}"
505511
touch "${HAVE_WE_INSTALLED_HEADERS_YET}"
506512
fi
@@ -518,7 +524,8 @@ libsystem_headers() {
518524
OBJROOT="${BUILD_DIR}/Libsystem.obj"
519525
SYMROOT="${BUILD_DIR}/Libsystem.sym"
520526
cd "${SRCROOT}"
521-
xcodebuild installhdrs -sdk macosx ARCHS="arm64 arm64e" VALID_ARCHS="arm64 arm64e" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" FAKEROOT_DIR="${FAKEROOT_DIR}"
527+
env LD="$(xcrun -find clang)" LDPLUSPLUS="$(xcrun -find clang++)" \
528+
xcodebuild installhdrs -sdk macosx ARCHS="arm64 arm64e" VALID_ARCHS="arm64 arm64e" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" FAKEROOT_DIR="${FAKEROOT_DIR}"
522529
cd "${WORK_DIR}"
523530
fi
524531
}
@@ -530,7 +537,8 @@ libsyscall_headers() {
530537
OBJROOT="${BUILD_DIR}/libsyscall.obj"
531538
SYMROOT="${BUILD_DIR}/libsyscall.sym"
532539
cd "${SRCROOT}"
533-
xcodebuild installhdrs -sdk macosx TARGET_CONFIGS="$KERNEL_CONFIG $ARCH_CONFIG $MACHINE_CONFIG" ARCHS="arm64 arm64e" VALID_ARCHS="arm64 arm64e" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" FAKEROOT_DIR="${FAKEROOT_DIR}"
540+
env LD="$(xcrun -find clang)" LDPLUSPLUS="$(xcrun -find clang++)" \
541+
xcodebuild installhdrs -sdk macosx TARGET_CONFIGS="$KERNEL_CONFIG $ARCH_CONFIG $MACHINE_CONFIG" ARCHS="arm64 arm64e" VALID_ARCHS="arm64 arm64e" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" FAKEROOT_DIR="${FAKEROOT_DIR}"
534542
cd "${WORK_DIR}"
535543
fi
536544
}
@@ -564,7 +572,8 @@ build_libdispatch() {
564572
sed -i '' 's|$(SDKROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders|$(FAKEROOT_DIR)/System/Library/Frameworks/Kernel.framework/PrivateHeaders|g' "${SRCROOT}/xcodeconfig/libfirehose_kernel.xcconfig"
565573
sed -i '' 's|$(SDKROOT)/usr/local/include|$(FAKEROOT_DIR)/usr/local/include|g' "${SRCROOT}/xcodeconfig/libfirehose_kernel.xcconfig"
566574
cd "${SRCROOT}"
567-
xcodebuild install -target libfirehose_kernel -sdk macosx ARCHS="x86_64 arm64e" VALID_ARCHS="x86_64 arm64e" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" FAKEROOT_DIR="${FAKEROOT_DIR}"
575+
env LD="$(xcrun -find clang)" LDPLUSPLUS="$(xcrun -find clang++)" \
576+
xcodebuild install -target libfirehose_kernel -sdk macosx ARCHS="x86_64 arm64e" VALID_ARCHS="x86_64 arm64e" OBJROOT="${OBJROOT}" SYMROOT="${SYMROOT}" DSTROOT="${DSTROOT}" FAKEROOT_DIR="${FAKEROOT_DIR}"
568577
cd "${WORK_DIR}"
569578
mv "${FAKEROOT_DIR}/usr/local/lib/kernel/liblibfirehose_kernel.a" "${FAKEROOT_DIR}/usr/local/lib/kernel/libfirehose_kernel.a"
570579
fi

patches/26.0/00_setup_coreentitlements.sh

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@
44
# This script creates the necessary directory structure and copies KDK headers
55

66
EXTERNAL_HEADERS="./EXTERNAL_HEADERS"
7-
KDK_CE_PATH="/Library/Developer/KDKs/KDK_26.0_25A353.kdk/System/Library/Frameworks/Kernel.framework/Versions/A/PrivateHeaders/platform/CoreEntitlements"
7+
# Prefer the KDKROOT provided by build.sh, falling back to the known 26.1 then 26.0 KDKs.
8+
KDKROOT_CLEAN="${KDKROOT%/}"
9+
if [ -z "${KDKROOT_CLEAN}" ]; then
10+
KDKROOT_CLEAN="/Library/Developer/KDKs/KDK_26.1_25B5062e.kdk"
11+
fi
12+
KDK_CE_PATH="${KDKROOT_CLEAN}/System/Library/Frameworks/Kernel.framework/Versions/A/PrivateHeaders/platform/CoreEntitlements"
13+
if [ ! -d "${KDK_CE_PATH}" ]; then
14+
KDK_CE_PATH="/Library/Developer/KDKs/KDK_26.0_25A353.kdk/System/Library/Frameworks/Kernel.framework/Versions/A/PrivateHeaders/platform/CoreEntitlements"
15+
fi
816

917
echo "Setting up CoreEntitlements V2 headers..."
1018

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/makedefs/MakeInc.kernel b/makedefs/MakeInc.kernel
2+
index a544e650f..a5dae38f7 100644
3+
--- a/makedefs/MakeInc.kernel
4+
+++ b/makedefs/MakeInc.kernel
5+
@@ -173,7 +173,7 @@ endif
6+
$(TARGET)/$(KERNEL_FILE_NAME).dSYM: $(TARGET)/$(KERNEL_FILE_NAME).unstripped.noctf
7+
ifeq ($(BUILD_DSYM),1)
8+
@$(LOG_DSYMUTIL) "$(@F)"
9+
- $(_v)$(BASH) -c "$(DSYMUTIL) $(DSYMUTIL_FLAGS) $< -o $@ $(_vstdout) 2> >(grep -v '^warning:.*could not find object file symbol for symbol' 1>&2)"
10+
+ $(_v)$(DSYMUTIL) $(DSYMUTIL_FLAGS) $< -o $@ $(_vstdout) $(_vstderr)
11+
$(_v)$(MV) $@/$(DSYMDWARFDIR)/$(KERNEL_FILE_NAME).unstripped.noctf $@/$(DSYMDWARFDIR)/$(KERNEL_FILE_NAME)
12+
else
13+
$(_v)$(MKDIR) $@
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
diff --git a/makedefs/MakeInc.san b/makedefs/MakeInc.san
2+
index cf37fbacb..003cb004f 100644
3+
--- a/makedefs/MakeInc.san
4+
+++ b/makedefs/MakeInc.san
5+
@@
6+
$$(SYMROOT_KEXT_$(2)): $$(addsuffix /config/$(2).symbolset, \
7+
$$(addprefix $$(OBJROOT)/,$$(foreach bc,$(3),$$(call function_convert_build_config_to_objdir,$$(bc)))))
8+
@$$(LOG_INSTALLSYM) "$$(Color0)symbolset $$(ColorF)$(2)$$(Color0) ($$(ColorLF)$$(CURRENT_KERNEL_CONFIG_LC)$$(Color0))"
9+
$$(_v)$$(MKDIR) $$(@D)
10+
- $$(_v)$$(LIPO) -create `(echo $$^ | xargs -L 1 lipo -detailed_info) | \
11+
- awk '/is architecture/ {s[$$$$6]=$$$$3} END {for (a in s) {print s[a]}}'` -output $$@ $$(_vstdout)
12+
+ $$(_v)$$(LIPO) -create $$^ -output $$@ $$(_vstdout)
13+
14+
endef

0 commit comments

Comments
 (0)