mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-11 16:27:19 +10:00
patchsets: Expand PatchType class to support merging
Resolves hardcoded merge/overwrite assumptions in files.py’s install_new_file()
This commit is contained in:
@@ -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]:
|
||||
|
||||
@@ -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]:
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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(),
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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()
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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 {}),
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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 {}),
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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 {}),
|
||||
|
||||
@@ -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}",
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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]:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user