patchsets: Expand PatchType class to support merging

Resolves hardcoded merge/overwrite assumptions in files.py’s install_new_file()
This commit is contained in:
Mykola Grymalyuk
2024-09-06 08:04:06 -06:00
parent 5a1fa12e5b
commit 7539d175b5
41 changed files with 137 additions and 110 deletions

View File

@@ -132,7 +132,7 @@ class PatcherValidation:
if install_type not in PatchType:
raise Exception(f"Unknown PatchType: {install_type}")
for install_type in [PatchType.INSTALL_SYSTEM_VOLUME, PatchType.INSTALL_DATA_VOLUME]:
for install_type in [PatchType.OVERWRITE_SYSTEM_VOLUME, PatchType.OVERWRITE_DATA_VOLUME, PatchType.MERGE_SYSTEM_VOLUME, PatchType.MERGE_DATA_VOLUME]:
if install_type in patchset[patch_core]:
for install_directory in patchset[patch_core][install_type]:
for install_file in patchset[patch_core][install_type][install_directory]:

View File

@@ -128,7 +128,7 @@ class KernelCacheSupport:
for key in oclp_plist_data:
if isinstance(oclp_plist_data[key], (bool, int)):
continue
for install_type in [PatchType.INSTALL_SYSTEM_VOLUME, PatchType.INSTALL_DATA_VOLUME]:
for install_type in [PatchType.OVERWRITE_SYSTEM_VOLUME, PatchType.OVERWRITE_DATA_VOLUME, PatchType.MERGE_SYSTEM_VOLUME, PatchType.MERGE_DATA_VOLUME]:
if install_type not in oclp_plist_data[key]:
continue
for location in oclp_plist_data[key][install_type]:

View File

@@ -9,11 +9,13 @@ class PatchType(StrEnum):
"""
Type of patch
"""
INSTALL_SYSTEM_VOLUME = "Install System Volume"
INSTALL_DATA_VOLUME = "Install Data Volume"
REMOVE_SYSTEM_VOLUME = "Remove System Volume"
REMOVE_DATA_VOLUME = "Remove Data Volume"
EXECUTE = "Execute"
OVERWRITE_SYSTEM_VOLUME = "Overwrite System Volume"
OVERWRITE_DATA_VOLUME = "Overwrite Data Volume"
MERGE_SYSTEM_VOLUME = "Merge System Volume"
MERGE_DATA_VOLUME = "Merge Data Volume"
REMOVE_SYSTEM_VOLUME = "Remove System Volume"
REMOVE_DATA_VOLUME = "Remove Data Volume"
EXECUTE = "Execute"
class DynamicPatchset(StrEnum):

View File

@@ -456,7 +456,8 @@ class HardwarePatchsetDetection:
continue
present_hardware.append(item)
present_hardware = self._strip_incompatible_hardware(present_hardware)
if self._validation is False:
present_hardware = self._strip_incompatible_hardware(present_hardware)
# Second pass to gather all properties
for item in present_hardware:
@@ -479,10 +480,11 @@ class HardwarePatchsetDetection:
patches.update(item.patches())
if requires_metallib_support_pkg is True:
missing_metallib_support_pkg = not self._is_cached_metallib_support_pkg_present()
if requires_kernel_debug_kit is True:
missing_kernel_debug_kit = not self._is_cached_kernel_debug_kit_present()
if self._validation is False:
if requires_metallib_support_pkg is True:
missing_metallib_support_pkg = not self._is_cached_metallib_support_pkg_present()
if requires_kernel_debug_kit is True:
missing_kernel_debug_kit = not self._is_cached_kernel_debug_kit_present()
requires_network_connection = missing_metallib_support_pkg or missing_kernel_debug_kit
@@ -507,10 +509,11 @@ class HardwarePatchsetDetection:
_cant_patch = False
_cant_unpatch = requirements[HardwarePatchsetValidation.SIP_ENABLED]
if requirements[HardwarePatchsetValidation.SIP_ENABLED] is True:
requirements = self._handle_sip_breakdown(requirements, required_sip_configs)
if requirements[HardwarePatchsetValidation.MISSING_NETWORK_CONNECTION] is True:
requirements, device_properties = self._handle_missing_network_connection(requirements, device_properties)
if self._validation is False:
if requirements[HardwarePatchsetValidation.SIP_ENABLED] is True:
requirements = self._handle_sip_breakdown(requirements, required_sip_configs)
if requirements[HardwarePatchsetValidation.MISSING_NETWORK_CONNECTION] is True:
requirements, device_properties = self._handle_missing_network_connection(requirements, device_properties)
_cant_patch = not self._can_patch(requirements)

View File

@@ -88,7 +88,7 @@ class AMDLegacyGCN(BaseHardware):
return {
"AMD Legacy GCN": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AMD7000Controller.kext": "12.5",
"AMD8000Controller.kext": "12.5",

View File

@@ -88,7 +88,7 @@ class AMDPolaris(BaseHardware):
return {}
return {
"AMD Polaris": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AMD9500Controller.kext": "13.5.2",
"AMD10000Controller.kext": "13.5.2",
@@ -103,7 +103,7 @@ class AMDPolaris(BaseHardware):
# Note missing framebuffers are not restored (ex. 'ATY,Berbice')
return {
"AMD Polaris": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AMDRadeonX4000.kext": self._resolve_monterey_framebuffers(),
"AMDRadeonX4000HWServices.kext": "12.5",

View File

@@ -74,7 +74,7 @@ class AMDTeraScale1(BaseHardware):
"""
return {
"AMD TeraScale 1": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AMD2400Controller.kext": "10.13.6",
"AMD2600Controller.kext": "10.13.6",

View File

@@ -75,7 +75,7 @@ class AMDTeraScale2(BaseHardware):
"""
_base = {
"AMD TeraScale 2": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AMD5000Controller.kext": "10.13.6",
"AMD6000Controller.kext": "10.13.6",
@@ -90,7 +90,7 @@ class AMDTeraScale2(BaseHardware):
# TeraScale 2 MacBooks with faulty GPUs are highly prone to crashing with AMDRadeonX3000 attached
if self._constants.allow_ts2_accel is False and self._constants.host_is_hackintosh is False:
_base["AMD TeraScale 2"][PatchType.INSTALL_SYSTEM_VOLUME]["/System/Library/Extensions"].pop("AMDRadeonX3000.kext")
_base["AMD TeraScale 2"][PatchType.OVERWRITE_SYSTEM_VOLUME]["/System/Library/Extensions"].pop("AMDRadeonX3000.kext")
return _base

View File

@@ -74,7 +74,7 @@ class AMDVega(BaseHardware):
"""
return {
"AMD Vega": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AMDRadeonX5000.kext": self._resolve_monterey_framebuffers(),
@@ -105,7 +105,7 @@ class AMDVega(BaseHardware):
return {
"AMD Vega Extended": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AMDRadeonX5000HWServices.kext": "12.5",
},

View File

@@ -65,7 +65,7 @@ class IntelBroadwell(BaseHardware):
"""
return {
"Intel Broadwell": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleIntelBDWGraphics.kext": self._resolve_monterey_framebuffers(),
"AppleIntelBDWGraphicsFramebuffer.kext": self._resolve_monterey_framebuffers(),

View File

@@ -88,7 +88,7 @@ class IntelHaswell(BaseHardware):
"""
return {
"Intel Haswell": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleIntelFramebufferAzul.kext": self._resolve_monterey_framebuffers(),
"AppleIntelHD5000Graphics.kext": self._resolve_monterey_framebuffers(),
@@ -109,7 +109,7 @@ class IntelHaswell(BaseHardware):
"""
return {
"Intel Haswell": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleIntelFramebufferAzul.kext": self._resolve_monterey_framebuffers(),
},

View File

@@ -73,7 +73,7 @@ class IntelIronLake(BaseHardware):
"""
return {
"Intel Iron Lake": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleIntelHDGraphics.kext": "10.13.6",
"AppleIntelHDGraphicsFB.kext": "10.13.6",

View File

@@ -89,7 +89,7 @@ class IntelIvyBridge(BaseHardware):
"""
return {
"Intel Ivy Bridge": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleIntelHD4000GraphicsGLDriver.bundle": "11.7.10",
"AppleIntelHD4000GraphicsMTLDriver.bundle": "11.7.10" if self._xnu_major < os_data.ventura else "11.7.10-22",

View File

@@ -76,7 +76,7 @@ class IntelSandyBridge(BaseHardware):
"""
return {
"Intel Sandy Bridge": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleIntelHD3000Graphics.kext": "10.13.6",
"AppleIntelHD3000GraphicsGA.plugin": "10.13.6",

View File

@@ -65,7 +65,7 @@ class IntelSkylake(BaseHardware):
"""
return {
"Intel Skylake": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleIntelSKLGraphics.kext": self._resolve_monterey_framebuffers(),
"AppleIntelSKLGraphicsFramebuffer.kext": self._resolve_monterey_framebuffers(),

View File

@@ -96,7 +96,7 @@ class NvidiaKepler(BaseHardware):
"""
return {
"Nvidia Kepler": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"GeForce.kext": self._resolve_kepler_geforce_framebuffers(),
"NVDAGF100Hal.kext": "12.0 Beta 6",
@@ -108,6 +108,8 @@ class NvidiaKepler(BaseHardware):
"GeForceMTLDriver.bundle": "11.0 Beta 3" if self._xnu_major <= os_data.monterey else f"11.0 Beta 3-22",
"GeForceVADriver.bundle": "12.0 Beta 6",
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
# XNU 21.6 (macOS 12.5)
**({ "Metal.framework": "12.5 Beta 2"} if (self._xnu_float >= self.macOS_12_5 and self._xnu_major < os_data.ventura) else {}),
@@ -115,7 +117,7 @@ class NvidiaKepler(BaseHardware):
"/System/Library/PrivateFrameworks": {
"GPUCompiler.framework": "11.6",
},
},
}
},
}

View File

@@ -73,7 +73,7 @@ class NvidiaTesla(BaseHardware):
"""
return {
"Nvidia Tesla": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"GeForceGA.bundle": "10.13.6",
"GeForceTesla.kext": "10.13.6",

View File

@@ -86,7 +86,7 @@ class NvidiaWebDriver(BaseHardware):
"""
return {
"Nvidia Web Drivers": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"GeForceAIRPluginWeb.bundle": "WebDriver-387.10.10.10.40.140",
"GeForceGLDriverWeb.bundle": "WebDriver-387.10.10.10.40.140",
@@ -98,12 +98,8 @@ class NvidiaWebDriver(BaseHardware):
"GeForceTeslaGLDriverWeb.bundle": "WebDriver-387.10.10.10.40.140",
"GeForceTeslaVADriverWeb.bundle": "WebDriver-387.10.10.10.40.140",
},
"/System/Library/PrivateFrameworks": {
# Restore OpenCL by adding missing compiler files
**({ "GPUCompiler.framework": "11.6"} if self._xnu_major >= os_data.monterey else {}),
},
},
PatchType.INSTALL_DATA_VOLUME: {
PatchType.OVERWRITE_DATA_VOLUME: {
"/Library/Extensions": {
"GeForceWeb.kext": "WebDriver-387.10.10.10.40.140",
"NVDAGF100HalWeb.kext": "WebDriver-387.10.10.10.40.140",
@@ -131,6 +127,12 @@ class NvidiaWebDriver(BaseHardware):
# "com.nvidia.nvroothelper.plist": "WebDriver-387.10.10.10.40.140",
# },
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/PrivateFrameworks": {
# Restore OpenCL by adding missing compiler files
**({ "GPUCompiler.framework": "11.6"} if self._xnu_major >= os_data.monterey else {}),
},
},
PatchType.REMOVE_SYSTEM_VOLUME: {
"/System/Library/Extensions": [
# Due to how late the Auxiliary cache loads, NVDAStartup will match first and then the Web Driver kexts.

View File

@@ -63,14 +63,16 @@ class DisplayBacklight(BaseHardware):
"""
if self.native_os() is True:
return {}
return {
"Legacy Backlight Control": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleBacklight.kext": "10.12.6",
"AppleBacklightExpert.kext": "10.12.6",
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/PrivateFrameworks": {
"DisplayServices.framework": "10.12.6",
},

View File

@@ -92,13 +92,13 @@ class GraphicsMultiplexer(BaseHardware):
"""
if self.native_os() is True:
return {}
if self._xnu_major not in self._constants.legacy_accel_support:
return {}
return {
"Legacy GMUX": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": {
"AppleMuxControl.kext": "10.12.6",
},

View File

@@ -67,17 +67,19 @@ class KeyboardBacklight(BaseHardware):
"""
if self.native_os() is True:
return {}
if self._xnu_major not in self._constants.legacy_accel_support:
return {}
return {
"Legacy Backlight Control": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleBacklight.kext": "10.12.6",
"AppleBacklightExpert.kext": "10.12.6",
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/PrivateFrameworks": {
"DisplayServices.framework": "10.12.6",
},

View File

@@ -90,7 +90,7 @@ class LegacyAudio(BaseHardware):
"""
return {
"Legacy Non-GOP": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleHDA.kext": "10.13.6",
},
@@ -105,7 +105,7 @@ class LegacyAudio(BaseHardware):
"""
return {
"Legacy Realtek": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AppleHDA.kext": "10.11.6",
"IOAudioFamily.kext": "10.11.6",
@@ -130,7 +130,7 @@ class LegacyAudio(BaseHardware):
"""
if self.native_os() is True:
return {}
if self._computer.real_model in ["iMac7,1", "iMac8,1"]:
return self._realtek_audio_patches()
return self._missing_gop_patches()

View File

@@ -51,10 +51,10 @@ class PCIeFaceTimeCamera(BaseHardware):
"""
if self.native_os() is True:
return {}
return {
"PCIe FaceTime Camera": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources": {
"AppleCamera.plugin": "14.0 Beta 1"
},

View File

@@ -54,15 +54,7 @@ class T1SecurityChip(BaseHardware):
return {
"T1 Security Chip": {
PatchType.INSTALL_SYSTEM_VOLUME: {
"/System/Library/Frameworks/LocalAuthentication.framework/Support": {
"SharedUtils.framework": f"13.6-{self._xnu_major}", # Required for Password Authentication (SharedUtils.framework)
#**({ "MechanismPlugins": "15.0 Beta 4" } if self._xnu_major >= os_data.sequoia else {}), # Required to add a TouchID fingerprint
},
"/System/Library/PrivateFrameworks": {
"EmbeddedOSInstall.framework": "13.6", # Required for biometrickitd
**({ "NearField.framework": "14.5" } if self._xnu_major >= os_data.sequoia else {}),
},
PatchType.OVERWRITE_SYSTEM_VOLUME: {
# Required for Apple Pay
"/usr/lib": {
"libNFC_Comet.dylib": "13.6",
@@ -87,5 +79,15 @@ class T1SecurityChip(BaseHardware):
"SN300V_FW_B0_02_01_22_rev129172.bin": "13.6",
}
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks/LocalAuthentication.framework/Support": {
"SharedUtils.framework": f"13.6-{self._xnu_major}", # Required for Password Authentication (SharedUtils.framework)
**({ "MechanismPlugins": "15.0 Beta 4" } if self._xnu_major >= os_data.sequoia else {}), # Required to add a TouchID fingerprint
},
"/System/Library/PrivateFrameworks": {
"EmbeddedOSInstall.framework": "13.6", # Required for biometrickitd
**({ "NearField.framework": "14.5" } if self._xnu_major >= os_data.sequoia else {}),
},
}
},
}

View File

@@ -77,7 +77,7 @@ class USB11Controller(BaseHardware):
"""
return {
"Legacy USB 1.1": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"IOUSBHostFamily.kext": "12.6.2" if self._xnu_float < self.macOS_14_4 else "12.6.2-23.4",
},
@@ -96,7 +96,7 @@ class USB11Controller(BaseHardware):
return {
# Injection of UHCI/OHCI causes a panic on 14.1+
"Legacy USB 1.1 Extended": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns": {
"AppleUSBOHCI.kext": "12.6.2-USB",
"AppleUSBOHCIPCI.kext": "12.6.2-USB",

View File

@@ -89,7 +89,7 @@ class LegacyWireless(BaseHardware):
"""
return {
"Legacy Wireless": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/usr/libexec": {
"airportd": "11.7.10" if self._affected_by_cve_2024_23227 is False else "11.7.10-Sandbox",
},
@@ -97,7 +97,7 @@ class LegacyWireless(BaseHardware):
"WiFiAgent.app": "11.7.10",
},
},
PatchType.INSTALL_DATA_VOLUME: {
PatchType.OVERWRITE_DATA_VOLUME: {
"/Library/Application Support/SkyLightPlugins": {
**({ "CoreWLAN.dylib": "SkyLightPlugins" } if self._xnu_major == os_data.monterey else {}),
**({ "CoreWLAN.txt": "SkyLightPlugins" } if self._xnu_major == os_data.monterey else {}),
@@ -116,11 +116,13 @@ class LegacyWireless(BaseHardware):
return {
"Legacy Wireless Extended": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/usr/libexec": {
"wps": "12.7.2",
"wifip2pd": "12.7.2",
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"CoreWLAN.framework": "12.7.2",
},
@@ -129,7 +131,7 @@ class LegacyWireless(BaseHardware):
"IO80211.framework": "12.7.2",
"WiFiPeerToPeer.framework": "12.7.2",
},
},
}
},
}
@@ -140,7 +142,7 @@ class LegacyWireless(BaseHardware):
"""
if self.native_os() is True:
return {}
return {
**self._base_patch(),
**self._extended_patch(),

View File

@@ -62,11 +62,16 @@ class ModernWireless(BaseHardware):
return {
"Modern Wireless": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/usr/libexec": {
"airportd": "13.6.5",
"wifip2pd": "13.6.5",
},
"/System/Library/CoreServices": {
**({ "WiFiAgent.app": "14.5" } if self._xnu_major >= os_data.sequoia else {}),
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"CoreWLAN.framework": f"13.6.5-{self._xnu_major}",
},
@@ -75,9 +80,6 @@ class ModernWireless(BaseHardware):
"IO80211.framework": f"13.6.5-{self._xnu_major}",
"WiFiPeerToPeer.framework": f"13.6.5-{self._xnu_major}",
},
"/System/Library/CoreServices": {
**({ "WiFiAgent.app": "14.5" } if self._xnu_major >= os_data.sequoia else {}),
},
},
}
},
}

View File

@@ -31,7 +31,7 @@ class AMDOpenCL(BaseSharedPatchSet):
return {
"AMD OpenCL": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"OpenCL.framework": "12.5 non-AVX2.0",
"OpenGL.framework": "12.5 non-AVX2.0",

View File

@@ -31,7 +31,7 @@ class AMDTeraScale(BaseSharedPatchSet):
return {
"AMD TeraScale Common": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"AMDFramebuffer.kext": "10.13.6",
"AMDLegacyFramebuffer.kext": "10.13.6",

View File

@@ -32,7 +32,7 @@ class BigSurGVA(BaseSharedPatchSet):
return {
"Big Sur GVA": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/PrivateFrameworks": {
"AppleGVA.framework": "11.7.10",
"AppleGVACore.framework": "11.7.10",

View File

@@ -31,7 +31,7 @@ class BigSurOpenCL(BaseSharedPatchSet):
return {
"Big Sur OpenCL": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"OpenCL.framework": "11.6",
},

View File

@@ -33,7 +33,7 @@ class HighSierraGVA(BaseSharedPatchSet):
# For GPUs last natively supported in High Sierra/Catalina
# Restores DRM support
"High Sierra GVA": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/PrivateFrameworks": {
"AppleGVA.framework": "10.13.6",
"AppleGVACore.framework": "10.15.7",

View File

@@ -32,7 +32,12 @@ class LegacyMetal3802(BaseSharedPatchSet):
return {
"Metal 3802 Common": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Sandbox/Profiles": {
"com.apple.mtlcompilerservice.sb": "12.5-3802",
}
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"Metal.framework": "12.5-3802-22" if self._xnu_major < os_data.sonoma else "12.5-3802-23",
},
@@ -40,9 +45,6 @@ class LegacyMetal3802(BaseSharedPatchSet):
"MTLCompiler.framework": "12.7.6-3802",
"GPUCompiler.framework": "12.7.6-3802",
},
"/System/Library/Sandbox/Profiles": {
"com.apple.mtlcompilerservice.sb": "12.5-3802",
}
}
}
}
@@ -58,7 +60,7 @@ class LegacyMetal3802(BaseSharedPatchSet):
return {
"Metal 3802 Common Extended": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"Metal.framework": f"13.2.1-{self._xnu_major}",
**({ "CoreImage.framework": "14.0 Beta 3" if self._xnu_major < os_data.sequoia.value else "14.0 Beta 3-24"} if self._xnu_major >= os_data.sonoma.value else {}),
@@ -91,7 +93,7 @@ class LegacyMetal3802(BaseSharedPatchSet):
return {
"Metal 3802 .metallibs": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/Resources": {
"default.metallib": "14.6.1",
},

View File

@@ -32,7 +32,7 @@ class MontereyGVA(BaseSharedPatchSet):
return {
"Monterey GVA": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/PrivateFrameworks": {
"AppleGVA.framework": "12.5",
"AppleGVACore.framework": "12.5",

View File

@@ -31,7 +31,7 @@ class MontereyOpenCL(BaseSharedPatchSet):
return {
"Monterey OpenCL": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"OpenCL.framework": "12.5",
},

View File

@@ -33,12 +33,12 @@ class MontereyWebKit(BaseSharedPatchSet):
return {
"WebKit Monterey Common": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"WebKit.framework": "11.6"
},
},
PatchType.INSTALL_DATA_VOLUME: {
PatchType.MERGE_DATA_VOLUME: {
"/Library/Apple/System/Library/StagedFrameworks/Safari": {
"WebKit.framework": "11.6"
},

View File

@@ -31,21 +31,10 @@ class NonMetal(BaseSharedPatchSet):
return {
"Non-Metal Common": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"IOSurface.kext": "10.15.7",
},
"/System/Library/Frameworks": {
"OpenGL.framework": "10.14.3",
"CoreDisplay.framework": f"10.14.4-{self._xnu_major}",
"IOSurface.framework": f"10.15.7-{self._xnu_major}",
"QuartzCore.framework": f"10.15.7-{self._xnu_major}",
},
"/System/Library/PrivateFrameworks": {
"GPUSupport.framework": "10.14.3",
"SkyLight.framework": f"10.14.6-{self._xnu_major}",
**({"FaceCore.framework": f"13.5"} if self._xnu_major >= os_data.sonoma else {}),
},
"/System/Applications": {
**({ "Photo Booth.app": "11.7.9"} if self._xnu_major >= os_data.monterey else {}),
},
@@ -79,12 +68,25 @@ class NonMetal(BaseSharedPatchSet):
"AppleAfterburner.kext",
],
},
PatchType.INSTALL_DATA_VOLUME: {
PatchType.OVERWRITE_DATA_VOLUME: {
"/Library/Application Support/SkyLightPlugins": {
**({ "DropboxHack.dylib": "SkyLightPlugins" } if self._xnu_major >= os_data.monterey else {}),
**({ "DropboxHack.txt": "SkyLightPlugins" } if self._xnu_major >= os_data.monterey else {}),
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"OpenGL.framework": "10.14.3",
"CoreDisplay.framework": f"10.14.4-{self._xnu_major}",
"IOSurface.framework": f"10.15.7-{self._xnu_major}",
"QuartzCore.framework": f"10.15.7-{self._xnu_major}",
},
"/System/Library/PrivateFrameworks": {
"GPUSupport.framework": "10.14.3",
"SkyLight.framework": f"10.14.6-{self._xnu_major}",
**({"FaceCore.framework": f"13.5"} if self._xnu_major >= os_data.sonoma else {}),
},
},
PatchType.EXECUTE: {
# 'When Space Allows' option introduced in 12.4 (XNU 21.5)
**({"/usr/bin/defaults write /Library/Preferences/.GlobalPreferences.plist ShowDate -int 1": True } if self._xnu_float >= self.macOS_12_4 else {}),

View File

@@ -31,7 +31,7 @@ class NonMetalCoreDisplay(BaseSharedPatchSet):
return {
"Non-Metal CoreDisplay Common": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"CoreDisplay.framework": f"10.13.6-{self._xnu_major}",
},

View File

@@ -32,11 +32,13 @@ class NonMetalIOAccelerator(BaseSharedPatchSet):
return {
"Non-Metal IOAccelerator Common": {
PatchType.INSTALL_SYSTEM_VOLUME: {
PatchType.OVERWRITE_SYSTEM_VOLUME: {
"/System/Library/Extensions": {
"IOAcceleratorFamily2.kext": "10.13.6",
"IOSurface.kext": "10.14.6",
},
},
PatchType.MERGE_SYSTEM_VOLUME: {
"/System/Library/Frameworks": {
"IOSurface.framework": f"10.14.6-{self._xnu_major}",
"OpenCL.framework": "10.13.6",

View File

@@ -382,7 +382,7 @@ class PatchSysVolume:
remove_file(destination_folder_path, remove_patch_file)
for method_install in [PatchType.INSTALL_SYSTEM_VOLUME, PatchType.INSTALL_DATA_VOLUME]:
for method_install in [PatchType.OVERWRITE_SYSTEM_VOLUME, PatchType.OVERWRITE_DATA_VOLUME, PatchType.MERGE_SYSTEM_VOLUME, PatchType.MERGE_DATA_VOLUME]:
if method_install not in required_patches[patch]:
continue
@@ -394,7 +394,7 @@ class PatchSysVolume:
if not required_patches[patch][method_install][install_patch_directory][install_file].startswith("/"):
source_folder_path = source_files_path + "/" + source_folder_path
if method_install == PatchType.INSTALL_SYSTEM_VOLUME:
if method_install in [PatchType.OVERWRITE_SYSTEM_VOLUME, PatchType.MERGE_SYSTEM_VOLUME]:
destination_folder_path = str(self.mount_location) + install_patch_directory
else:
if install_patch_directory == "/Library/Extensions":
@@ -418,7 +418,7 @@ class PatchSysVolume:
destination_folder_path = updated_destination_folder_path
install_new_file(source_folder_path, destination_folder_path, install_file)
install_new_file(source_folder_path, destination_folder_path, install_file, method_install)
if PatchType.EXECUTE in required_patches[patch]:
for process in required_patches[patch][PatchType.EXECUTE]:
@@ -496,7 +496,7 @@ class PatchSysVolume:
for patch in required_patches:
# Check if all files are present
for method_type in [PatchType.INSTALL_SYSTEM_VOLUME, PatchType.INSTALL_DATA_VOLUME]:
for method_type in [PatchType.OVERWRITE_SYSTEM_VOLUME, PatchType.OVERWRITE_DATA_VOLUME, PatchType.MERGE_SYSTEM_VOLUME, PatchType.MERGE_DATA_VOLUME]:
if method_type not in required_patches[patch]:
continue
for install_patch_directory in required_patches[patch][method_type]:

View File

@@ -7,17 +7,19 @@ import subprocess
from pathlib import Path
from ..patchsets.base import PatchType
from ...volume import generate_copy_arguments
from ...support import subprocess_wrapper
def install_new_file(source_folder: Path, destination_folder: Path, file_name: str) -> None:
def install_new_file(source_folder: Path, destination_folder: Path, file_name: str, method: PatchType) -> None:
"""
Installs a new file to the destination folder
File handling logic:
- .frameworks are merged with the destination folder
- Other files are deleted and replaced (ex. .kexts, .apps)
- PatchType.MERGE_* are merged with the destination folder
- Other files are deleted and replaced
Parameters:
source_folder (Path): Path to the source folder
@@ -31,7 +33,7 @@ def install_new_file(source_folder: Path, destination_folder: Path, file_name: s
logging.info(f" - Skipping {file_name}, cannot locate {source_folder}")
return
if file_name_str.endswith(".framework"):
if method in [PatchType.MERGE_SYSTEM_VOLUME, PatchType.MERGE_DATA_VOLUME]:
# merge with rsync
logging.info(f" - Installing: {file_name}")
subprocess_wrapper.run_as_root(["/usr/bin/rsync", "-r", "-i", "-a", f"{source_folder}/{file_name}", f"{destination_folder}/"], stdout=subprocess.PIPE)