mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-13 20:28:21 +10:00
Initial Commit
This commit is contained in:
@@ -1,287 +0,0 @@
|
||||
# Lists Root patches used by sys_patch.py
|
||||
# Copyright (C) 2020-2021, Dhinak G, Mykola Grymalyuk
|
||||
DeleteNvidiaAccel11 = [
|
||||
"AMDRadeonX4000.kext",
|
||||
"AMDRadeonX4000HWServices.kext",
|
||||
"AMDRadeonX5000.kext",
|
||||
"AMDRadeonX5000HWServices.kext",
|
||||
"AMDRadeonX6000.kext",
|
||||
"AMDRadeonX6000Framebuffer.kext",
|
||||
"AMDRadeonX6000HWServices.kext",
|
||||
"AppleIntelBDWGraphics.kext",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD5000Graphics.kext",
|
||||
"AppleIntelICLGraphics.kext",
|
||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||
"AppleIntelKBLGraphics.kext",
|
||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||
"AppleIntelSKLGraphics.kext",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||
"AppleIntelFramebufferAzul.kext",
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleParavirtGPU.kext",
|
||||
"GeForce.kext",
|
||||
"IOAcceleratorFamily2.kext",
|
||||
"IOGPUFamily.kext",
|
||||
]
|
||||
|
||||
DeleteAMDAccel11 = [
|
||||
"AMDRadeonX4000.kext",
|
||||
"AMDRadeonX4000HWServices.kext",
|
||||
"AMDRadeonX5000.kext",
|
||||
"AMDRadeonX5000HWServices.kext",
|
||||
"AMDRadeonX6000.kext",
|
||||
"AMDRadeonX6000Framebuffer.kext",
|
||||
"AMDRadeonX6000HWServices.kext",
|
||||
"AMD7000Controller.kext", # AMDSupport Dependency
|
||||
"AMD8000Controller.kext", # AMDSupport Dependency
|
||||
"AMD9000Controller.kext", # AMDSupport Dependency
|
||||
"AMD9500Controller.kext", # AMDSupport Dependency
|
||||
"AMD10000Controller.kext", # AMDSupport Dependency
|
||||
"AppleIntelBDWGraphics.kext",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD5000Graphics.kext",
|
||||
"AppleIntelICLGraphics.kext",
|
||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||
"AppleIntelKBLGraphics.kext",
|
||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||
"AppleIntelSKLGraphics.kext",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||
"AppleIntelFramebufferAzul.kext",
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleParavirtGPU.kext",
|
||||
"GeForce.kext",
|
||||
"IOGPUFamily.kext",
|
||||
]
|
||||
|
||||
DeleteAMDAccel11TS2 = [
|
||||
"AppleCameraInterface.kext",
|
||||
]
|
||||
|
||||
AddNvidiaAccel11 = [
|
||||
"GeForceGA.bundle",
|
||||
"GeForceTesla.kext",
|
||||
"GeForceTeslaGLDriver.bundle",
|
||||
"GeForceTeslaVADriver.bundle",
|
||||
"NVDANV50HalTesla.kext",
|
||||
"NVDAResmanTesla.kext",
|
||||
"IOSurface.kext",
|
||||
]
|
||||
|
||||
AddNvidiaBrightness = [
|
||||
"GeForceGA.bundle",
|
||||
"GeForceTesla.kext",
|
||||
"GeForceTeslaGLDriver.bundle",
|
||||
"GeForceTeslaVADriver.bundle",
|
||||
"NVDANV50HalTesla.kext",
|
||||
"NVDAResmanTesla.kext",
|
||||
]
|
||||
|
||||
AddNvidiaKeplerAccel11 = [
|
||||
"GeForce.kext",
|
||||
"GeForceAIRPlugin.bundle",
|
||||
"GeForceGLDriver.bundle",
|
||||
"GeForceMTLDriver.bundle",
|
||||
"GeForceVADriver.bundle",
|
||||
"NVDAGF100Hal.kext",
|
||||
"NVDAGK100Hal.kext",
|
||||
"NVDAResman.kext",
|
||||
"NVDAStartup.kext",
|
||||
]
|
||||
|
||||
AddNvidiaTeslaAccel12 = [
|
||||
"NVDAStartup.kext",
|
||||
]
|
||||
|
||||
AddAMDAccel11 = [
|
||||
"AMD2400Controller.kext",
|
||||
"AMD2600Controller.kext",
|
||||
"AMD3800Controller.kext",
|
||||
"AMD4600Controller.kext",
|
||||
"AMD4800Controller.kext",
|
||||
"AMD5000Controller.kext",
|
||||
"AMD6000Controller.kext",
|
||||
"AMDFramebuffer.kext",
|
||||
"AMDLegacyFramebuffer.kext",
|
||||
"AMDLegacySupport.kext",
|
||||
"AMDRadeonVADriver.bundle",
|
||||
"AMDRadeonVADriver2.bundle",
|
||||
"AMDRadeonX3000.kext",
|
||||
"AMDRadeonX3000GLDriver.bundle",
|
||||
"AMDShared.bundle",
|
||||
"AMDSupport.kext",
|
||||
"ATIRadeonX2000.kext",
|
||||
"ATIRadeonX2000GA.plugin",
|
||||
"ATIRadeonX2000GLDriver.bundle",
|
||||
"ATIRadeonX2000VADriver.bundle",
|
||||
]
|
||||
|
||||
AddAMDBrightness = [
|
||||
"AMD2400Controller.kext",
|
||||
"AMD2600Controller.kext",
|
||||
"AMD3800Controller.kext",
|
||||
"AMD4600Controller.kext",
|
||||
"AMD4800Controller.kext",
|
||||
"AMD5000Controller.kext",
|
||||
"AMD6000Controller.kext",
|
||||
"AMDLegacyFramebuffer.kext",
|
||||
"AMDLegacySupport.kext",
|
||||
"AMDRadeonVADriver.bundle",
|
||||
"AMDRadeonVADriver2.bundle",
|
||||
# "AMDRadeonX3000.kext",
|
||||
# "AMDRadeonX3000GLDriver.bundle",
|
||||
"AMDShared.bundle",
|
||||
"ATIRadeonX2000.kext",
|
||||
"ATIRadeonX2000GA.plugin",
|
||||
"ATIRadeonX2000GLDriver.bundle",
|
||||
"ATIRadeonX2000VADriver.bundle",
|
||||
]
|
||||
|
||||
AddAMDAccel11TS2 = [
|
||||
"IOSurface.kext",
|
||||
"IOAcceleratorFamily2.kext",
|
||||
]
|
||||
|
||||
AddIntelGen1Accel = [
|
||||
"AppleIntelHDGraphics.kext",
|
||||
"AppleIntelHDGraphicsFB.kext",
|
||||
"AppleIntelHDGraphicsGA.plugin",
|
||||
"AppleIntelHDGraphicsGLDriver.bundle",
|
||||
"AppleIntelHDGraphicsVADriver.bundle",
|
||||
]
|
||||
|
||||
AddIntelGen2Accel = [
|
||||
"AppleIntelHD3000Graphics.kext",
|
||||
"AppleIntelHD3000GraphicsGA.plugin",
|
||||
"AppleIntelHD3000GraphicsGLDriver.bundle",
|
||||
"AppleIntelHD3000GraphicsVADriver.bundle",
|
||||
# "AppleIntelSNBGraphicsFB.kext",
|
||||
"AppleIntelSNBVA.bundle",
|
||||
]
|
||||
|
||||
AddIntelGen2AccelStock = [
|
||||
"AppleIntelSNBGraphicsFB-Clean.kext",
|
||||
]
|
||||
|
||||
AddIntelGen2AccelPatched = [
|
||||
"AppleIntelSNBGraphicsFB.kext",
|
||||
]
|
||||
|
||||
AddIntelGen3Accel = [
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD4000GraphicsGLDriver.bundle",
|
||||
"AppleIntelHD4000GraphicsMTLDriver.bundle",
|
||||
"AppleIntelHD4000GraphicsVADriver.bundle",
|
||||
"AppleIntelIVBVA.bundle",
|
||||
"AppleIntelGraphicsShared.bundle",
|
||||
]
|
||||
|
||||
AddGeneralAccel = ["IOAcceleratorFamily2.kext", "IOSurface.kext"]
|
||||
|
||||
DeleteBrightness = ["AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext"]
|
||||
|
||||
DeleteDemux = [
|
||||
"AppleGraphicsControl.kext/Contents/PlugIns/AGDCBacklightControl.kext",
|
||||
"AppleGraphicsControl.kext/Contents/PlugIns/AppleMuxControl.kext",
|
||||
"AppleBacklight.kext",
|
||||
]
|
||||
|
||||
AddDemux = [
|
||||
"AppleMuxControl.kext",
|
||||
]
|
||||
|
||||
AddBrightness = [
|
||||
"AppleBacklight.kext",
|
||||
"AppleBacklightExpert.kext",
|
||||
]
|
||||
|
||||
AddVolumeControl = [
|
||||
"AppleHDA.kext",
|
||||
"IOAudioFamily.kext",
|
||||
]
|
||||
|
||||
AddVolumeControlv2 = [
|
||||
"AppleHDA.kext",
|
||||
]
|
||||
|
||||
DeleteVolumeControl = [
|
||||
"AppleVirtIO.kext",
|
||||
"AppleVirtualGraphics.kext",
|
||||
"AppleVirtualPlatform.kext",
|
||||
"ApplePVPanic.kext",
|
||||
"AppleVirtIOStorage.kext",
|
||||
]
|
||||
|
||||
AddNvidiaAccelLegacy = [
|
||||
# "GeForceGA.bundle",
|
||||
"GeForceTesla.kext",
|
||||
"GeForceTeslaGLDriver.bundle",
|
||||
"GeForceTeslaVADriver.bundle",
|
||||
"NVDANV50HalTesla.kext",
|
||||
"NVDAResmanTesla.kext",
|
||||
]
|
||||
|
||||
AddAMDAccelLegacy = [
|
||||
"AMD2400Controller.kext",
|
||||
"AMD2600Controller.kext",
|
||||
"AMD3800Controller.kext",
|
||||
"AMD4600Controller.kext",
|
||||
"AMD4800Controller.kext",
|
||||
"AMD5000Controller.kext",
|
||||
"AMD6000Controller.kext",
|
||||
"AMDFramebuffer.kext",
|
||||
"AMDLegacyFramebuffer.kext",
|
||||
"AMDLegacySupport.kext",
|
||||
"AMDRadeonVADriver.bundle",
|
||||
"AMDRadeonVADriver2.bundle",
|
||||
"AMDRadeonX3000.kext",
|
||||
"AMDRadeonX3000GLDriver.bundle",
|
||||
"AMDRadeonX4000HWServices.kext",
|
||||
"AMDRadeonX4000.kext",
|
||||
"AMDRadeonX4000GLDriver.bundle",
|
||||
"AMDShared.bundle",
|
||||
"AMDSupport.kext",
|
||||
"ATIRadeonX2000.kext",
|
||||
"ATIRadeonX2000GA.plugin",
|
||||
"ATIRadeonX2000GLDriver.bundle",
|
||||
"ATIRadeonX2000VADriver.bundle",
|
||||
]
|
||||
|
||||
AddGeneralAccelCatalina = [
|
||||
"AppleGraphicsControl.kext",
|
||||
"AppleGraphicsPowerManagement.kext",
|
||||
"AppleMCCSControl.kext",
|
||||
"IOGraphicsFamily.kext",
|
||||
"IONDRVSupport.kext",
|
||||
"IOSurface.kext",
|
||||
]
|
||||
|
||||
AddGeneralAccelMojave = [
|
||||
"IONDRVSupport.kext",
|
||||
"AppleGraphicsControl.kext",
|
||||
"AppleGraphicsPowerManagement.kext",
|
||||
"AppleMCCSControl.kext",
|
||||
"IOAccelerator2D.plugin",
|
||||
"IOAcceleratorFamily2.kext",
|
||||
"IOGraphicsFamily.kext",
|
||||
]
|
||||
|
||||
BackupLocations = [
|
||||
"System/Library/Extensions",
|
||||
"System/Library/Frameworks/CoreDisplay.framework",
|
||||
"System/Library/Frameworks/IOSurface.framework",
|
||||
"System/Library/Frameworks/OpenGL.framework",
|
||||
"System/Library/Frameworks/WebKit.framework",
|
||||
"System/Library/LaunchDaemons",
|
||||
"System/Library/PrivateFrameworks/DisplayServices.framework",
|
||||
"System/Library/PrivateFrameworks/GPUSupport.framework",
|
||||
"System/Library/PrivateFrameworks/SkyLight.framework",
|
||||
"System/Library/PrivateFrameworks/IOAccelerator.framework",
|
||||
"System/Library/PrivateFrameworks/AppleGVA.framework",
|
||||
"System/Library/PrivateFrameworks/AppleGVACore.framework",
|
||||
]
|
||||
305
data/sys_patch_dict.py
Normal file
305
data/sys_patch_dict.py
Normal file
@@ -0,0 +1,305 @@
|
||||
from data import os_data
|
||||
|
||||
def SystemPatchDictionary(os):
|
||||
sys_patch_dict = {
|
||||
"Graphics": {
|
||||
"Non-Metal Common": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"IOSurface.kext": "10.15.7",
|
||||
},
|
||||
"/System/Library/Frameworks": {
|
||||
"OpenGL.framework": "10.14.3",
|
||||
"CoreDisplay.framework": f"10.14.4-{os}",
|
||||
"IOSurface.framework": f"10.15.7-{os}",
|
||||
"QuartzCore.framework": f"10.15.7-{os}",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"GPUSupport.framework": "10.14.3",
|
||||
"SkyLight.framework": f"10.14.6-{os}",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"AMDRadeonX4000.kext",
|
||||
"AMDRadeonX4000HWServices.kext",
|
||||
"AMDRadeonX5000.kext",
|
||||
"AMDRadeonX5000HWServices.kext",
|
||||
"AMDRadeonX6000.kext",
|
||||
"AMDRadeonX6000Framebuffer.kext",
|
||||
"AMDRadeonX6000HWServices.kext",
|
||||
"AppleIntelBDWGraphics.kext",
|
||||
"AppleIntelBDWGraphicsFramebuffer.kext",
|
||||
"AppleIntelCFLGraphicsFramebuffer.kext",
|
||||
"AppleIntelHD4000Graphics.kext",
|
||||
"AppleIntelHD5000Graphics.kext",
|
||||
"AppleIntelICLGraphics.kext",
|
||||
"AppleIntelICLLPGraphicsFramebuffer.kext",
|
||||
"AppleIntelKBLGraphics.kext",
|
||||
"AppleIntelKBLGraphicsFramebuffer.kext",
|
||||
"AppleIntelSKLGraphics.kext",
|
||||
"AppleIntelSKLGraphicsFramebuffer.kext",
|
||||
"AppleIntelFramebufferAzul.kext",
|
||||
"AppleIntelFramebufferCapri.kext",
|
||||
"AppleParavirtGPU.kext",
|
||||
"GeForce.kext",
|
||||
"IOAcceleratorFamily2.kext",
|
||||
"IOGPUFamily.kext",
|
||||
],
|
||||
},
|
||||
"Install Non-Root": {
|
||||
"/Library/Application Support/SkyLightPlugins": {
|
||||
**({ "DropboxHack.dylib": "SkyLightPlugins" } if os >= os_data.os_data.monterey else {}),
|
||||
**({ "DropboxHack.txt": "SkyLightPlugins" } if os >= os_data.os_data.monterey else {}),
|
||||
},
|
||||
},
|
||||
},
|
||||
"Metal Common": {
|
||||
"Install": {
|
||||
"/System/Library/Frameworks": {
|
||||
"OpenCL.framework": "11.6",
|
||||
"WebKit.framework": "11.6",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"AppleGVA.framework": "10.15.7",
|
||||
"AppleGVACore.framework": "10.15.7",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
"Legacy GVA": {
|
||||
"Install": {
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"AppleGVA.framework": "10.13.6",
|
||||
"AppleGVACore.framework": "10.15.7",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
"Nvidia Tesla": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"GeForceGA.bundle": "10.13.6",
|
||||
"GeForceTesla.kext": "10.13.6",
|
||||
"GeForceTeslaGLDriver.bundle": "10.13.6",
|
||||
"GeForceTeslaVADriver.bundle": "10.13.6",
|
||||
"NVDANV50HalTesla.kext": "10.13.6",
|
||||
"NVDAResmanTesla.kext": "10.13.6",
|
||||
**({ "NVDAStartup.kext": "12.0 Beta 6" } if os >= os_data.os_data.monterey else {})
|
||||
},
|
||||
},
|
||||
},
|
||||
"Nvidia Kepler": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"GeForceAIRPlugin.bundle": "11.0 Beta 3",
|
||||
"GeForceGLDriver.bundle": "11.0 Beta 3",
|
||||
"GeForceMTLDriver.bundle": "11.0 Beta 3",
|
||||
"GeForce.kext": "12.0 Beta 6",
|
||||
"GeForceVADriver.bundle": "12.0 Beta 6",
|
||||
"NVDAGF100Hal.kext": "12.0 Beta 6",
|
||||
"NVDAGK100Hal.kext": "12.0 Beta 6",
|
||||
"NVDAResman.kext": "12.0 Beta 6",
|
||||
"NVDAStartup.kext": "12.0 Beta 6",
|
||||
},
|
||||
},
|
||||
},
|
||||
"AMD TeraScale 1": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMD2400Controller.kext": "10.13.6",
|
||||
"AMD2600Controller.kext": "10.13.6",
|
||||
"AMD3800Controller.kext": "10.13.6",
|
||||
"AMD4600Controller.kext": "10.13.6",
|
||||
"AMD4800Controller.kext": "10.13.6",
|
||||
"AMDFramebuffer.kext": "10.13.6",
|
||||
"AMDLegacyFramebuffer.kext": "10.13.6",
|
||||
"AMDLegacySupport.kext": "10.13.6",
|
||||
"AMDShared.bundle": "10.13.6",
|
||||
"AMDSupport.kext": "10.13.6",
|
||||
"ATIRadeonX2000.kext": "10.13.6",
|
||||
"ATIRadeonX2000GA.plugin": "10.13.6",
|
||||
"ATIRadeonX2000GLDriver.bundle": "10.13.6",
|
||||
"ATIRadeonX2000VADriver.bundle": "10.13.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"AMD7000Controller.kext",
|
||||
"AMD8000Controller.kext",
|
||||
"AMD9000Controller.kext",
|
||||
"AMD9500Controller.kext",
|
||||
"AMD10000Controller.kext",
|
||||
],
|
||||
},
|
||||
},
|
||||
"AMD TeraScale 2": {
|
||||
"Processes": {
|
||||
"defaults write com.apple.cmio CMIO_Unit_Input_ASC.DoNotUseOpenCL -bool true": False,
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AMD5000Controller.kext": "10.13.6",
|
||||
"AMD6000Controller.kext": "10.13.6",
|
||||
"AMDFramebuffer.kext": "10.13.6",
|
||||
"AMDLegacyFramebuffer.kext": "10.13.6",
|
||||
"AMDLegacySupport.kext": "10.13.6",
|
||||
"AMDRadeonVADriver.bundle": "10.13.6",
|
||||
"AMDRadeonVADriver2.bundle": "10.13.6",
|
||||
"AMDRadeonX3000.kext": "10.13.6",
|
||||
"AMDRadeonX3000GLDriver.bundle": "10.13.6",
|
||||
"AMDShared.bundle": "10.13.6",
|
||||
"AMDSupport.kext": "10.13.6",
|
||||
"IOAcceleratorFamily2.kext": "10.13.6",
|
||||
"IOSurface.kext": "10.14.6",
|
||||
},
|
||||
"/System/Library/Frameworks": {
|
||||
"OpenCL.framework": "10.13.6",
|
||||
"IOSurface.framework": f"10.14.6-{os}",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"GPUSupport.framework": "10.13.6",
|
||||
"IOAccelerator.framework": f"10.13.6-{os}",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleCameraInterface.kext", # Specific to IOAccelerator downgrade
|
||||
"AMD7000Controller.kext",
|
||||
"AMD8000Controller.kext",
|
||||
"AMD9000Controller.kext",
|
||||
"AMD9500Controller.kext",
|
||||
"AMD10000Controller.kext",
|
||||
},
|
||||
},
|
||||
},
|
||||
"Intel Ironlake": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelHDGraphics.kext": "10.13.6",
|
||||
"AppleIntelHDGraphicsFB.kext": "10.13.6",
|
||||
"AppleIntelHDGraphicsGA.plugin": "10.13.6",
|
||||
"AppleIntelHDGraphicsGLDriver.bundle": "10.13.6",
|
||||
"AppleIntelHDGraphicsVADriver.bundle": "10.13.6",
|
||||
},
|
||||
},
|
||||
},
|
||||
"Intel Sandy Bridge": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelHD3000Graphics.kext": "10.13.6",
|
||||
"AppleIntelHD3000GraphicsGA.plugin": "10.13.6",
|
||||
"AppleIntelHD3000GraphicsGLDriver.bundle": "10.13.6",
|
||||
"AppleIntelHD3000GraphicsVADriver.bundle": "10.13.6",
|
||||
"AppleIntelSNBGraphicsFB.kext": "10.13.6", # Add check for Board ID patched kext
|
||||
"AppleIntelSNBVA.bundle": "10.13.6",
|
||||
},
|
||||
},
|
||||
},
|
||||
"Intel Ivy Bridge": {
|
||||
"Processes": {
|
||||
"defaults write com.apple.coremedia hardwareVideoDecoder -string enable": False,
|
||||
},
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleIntelHD4000GraphicsGLDriver.bundle": "11.0 Beta 6",
|
||||
"AppleIntelHD4000GraphicsMTLDriver.bundle": "11.0 Beta 6",
|
||||
"AppleIntelHD4000GraphicsVADriver.bundle": "11.3 Beta 1",
|
||||
"AppleIntelFramebufferCapri.kext": "11.4",
|
||||
"AppleIntelHD4000Graphics.kext": "11.4",
|
||||
"AppleIntelIVBVA.bundle": "11.4",
|
||||
"AppleIntelGraphicsShared.bundle": "11.4", # libIGIL-Metal.dylib pulled from 11.0 Beta 6
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"Audio": {
|
||||
"Legacy Realtek": {
|
||||
# For iMac7,1 and iMac8,1 units with legacy Realtek HD Audio
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleHDA.kext": "10.11.6",
|
||||
"IOAudioFamily.kext": "10.11.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"AppleVirtIO.kext",
|
||||
"AppleVirtualGraphics.kext",
|
||||
"AppleVirtualPlatform.kext",
|
||||
"ApplePVPanic.kext",
|
||||
"AppleVirtIOStorage.kext",
|
||||
],
|
||||
},
|
||||
},
|
||||
# For Mac Pros with non-UGA/GOP GPUs
|
||||
"Legacy Non-GOP": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleHDA.kext": "10.13.6",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"Networking": {
|
||||
"Legacy WiFi": {
|
||||
"Install": {
|
||||
"/usr/libexec": {
|
||||
"airportd": "11.5.2",
|
||||
},
|
||||
"/System/Library/CoreServices": {
|
||||
"WiFiAgent.app": "11.5.2",
|
||||
},
|
||||
},
|
||||
"Install Non-Root": {
|
||||
"/Library/Application Support/SkyLightPlugins": {
|
||||
**({ "CoreWLAN.dylib": "SkyLightPlugins" } if os >= os_data.os_data.monterey else {}),
|
||||
**({ "CoreWLAN.txt": "SkyLightPlugins" } if os >= os_data.os_data.monterey else {}),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"Brightness": {
|
||||
"Legacy Brightness": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions": {
|
||||
"AppleBacklight.kext": "10.12.6",
|
||||
"AppleBacklightExpert.kext": "10.12.6",
|
||||
},
|
||||
"/System/Library/PrivateFrameworks": {
|
||||
"DisplayServices.framework": "10.12.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": [
|
||||
"AGDCBacklightControl.kext",
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
"Miscellaneous": {
|
||||
"Legacy GMUX": {
|
||||
"Install": {
|
||||
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": {
|
||||
"AppleMuxControl.kext": "10.12.6",
|
||||
},
|
||||
},
|
||||
"Remove": {
|
||||
"/System/Library/Extensions": [
|
||||
"AppleBacklight.kext",
|
||||
],
|
||||
"/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns": [
|
||||
"AGDCBacklightControl.kext",
|
||||
"AppleMuxControl.kext",
|
||||
],
|
||||
},
|
||||
},
|
||||
"Legacy Keyboard Backlight": {
|
||||
"Processes": {
|
||||
"defaults write /Library/Preferences/.GlobalPreferences.plist Moraea_BacklightHack -bool true": True,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return sys_patch_dict
|
||||
@@ -899,7 +899,7 @@ class wx_python_gui:
|
||||
|
||||
# Download resources
|
||||
sys.stdout=menu_redirect.RedirectLabel(self.developer_note)
|
||||
download_result, os_ver, extensions_link, framework_link = sys_patch_download.grab_patcher_support_pkg(self.constants).download_files()
|
||||
download_result, os_ver, link = sys_patch_download.grab_patcher_support_pkg(self.constants).download_files()
|
||||
sys.stdout=sys.__stdout__
|
||||
|
||||
if download_result is None:
|
||||
|
||||
@@ -15,7 +15,7 @@ class Constants:
|
||||
def __init__(self):
|
||||
# Patcher Versioning
|
||||
self.patcher_version = "0.4.5" # OpenCore-Legacy-Patcher
|
||||
self.patcher_support_pkg_version = "0.3.9" # PatcherSupportPkg
|
||||
self.patcher_support_pkg_version = "0.4.0" # PatcherSupportPkg
|
||||
self.url_patcher_support_pkg = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
|
||||
self.nightly_url_patcher_support_pkg = "https://nightly.link/dortania/PatcherSupportPkg/workflows/build/master/"
|
||||
self.discord_link = "https://discord.gg/rqdPgH8xSN"
|
||||
@@ -571,167 +571,14 @@ class Constants:
|
||||
return self.payload_path / Path("AutoPkg-Assets.pkg.zip")
|
||||
|
||||
# Apple Payloads Paths
|
||||
|
||||
@property
|
||||
def payload_apple_root_path_zip(self):
|
||||
return self.payload_path / Path("Apple.zip")
|
||||
def payload_local_binaries_root_path(self):
|
||||
return self.payload_path / Path("Universal-Binaries")
|
||||
|
||||
@property
|
||||
def payload_universal_extensions_zip_path(self):
|
||||
return self.payload_path / Path("Universal-Extensions.zip")
|
||||
def payload_local_binaries_root_path_zip(self):
|
||||
return self.payload_path / Path("Universal-Binaries.zip")
|
||||
|
||||
@property
|
||||
def payload_apple_root_path(self):
|
||||
return self.payload_path / Path("Apple")
|
||||
|
||||
@property
|
||||
def payload_apple_kexts_path(self):
|
||||
return self.payload_path / Path("Universal-Extensions")
|
||||
|
||||
@property
|
||||
def payload_apple_coreservices_path(self):
|
||||
return self.payload_apple_root_path / Path("CoreServices")
|
||||
|
||||
@property
|
||||
def payload_apple_usr_path(self):
|
||||
return self.payload_apple_root_path / Path("usr")
|
||||
|
||||
@property
|
||||
def payload_apple_libexec_path(self):
|
||||
return self.payload_apple_usr_path / Path("libexec")
|
||||
|
||||
@property
|
||||
def payload_apple_application_support(self):
|
||||
return self.payload_apple_root_path / Path("Application Support")
|
||||
|
||||
@property
|
||||
def payload_apple_private_path(self):
|
||||
return self.payload_apple_root_path / Path("private")
|
||||
|
||||
@property
|
||||
def payload_apple_etc_path(self):
|
||||
return self.payload_apple_private_path / Path("etc")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path(self):
|
||||
return self.payload_apple_root_path / Path("Frameworks")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path_accel(self):
|
||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Non-Metal")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path_accel_ts2(self):
|
||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path_accel_ivy(self):
|
||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Ivy-Bridge")
|
||||
|
||||
@property
|
||||
def payload_apple_frameworks_path_accel_kepler(self):
|
||||
return self.payload_apple_frameworks_path / Path("Graphics-Acceleration-Kepler")
|
||||
|
||||
@property
|
||||
def payload_apple_lauchd_path(self):
|
||||
return self.payload_apple_root_path / Path("LaunchDaemons")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path(self):
|
||||
return self.payload_apple_root_path / Path("PrivateFrameworks")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_accel(self):
|
||||
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-Non-Metal")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_accel_ts2(self):
|
||||
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-TeraScale-2")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_accel_ivy(self):
|
||||
return self.payload_apple_private_frameworks_path / Path("Graphics-Acceleration-Ivy-Bridge")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_brightness(self):
|
||||
return self.payload_apple_private_frameworks_path / Path("Brightness-Control")
|
||||
|
||||
@property
|
||||
def payload_apple_private_frameworks_path_legacy_drm(self):
|
||||
return self.payload_apple_private_frameworks_path / Path("Legacy-GVA")
|
||||
|
||||
# Apple Extensions
|
||||
# El Capitan Extensions
|
||||
@property
|
||||
def audio_path(self):
|
||||
return self.payload_apple_kexts_path / Path("Audio")
|
||||
|
||||
# High Sierra Extensions
|
||||
@property
|
||||
def audio_v2_path(self):
|
||||
return self.payload_apple_kexts_path / Path("Audio-v2")
|
||||
|
||||
# GPU Kexts and Bundles
|
||||
|
||||
@property
|
||||
def legacy_graphics(self):
|
||||
return self.payload_apple_kexts_path / Path("Graphics-Acceleration")
|
||||
|
||||
@property
|
||||
def legacy_nvidia_path(self):
|
||||
return self.legacy_graphics / Path("Nvidia-Tesla")
|
||||
|
||||
@property
|
||||
def legacy_nvidia_kepler_path(self):
|
||||
return self.legacy_graphics / Path("Nvidia-Kepler")
|
||||
|
||||
@property
|
||||
def legacy_amd_path(self):
|
||||
return self.legacy_graphics / Path("AMD-TeraScale")
|
||||
|
||||
@property
|
||||
def legacy_amd_path_ts2(self):
|
||||
return self.legacy_graphics / Path("AMD-TeraScale-2")
|
||||
|
||||
@property
|
||||
def legacy_intel_gen1_path(self):
|
||||
return self.legacy_graphics / Path("Intel-Gen5-Ironlake")
|
||||
|
||||
@property
|
||||
def legacy_intel_gen2_path(self):
|
||||
return self.legacy_graphics / Path("Intel-Gen6-SandyBridge")
|
||||
|
||||
@property
|
||||
def legacy_intel_gen3_path(self):
|
||||
return self.legacy_graphics / Path("Intel-Gen7-IvyBridge")
|
||||
|
||||
@property
|
||||
def legacy_general_path(self):
|
||||
return self.legacy_graphics / Path("General-Patches")
|
||||
|
||||
@property
|
||||
def legacy_brightness(self):
|
||||
return self.payload_apple_kexts_path / Path("Brightness-Control")
|
||||
|
||||
@property
|
||||
def legacy_mux_path(self):
|
||||
return self.payload_apple_kexts_path / Path("Legacy-Mux")
|
||||
|
||||
@property
|
||||
def legacy_wifi_coreservices(self):
|
||||
return self.payload_apple_coreservices_path / Path("Legacy-Wifi")
|
||||
|
||||
@property
|
||||
def legacy_wifi_libexec(self):
|
||||
return self.payload_apple_libexec_path / Path("Legacy-Wifi")
|
||||
|
||||
@property
|
||||
def legacy_wifi_support(self):
|
||||
return self.payload_apple_application_support / Path("Legacy-Wifi")
|
||||
|
||||
@property
|
||||
def legacy_dropbox_support(self):
|
||||
return self.payload_apple_application_support / Path("Dropbox")
|
||||
|
||||
sbm_values = [
|
||||
"j137ap", # iMacPro1,1
|
||||
|
||||
@@ -105,6 +105,13 @@ def find_model_off_board(board):
|
||||
return key
|
||||
return None
|
||||
|
||||
def find_board_off_model(model):
|
||||
if model in smbios_data.smbios_dictionary:
|
||||
return smbios_data.smbios_dictionary[model]["Board ID"]
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def check_firewire(model):
|
||||
# MacBooks never supported FireWire
|
||||
# Pre-Thunderbolt MacBook Airs as well
|
||||
@@ -116,4 +123,54 @@ def check_firewire(model):
|
||||
elif model.startswith("MacBook"):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
return True
|
||||
|
||||
def determine_best_board_id_for_sandy(current_board_id, gpus):
|
||||
# This function is mainly for users who are either spoofing or using hackintoshes
|
||||
# Generally hackintosh will use whatever the latest SMBIOS is, so we need to determine
|
||||
# the best Board ID to patch inside of AppleIntelSNBGraphicsFB
|
||||
|
||||
# Currently the kext supports the following models:
|
||||
# MacBookPro8,1 - Mac-94245B3640C91C81 (13")
|
||||
# MacBookPro8,2 - Mac-94245A3940C91C80 (15")
|
||||
# MacBookPro8,3 - Mac-942459F5819B171B (17")
|
||||
# MacBookAir4,1 - Mac-C08A6BB70A942AC2 (11")
|
||||
# MacBookAir4,2 - Mac-742912EFDBEE19B3 (13")
|
||||
# Macmini5,1 - Mac-8ED6AF5B48C039E1
|
||||
# Macmini5,2 - Mac-4BC72D62AD45599E (headless)
|
||||
# Macmini5,3 - Mac-7BA5B2794B2CDB12
|
||||
# iMac12,1 - Mac-942B5BF58194151B (headless)
|
||||
# iMac12,2 - Mac-942B59F58194171B (headless)
|
||||
# Unknown(MBP) - Mac-94245AF5819B141B
|
||||
# Unknown(iMac) - Mac-942B5B3A40C91381 (headless)
|
||||
if current_board_id:
|
||||
model = find_model_off_board(current_board_id)
|
||||
if model:
|
||||
if model.startswith("MacBook"):
|
||||
try:
|
||||
size = int(smbios_data.smbios_dictionary[model]["Screen Size"])
|
||||
except KeyError:
|
||||
size = 13 # Assume 13 if it's missing
|
||||
if model.startswith("MacBookPro"):
|
||||
if size >= 17:
|
||||
return find_board_off_model("MacBookPro8,3")
|
||||
elif size >= 15:
|
||||
return find_board_off_model("MacBookPro8,2")
|
||||
else:
|
||||
return find_board_off_model("MacBookPro8,1")
|
||||
else: # MacBook and MacBookAir
|
||||
if size >= 13:
|
||||
return find_board_off_model("MacBookAir4,2")
|
||||
else:
|
||||
return find_board_off_model("MacBookAir4,1")
|
||||
else:
|
||||
# We're working with a desktop, so need to figure out whether the unit is running headless or not
|
||||
if len(gpus) > 1:
|
||||
# More than 1 GPU detected, assume headless
|
||||
if model.startswith("Macmini"):
|
||||
return find_board_off_model("Macmini5,2")
|
||||
else:
|
||||
return find_board_off_model("iMac12,2")
|
||||
else:
|
||||
return find_board_off_model("Macmini5,1")
|
||||
return find_board_off_model("Macmini5,1") # Safest bet if we somehow don't know the model
|
||||
@@ -11,8 +11,8 @@ import subprocess
|
||||
import zipfile
|
||||
from pathlib import Path
|
||||
|
||||
from resources import constants, utilities, generate_smbios, sys_patch_download, sys_patch_detect
|
||||
from data import sip_data, sys_patch_data, os_data
|
||||
from resources import constants, generate_smbios, utilities, sys_patch_download, sys_patch_detect
|
||||
from data import os_data, sys_patch_dict
|
||||
|
||||
|
||||
class PatchSysVolume:
|
||||
@@ -26,7 +26,7 @@ class PatchSysVolume:
|
||||
self.root_supports_snapshot = utilities.check_if_root_is_apfs_snapshot()
|
||||
self.constants.root_patcher_succeded = False # Reset Variable each time we start
|
||||
|
||||
# GUI will detect hardware patches betfore starting PatchSysVolume()
|
||||
# GUI will detect hardware patches before starting PatchSysVolume()
|
||||
# However the TUI will not, so allow for data to be passed in manually avoiding multiple calls
|
||||
if hardware_details is None:
|
||||
hardware_details = sys_patch_detect.detect_root_patch(self.computer.real_model, self.constants).detect_patch_set()
|
||||
@@ -68,14 +68,7 @@ class PatchSysVolume:
|
||||
else:
|
||||
self.mount_location = ""
|
||||
self.mount_location_data = ""
|
||||
self.mount_coreservices = f"{self.mount_location}/System/Library/CoreServices"
|
||||
self.mount_extensions = f"{self.mount_location}/System/Library/Extensions"
|
||||
self.mount_frameworks = f"{self.mount_location}/System/Library/Frameworks"
|
||||
self.mount_lauchd = f"{self.mount_location}/System/Library/LaunchDaemons"
|
||||
self.mount_private_frameworks = f"{self.mount_location}/System/Library/PrivateFrameworks"
|
||||
self.mount_libexec = f"{self.mount_location}/usr/libexec"
|
||||
self.mount_extensions_mux = f"{self.mount_location}/System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/"
|
||||
self.mount_private_etc = f"{self.mount_location_data}/private/etc"
|
||||
self.mount_application_support = f"{self.mount_location_data}/Library/Application Support"
|
||||
|
||||
def find_mount_root_vol(self, patch):
|
||||
@@ -147,6 +140,7 @@ class PatchSysVolume:
|
||||
# - Check the output for 'KernelCache ID' to see if the cache was successfully rebuilt
|
||||
# kmutil notes:
|
||||
# - will return 71 on failure to build KCs
|
||||
# - will return 31 on 'No binaries or codeless kexts were provided'
|
||||
# - will return -10 if the volume is missing (ie. unmounted by another process)
|
||||
if result.returncode != 0 or (self.constants.detected_os < os_data.os_data.catalina and "KernelCache ID" not in result.stdout.decode()):
|
||||
self.success_status = False
|
||||
@@ -191,26 +185,7 @@ class PatchSysVolume:
|
||||
print("- Unmounting Root Volume (Don't worry if this fails)")
|
||||
utilities.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
|
||||
def delete_old_binaries(self, vendor_patch):
|
||||
for delete_current_kext in vendor_patch:
|
||||
delete_path = Path(self.mount_extensions) / Path(delete_current_kext)
|
||||
if Path(delete_path).exists():
|
||||
print(f"- Deleting {delete_current_kext}")
|
||||
utilities.process_status(utilities.elevated(["rm", "-R", delete_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
else:
|
||||
print(f"- Couldn't find {delete_current_kext}, skipping")
|
||||
|
||||
def add_new_binaries(self, vendor_patch, vendor_location):
|
||||
for add_current_kext in vendor_patch:
|
||||
existing_path = Path(self.mount_extensions) / Path(add_current_kext)
|
||||
if Path(existing_path).exists():
|
||||
print(f"- Found conflicting kext, Deleting Root Volume's {add_current_kext}")
|
||||
utilities.process_status(utilities.elevated(["rm", "-R", existing_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
print(f"- Adding {add_current_kext}")
|
||||
utilities.process_status(utilities.elevated(["cp", "-R", f"{vendor_location}/{add_current_kext}", self.mount_extensions], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/{add_current_kext}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
def install_auto_patcher_launch_agent(self):
|
||||
# Installs the following:
|
||||
# - OpenCore-Patcher.app in /Library/Application Support/Dortania/
|
||||
@@ -265,360 +240,192 @@ class PatchSysVolume:
|
||||
|
||||
def clean_skylight_plugins(self):
|
||||
if (Path(self.mount_application_support) / Path("SkyLightPlugins/")).exists():
|
||||
print("- Found SkylightPlugins folder, removing")
|
||||
utilities.process_status(utilities.elevated(["rm", "-rf", f"{self.mount_application_support}/SkyLightPlugins"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
def add_brightness_patch(self):
|
||||
self.delete_old_binaries(sys_patch_data.DeleteBrightness)
|
||||
self.add_new_binaries(sys_patch_data.AddBrightness, self.constants.legacy_brightness)
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_brightness}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
||||
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_private_frameworks}/DisplayServices.framework"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
def add_audio_patch(self):
|
||||
if self.model in ["iMac7,1", "iMac8,1"]:
|
||||
self.delete_old_binaries(sys_patch_data.DeleteVolumeControl)
|
||||
self.add_new_binaries(sys_patch_data.AddVolumeControl, self.constants.audio_path)
|
||||
print("- Found SkylightPlugins folder, removing old plugins")
|
||||
utilities.process_status(utilities.elevated(["rm", "-Rf", f"{self.mount_application_support}/SkyLightPlugins"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["mkdir", f"{self.mount_application_support}/SkyLightPlugins"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
else:
|
||||
self.add_new_binaries(sys_patch_data.AddVolumeControlv2, self.constants.audio_v2_path)
|
||||
|
||||
def add_wifi_patch(self):
|
||||
print("- Merging Wireless CoreSerices patches")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.legacy_wifi_coreservices}/", self.mount_coreservices], stdout=subprocess.PIPE)
|
||||
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_coreservices}/WiFiAgent.app"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_coreservices}/WiFiAgent.app"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
print("- Merging Wireless usr/libexec patches")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.legacy_wifi_libexec}/", self.mount_libexec], stdout=subprocess.PIPE)
|
||||
utilities.process_status(utilities.elevated(["chmod", "755", f"{self.mount_libexec}/airportd"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chown", "root:wheel", f"{self.mount_libexec}/airportd"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
# dylib patch to resolve password crash prompt
|
||||
# Note requires ASentientBot's SkyLight to function
|
||||
# Thus Metal machines do not benefit from this patch, however install anyways as harmless
|
||||
print("- Merging Wireless SkyLightPlugins")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.legacy_wifi_support}/", self.mount_application_support], stdout=subprocess.PIPE)
|
||||
|
||||
def add_legacy_mux_patch(self):
|
||||
self.delete_old_binaries(sys_patch_data.DeleteDemux)
|
||||
print("- Merging Legacy Mux Kext patches")
|
||||
utilities.process_status(
|
||||
utilities.elevated(["cp", "-R", f"{self.constants.legacy_mux_path}/AppleMuxControl.kext", self.mount_extensions_mux], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
)
|
||||
|
||||
def add_legacy_keyboard_backlight_patch(self):
|
||||
print("- Enabling Keyboard Backlight delay")
|
||||
utilities.process_status(
|
||||
utilities.elevated(["defaults", "write", "/Library/Preferences/.GlobalPreferences.plist", "Moraea_BacklightHack", "-bool", "true"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
)
|
||||
|
||||
def add_legacy_dropbox_patch(self):
|
||||
print("- Merging DropboxHack SkyLightPlugins")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.legacy_dropbox_support}/", self.mount_application_support], stdout=subprocess.PIPE)
|
||||
|
||||
def gpu_accel_legacy(self):
|
||||
if self.constants.detected_os == os_data.os_data.mojave:
|
||||
print("- Installing General Acceleration Kext patches for Mojave")
|
||||
self.add_new_binaries(sys_patch_data.AddGeneralAccelMojave, self.constants.legacy_general_path)
|
||||
elif self.constants.detected_os == os_data.os_data.catalina:
|
||||
print("- Installing General Acceleration Kext patches for Catalina")
|
||||
self.add_new_binaries(sys_patch_data.AddGeneralAccelCatalina, self.constants.legacy_general_path)
|
||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
||||
print("- Installing General Acceleration Kext patches for Big Sur/Monterey")
|
||||
self.add_new_binaries(sys_patch_data.AddGeneralAccel, self.constants.legacy_general_path)
|
||||
|
||||
# Nvidia
|
||||
def gpu_accel_legacy_nvidia_master(self):
|
||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina]:
|
||||
print("- Installing Nvidia Acceleration Kext patches for Mojave/Catalina")
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddNvidiaAccelLegacy, self.constants.legacy_nvidia_path)
|
||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
||||
print("- Installing Nvidia Acceleration Kext patches for Big Sur/Monterey")
|
||||
self.delete_old_binaries(sys_patch_data.DeleteNvidiaAccel11)
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddNvidiaAccel11, self.constants.legacy_nvidia_path)
|
||||
if self.constants.detected_os == os_data.os_data.monterey and self.constants.detected_os_minor > 0:
|
||||
# Beta 7+ removes NVDAStartup
|
||||
self.add_new_binaries(sys_patch_data.AddNvidiaTeslaAccel12, self.constants.legacy_nvidia_kepler_path)
|
||||
else:
|
||||
print("- Installing basic Nvidia Framebuffer Kext patches for generic OS")
|
||||
self.add_new_binaries(sys_patch_data.AddNvidiaBrightness, self.constants.legacy_nvidia_path)
|
||||
|
||||
# AMD/ATI
|
||||
def gpu_accel_legacy_ts1_master(self):
|
||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina]:
|
||||
print("- Installing TeraScale 1 Acceleration Kext patches for Mojave/Catalina")
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddAMDAccelLegacy, self.constants.legacy_amd_path)
|
||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
||||
print("- Installing TeraScale 1 Acceleration Kext patches for Big Sur/Monterey")
|
||||
self.delete_old_binaries(sys_patch_data.DeleteAMDAccel11)
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddAMDAccel11, self.constants.legacy_amd_path)
|
||||
else:
|
||||
print("- Installing basic TeraScale 1 Framebuffer Kext patches for generic OS")
|
||||
self.add_new_binaries(sys_patch_data.AddAMDBrightness, self.constants.legacy_amd_path)
|
||||
|
||||
def gpu_accel_legacy_ts2_master(self):
|
||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina] and self.constants.allow_ts2_accel is True:
|
||||
print("- Installing TeraScale 2 Acceleration Kext patches for Mojave/Catalina")
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddAMDAccelLegacy, self.constants.legacy_amd_path)
|
||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey] and self.constants.allow_ts2_accel is True:
|
||||
print("- Installing TeraScale 2 Acceleration Kext patches for Big Sur")
|
||||
self.delete_old_binaries(sys_patch_data.DeleteAMDAccel11)
|
||||
self.delete_old_binaries(sys_patch_data.DeleteAMDAccel11TS2)
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddAMDAccel11, self.constants.legacy_amd_path)
|
||||
else:
|
||||
print("- Installing basic TeraScale 2 Framebuffer Kext patches for generic OS")
|
||||
self.add_new_binaries(sys_patch_data.AddAMDBrightness, self.constants.legacy_amd_path)
|
||||
|
||||
# Intel
|
||||
def gpu_accel_legacy_ironlake_master(self):
|
||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina]:
|
||||
print("- Installing Ironlake Acceleration Kext patches for Mojave/Catalina")
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
||||
print("- Installing Ironlake Acceleration Kext patches for Big Sur/Monterey")
|
||||
self.delete_old_binaries(sys_patch_data.DeleteNvidiaAccel11)
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||
else:
|
||||
print("- Installing basic Ironlake Framebuffer Kext patches for generic OS")
|
||||
self.add_new_binaries(sys_patch_data.AddIntelGen1Accel, self.constants.legacy_intel_gen1_path)
|
||||
|
||||
def gpu_accel_legacy_sandybridge_master(self):
|
||||
if self.constants.detected_os in [os_data.os_data.mojave, os_data.os_data.catalina]:
|
||||
print("- Installing Sandy Bridge Acceleration Kext patches for Mojave/Catalina")
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
||||
self.gpu_accel_legacy_sandybridge_board_id()
|
||||
elif self.constants.detected_os in [os_data.os_data.big_sur, os_data.os_data.monterey]:
|
||||
print("- Installing Sandy Bridge Acceleration Kext patches for Big Sur/Monterey")
|
||||
self.delete_old_binaries(sys_patch_data.DeleteNvidiaAccel11)
|
||||
self.gpu_accel_legacy()
|
||||
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
||||
self.gpu_accel_legacy_sandybridge_board_id()
|
||||
self.gpu_accel_legacy_gva()
|
||||
else:
|
||||
print("- Installing basic Sandy Bridge Framebuffer Kext patches for generic OS")
|
||||
self.add_new_binaries(sys_patch_data.AddIntelGen2Accel, self.constants.legacy_intel_gen2_path)
|
||||
self.gpu_accel_legacy_sandybridge_board_id()
|
||||
|
||||
def gpu_accel_legacy_sandybridge_board_id(self):
|
||||
if self.constants.computer.reported_board_id in self.constants.sandy_board_id_stock:
|
||||
print("- Using stock AppleIntelSNBGraphicsFB")
|
||||
# TODO: Clean this function up
|
||||
# add_new_binaries() and delete_old_binaries() have a bug when the passed array has a single element
|
||||
# 'TypeError: expected str, bytes or os.PathLike object, not list'
|
||||
# This is a temporary workaround to fix that
|
||||
utilities.elevated(["rm", "-r", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB-Clean.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
utilities.elevated(["rm", "-r", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
# Add kext
|
||||
print("- Adding AppleIntelSNBGraphicsFB.kext")
|
||||
utilities.elevated(
|
||||
["cp", "-r", f"{self.constants.legacy_intel_gen2_path}/AppleIntelSNBGraphicsFB-Clean.kext", f"{self.mount_extensions}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
||||
)
|
||||
# Rename kext
|
||||
utilities.elevated(
|
||||
["mv", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB-Clean.kext", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
||||
)
|
||||
# Fix permissions
|
||||
utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
else:
|
||||
# Adjust board ID for spoofs
|
||||
print("- Using Board ID patched AppleIntelSNBGraphicsFB")
|
||||
utilities.elevated(["rm", "-r", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB-Clean.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
utilities.elevated(["rm", "-r", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
# Add kext
|
||||
print("- Adding AppleIntelSNBGraphicsFB.kext")
|
||||
utilities.elevated(["cp", "-r", f"{self.constants.legacy_intel_gen2_path}/AppleIntelSNBGraphicsFB.kext", f"{self.mount_extensions}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
# Fix permissions
|
||||
utilities.elevated(["chown", "-Rf", "root:wheel", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
utilities.elevated(["chmod", "-Rf", "755", f"{self.mount_extensions}/AppleIntelSNBGraphicsFB.kext"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
def gpu_framebuffer_ivybridge_master(self):
|
||||
if self.constants.detected_os == os_data.os_data.monterey:
|
||||
print("- Installing IvyBridge Acceleration Kext patches for Monterey")
|
||||
self.add_new_binaries(sys_patch_data.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
|
||||
if self.validate is False:
|
||||
print("- Fixing Acceleration in CoreMedia")
|
||||
utilities.process_status(subprocess.run(["defaults", "write", "com.apple.coremedia", "hardwareVideoDecoder", "-string", "enable"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
print("- Merging Ivy Bridge Frameworks")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_ivy}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
print("- Merging Ivy Bridge PrivateFrameworks")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel_ivy}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
||||
else:
|
||||
print("- Installing basic Ivy Bridge Kext patches for generic OS")
|
||||
self.add_new_binaries(sys_patch_data.AddIntelGen3Accel, self.constants.legacy_intel_gen3_path)
|
||||
|
||||
def gpu_framebuffer_kepler_master(self):
|
||||
if self.constants.detected_os == os_data.os_data.monterey:
|
||||
print("- Installing Kepler Acceleration Kext patches for Monterey")
|
||||
self.add_new_binaries(sys_patch_data.AddNvidiaKeplerAccel11, self.constants.legacy_nvidia_kepler_path)
|
||||
print("- Merging Kepler Frameworks")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_kepler}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
else:
|
||||
print("- Installing Kepler Kext patches for generic OS")
|
||||
self.add_new_binaries(sys_patch_data.AddNvidiaKeplerAccel11, self.constants.legacy_nvidia_kepler_path)
|
||||
|
||||
def gpu_accel_legacy_gva(self):
|
||||
print("- Merging AppleGVA Hardware Accel patches for non-Metal")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_legacy_drm}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
||||
|
||||
def gpu_accel_legacy_extended(self):
|
||||
if self.constants.detected_os == os_data.os_data.monterey:
|
||||
self.add_legacy_dropbox_patch()
|
||||
|
||||
if self.legacy_keyboard_backlight is True:
|
||||
self.add_legacy_keyboard_backlight_patch()
|
||||
|
||||
print("- Merging general legacy Frameworks")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
if self.constants.detected_os > os_data.os_data.big_sur:
|
||||
print("- Merging Monterey WebKit patch")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_ivy}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
print("- Merging general legacy PrivateFrameworks")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
||||
if self.constants.detected_os > os_data.os_data.catalina:
|
||||
# With PatcherSupportPkg v0.2.0, IOHID-Fixup.plist is deprecated and integrated into SkyLight patch set
|
||||
if (Path(self.mount_lauchd) / Path("IOHID-Fixup.plist")).exists():
|
||||
print("- Stripping legacy IOHID-Fixup.plist")
|
||||
utilities.process_status(
|
||||
utilities.elevated(["rm", "-f", f"{self.mount_lauchd}/IOHID-Fixup.plist"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
)
|
||||
else:
|
||||
print("- Disabling Library Validation")
|
||||
utilities.process_status(
|
||||
utilities.elevated(
|
||||
["defaults", "write", "/Library/Preferences/com.apple.security.libraryvalidation.plist", "DisableLibraryValidation", "-bool", "true"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
)
|
||||
)
|
||||
|
||||
def gpu_accel_legacy_extended_ts2(self):
|
||||
print("- Merging TeraScale 2 legacy Frameworks")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_frameworks_path_accel_ts2}/", self.mount_frameworks], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
|
||||
print("- Merging TeraScale 2 PrivateFrameworks")
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{self.constants.payload_apple_private_frameworks_path_accel_ts2}/", self.mount_private_frameworks], stdout=subprocess.PIPE)
|
||||
if self.validate is False:
|
||||
print("- Fixing Acceleration in CMIO")
|
||||
utilities.process_status(subprocess.run(["defaults", "write", "com.apple.cmio", "CMIO_Unit_Input_ASC.DoNotUseOpenCL", "-bool", "true"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
print("- Creating SkylightPlugins folder")
|
||||
utilities.process_status(utilities.elevated(["mkdir", f"{self.mount_application_support}/SkyLightPlugins/"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
|
||||
def patch_root_vol(self):
|
||||
print(f"- Running patches for {self.model}")
|
||||
|
||||
# Before starting, clean out old plugins
|
||||
self.clean_skylight_plugins()
|
||||
|
||||
# Graphics patches
|
||||
if self.nvidia_legacy is True:
|
||||
print("- Installing legacy Nvidia Patches")
|
||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||
print("- Detected supported OS, installing Acceleration Patches")
|
||||
self.added_legacy_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_accel_legacy_nvidia_master()
|
||||
|
||||
elif self.kepler_gpu is True:
|
||||
print("- Installing Kepler Patches")
|
||||
if self.constants.detected_os == os_data.os_data.monterey:
|
||||
print("- Detected supported OS, installing Acceleration Patches")
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_framebuffer_kepler_master()
|
||||
|
||||
elif self.amd_ts1 is True:
|
||||
print("- Installing legacy TeraScale 1 Patches")
|
||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||
print("- Detected supported OS, installing Acceleration Patches")
|
||||
self.added_legacy_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_accel_legacy_ts1_master()
|
||||
|
||||
elif self.amd_ts2 is True:
|
||||
print("- Installing legacy TeraScale 2 Patches")
|
||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||
print("- Detected supported OS, installing Acceleration Patches")
|
||||
self.added_legacy_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_accel_legacy_ts2_master()
|
||||
|
||||
if self.iron_gpu is True:
|
||||
print("- Installing legacy Ironlake Patches")
|
||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||
print("- Detected supported OS, installing Acceleration Patches")
|
||||
self.added_legacy_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_accel_legacy_ironlake_master()
|
||||
|
||||
elif self.sandy_gpu is True:
|
||||
print("- Installing legacy Sandy Bridge Patches")
|
||||
if self.constants.detected_os in self.constants.legacy_accel_support:
|
||||
print("- Detected supported OS, installing Acceleration Patches")
|
||||
self.added_legacy_kexts = True
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_accel_legacy_sandybridge_master()
|
||||
|
||||
elif self.ivy_gpu is True:
|
||||
print("- Installing Ivy Bridge Patches")
|
||||
if self.constants.detected_os == os_data.os_data.monterey:
|
||||
print("- Detected supported OS, installing Acceleration Patches")
|
||||
else:
|
||||
print("- Detected unsupported OS, installing Basic Framebuffer")
|
||||
self.gpu_framebuffer_ivybridge_master()
|
||||
|
||||
if self.amd_ts2 is True and self.constants.detected_os in self.constants.legacy_accel_support and self.constants.allow_ts2_accel is True:
|
||||
# TeraScale 2 patches must be installed after Intel HD3000
|
||||
self.add_new_binaries(sys_patch_data.AddAMDAccel11TS2, self.constants.legacy_amd_path_ts2)
|
||||
|
||||
if self.added_legacy_kexts is True and self.constants.detected_os in self.constants.legacy_accel_support:
|
||||
self.gpu_accel_legacy_extended()
|
||||
if self.amd_ts2 is True and self.constants.allow_ts2_accel is True:
|
||||
self.gpu_accel_legacy_extended_ts2()
|
||||
|
||||
# Misc patches
|
||||
if self.brightness_legacy is True:
|
||||
print("- Installing legacy Brightness Control")
|
||||
self.add_brightness_patch()
|
||||
|
||||
if self.legacy_audio is True:
|
||||
print("- Fixing Volume Control Support")
|
||||
self.add_audio_patch()
|
||||
|
||||
if self.legacy_wifi is True:
|
||||
print("- Installing legacy Wireless support")
|
||||
self.add_wifi_patch()
|
||||
|
||||
if self.legacy_gmux is True:
|
||||
print("- Installing Legacy Mux Brightness support")
|
||||
self.add_legacy_mux_patch()
|
||||
|
||||
self.execute_patchset(self.generate_patchset())
|
||||
|
||||
if self.constants.wxpython_variant is True and self.constants.detected_os >= os_data.os_data.big_sur:
|
||||
self.install_auto_patcher_launch_agent()
|
||||
|
||||
if self.validate is False:
|
||||
self.rebuild_snapshot()
|
||||
self.rebuild_snapshot()
|
||||
|
||||
def generate_patchset(self):
|
||||
all_hardware_patchset = sys_patch_dict.SystemPatchDictionary(self.constants.detected_os)
|
||||
required_patches = {}
|
||||
|
||||
print("- Creating Patch Set for Booted Hardware:")
|
||||
if self.iron_gpu is True:
|
||||
print(" - Adding Intel Ironlake Graphics Patchset")
|
||||
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||
required_patches.update({"Intel Ironlake": all_hardware_patchset["Graphics"]["Intel Ironlake"]})
|
||||
if self.sandy_gpu is True:
|
||||
print(" - Adding Intel Sandy Bridge Graphics Patchset")
|
||||
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||
required_patches.update({"Legacy GVA": all_hardware_patchset["Graphics"]["Legacy GVA"]})
|
||||
required_patches.update({"Intel Sandy Bridge": all_hardware_patchset["Graphics"]["Intel Sandy Bridge"]})
|
||||
if self.ivy_gpu is True:
|
||||
print(" - Adding Intel Ivy Bridge Graphics Patchset")
|
||||
required_patches.update({"Metal Common": all_hardware_patchset["Graphics"]["Metal Common"]})
|
||||
required_patches.update({"Intel Ivy Bridge": all_hardware_patchset["Graphics"]["Intel Ivy Bridge"]})
|
||||
if self.nvidia_legacy is True:
|
||||
print(" - Adding Nvidia Tesla Graphics Patchset")
|
||||
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||
required_patches.update({"Nvidia Tesla": all_hardware_patchset["Graphics"]["Nvidia Tesla"]})
|
||||
if self.kepler_gpu is True:
|
||||
print(" - Adding Nvidia Kepler Graphics Patchset")
|
||||
required_patches.update({"Metal Common": all_hardware_patchset["Graphics"]["Metal Common"]})
|
||||
required_patches.update({"Nvidia Kepler": all_hardware_patchset["Graphics"]["Nvidia Kepler"]})
|
||||
if self.amd_ts1 is True:
|
||||
print(" - Adding AMD TeraScale 1 Graphics Patchset")
|
||||
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||
required_patches.update({"AMD TeraScale 1": all_hardware_patchset["Graphics"]["AMD TeraScale 1"]})
|
||||
if self.amd_ts2 is True:
|
||||
print(" - Adding AMD TeraScale 2 Graphics Patchset")
|
||||
required_patches.update({"Non-Metal Common": all_hardware_patchset["Graphics"]["Non-Metal Common"]})
|
||||
required_patches.update({"AMD TeraScale 2": all_hardware_patchset["Graphics"]["AMD TeraScale 2"]})
|
||||
if self.brightness_legacy is True:
|
||||
print(" - Adding Legacy Brightness Patchset")
|
||||
required_patches.update({"Legacy Brightness": all_hardware_patchset["Brightness"]["Legacy Brightness"]})
|
||||
if self.legacy_audio is True:
|
||||
print(" - Adding Legacy Audio Patchset")
|
||||
if self.model in ["iMac7,1", "iMac8,1"]:
|
||||
required_patches.update({"Legacy Realtek": all_hardware_patchset["Audio"]["Legacy Realtek"]})
|
||||
else:
|
||||
required_patches.update({"Legacy Non-GOP": all_hardware_patchset["Audio"]["Legacy Non-GOP"]})
|
||||
if self.legacy_wifi is True:
|
||||
print(" - Adding Legacy WiFi Patchset")
|
||||
required_patches.update({"Legacy WiFi": all_hardware_patchset["Networking"]["Legacy WiFi"]})
|
||||
if self.legacy_gmux is True:
|
||||
print(" - Adding Legacy GMUX Patchset")
|
||||
required_patches.update({"Legacy GMUX": all_hardware_patchset["Miscellaneous"]["Legacy GMUX"]})
|
||||
if self.legacy_keyboard_backlight:
|
||||
print(" - Adding Legacy Keyboard Backlight Patchset")
|
||||
required_patches.update({"Legacy Keyboard Backlight": all_hardware_patchset["Miscellaneous"]["Legacy Keyboard Backlight"]})
|
||||
|
||||
return required_patches
|
||||
|
||||
|
||||
def execute_patchset(self, required_patches):
|
||||
source_files_path = str(self.constants.payload_local_binaries_root_path)
|
||||
print("- Running Preflight Checks before patching")
|
||||
# Make sure old SkyLight plugins aren't being used
|
||||
self.clean_skylight_plugins()
|
||||
# Make sure SNB kexts are compatible with the host
|
||||
if "Intel Sandy Bridge" in required_patches:
|
||||
if self.computer.reported_board_id not in self.constants.sandy_board_id_stock:
|
||||
print(f"- Found unspported Board ID {self.computer.reported_board_id}, performing AppleIntelSNBGraphicsFB bin patching")
|
||||
board_to_patch = generate_smbios.determine_best_board_id_for_sandy(self.computer.reported_board_id, self.computer.gpus)
|
||||
print(f"- Replacing {board_to_patch} with {self.computer.reported_board_id}")
|
||||
|
||||
board_to_patch_hex = bytes.fromhex(board_to_patch.encode('utf-8').hex())
|
||||
reported_board_hex = bytes.fromhex(self.computer.reported_board_id.encode('utf-8').hex())
|
||||
|
||||
if len(board_to_patch_hex) != len(reported_board_hex):
|
||||
print(f"- Error: Board ID {self.computer.reported_board_id} is not the same length as {board_to_patch}")
|
||||
raise Exception("Host's Board ID is not the same length as the kext's Board ID, cannot patch!!!")
|
||||
else:
|
||||
path = source_files_path + "10.13.6/System/Library/Extensions/AppleIntelSNBGraphicsFB.kext/Contents/MacOS/AppleIntelSNBGraphicsFB"
|
||||
if Path(path).exists:
|
||||
with open(path, 'rb') as f:
|
||||
data = f.read()
|
||||
data = data.replace(board_to_patch_hex, reported_board_hex)
|
||||
with open(path, 'wb') as f:
|
||||
f.write(data)
|
||||
else:
|
||||
raise Exception("Failed to find AppleIntelSNBGraphicsFB.kext, cannot patch!!!")
|
||||
|
||||
print("- Finished Preflight, starting patching")
|
||||
for patch in required_patches:
|
||||
print("- Installing Patchset: " + patch)
|
||||
if "Remove" in required_patches[patch]:
|
||||
for remove_patch_directory in required_patches[patch]["Remove"]:
|
||||
print("- Remove Files at: " + remove_patch_directory)
|
||||
for remove_patch_file in required_patches[patch]["Remove"][remove_patch_directory]:
|
||||
destination_folder_path = str(self.mount_location) + remove_patch_directory
|
||||
self.remove_file(destination_folder_path, remove_patch_file)
|
||||
|
||||
if "Install" in required_patches[patch]:
|
||||
for install_patch_directory in required_patches[patch]["Install"]:
|
||||
print(f"- Handling Installs in: {install_patch_directory}")
|
||||
for install_file in required_patches[patch]["Install"][install_patch_directory]:
|
||||
source_folder_path = source_files_path + "/" + required_patches[patch]['Install'][install_patch_directory][install_file] + install_patch_directory
|
||||
destination_folder_path = str(self.mount_location) + install_patch_directory
|
||||
self.install_new_file(source_folder_path, destination_folder_path, install_file)
|
||||
|
||||
if "Install Non-Root" in required_patches[patch]:
|
||||
for install_patch_directory in required_patches[patch]["Install Non-Root"]:
|
||||
print(f"- Handling Non-Root Installs in: {install_patch_directory}")
|
||||
for install_file in required_patches[patch]["Install Non-Root"][install_patch_directory]:
|
||||
source_folder_path = source_files_path + "/" + required_patches[patch]['Install Non-Root'][install_patch_directory][install_file] + install_patch_directory
|
||||
destination_folder_path = str(self.mount_location_data) + install_patch_directory
|
||||
self.install_new_file(source_folder_path, destination_folder_path, install_file)
|
||||
|
||||
if "Processes" in required_patches[patch]:
|
||||
for process in required_patches[patch]["Processes"]:
|
||||
# Some processes need sudo, however we cannot directly call sudo in some scenarios
|
||||
# Instead, call elevated funtion and strip sudo from argument
|
||||
process_array = process.split(" ")
|
||||
if required_patches[patch]["Processes"][process] is True:
|
||||
utilities.process_status(utilities.elevated(process_array, stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
else:
|
||||
utilities.process_status(subprocess.run(process_array, stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
def install_new_file(self, source_folder, destination_folder, file_name):
|
||||
# .frameworks are merged
|
||||
# .kexts and .apps are deleted and replaced
|
||||
file_name_str = str(file_name)
|
||||
if file_name_str.endswith(".kext") or file_name_str.endswith(".app") or file_name_str.endswith(".bundle") or file_name_str.endswith(".plugin"):
|
||||
if Path(destination_folder + "/" + file_name).exists():
|
||||
print(f" - Found existing {file_name}, overwritting...")
|
||||
utilities.process_status(utilities.elevated(["rm", "-R", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
else:
|
||||
print(" - Installing: " + file_name)
|
||||
utilities.process_status(utilities.elevated(["cp", "-R", f"{source_folder}/{file_name}", destination_folder], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
elif file_name_str.endswith(".framework"):
|
||||
# merge with rsync
|
||||
print(" - Installing: " + file_name)
|
||||
utilities.elevated(["rsync", "-r", "-i", "-a", f"{source_folder}/{file_name}", f"{destination_folder}/"], stdout=subprocess.PIPE)
|
||||
utilities.process_status(utilities.elevated(["chmod", "-Rf", "755", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chown", "-Rf", "root:wheel", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
else:
|
||||
# Assume it's an individual file, replace as normal
|
||||
if Path(destination_folder + "/" + file_name).exists():
|
||||
print(f" - Found existing {file_name}, overwritting...")
|
||||
utilities.process_status(utilities.elevated(["rm", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
else:
|
||||
print(" - Installing: " + file_name)
|
||||
utilities.process_status(utilities.elevated(["cp", f"{source_folder}/{file_name}", destination_folder], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chmod", "755", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
utilities.process_status(utilities.elevated(["chown", "root:wheel", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
def remove_file(self, destination_folder, file_name):
|
||||
if Path(destination_folder + "/" + file_name).exists():
|
||||
print(" - Removing: " + file_name)
|
||||
if Path(destination_folder + "/" + file_name).is_dir():
|
||||
utilities.process_status(utilities.elevated(["rm", "-R", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
else:
|
||||
utilities.process_status(utilities.elevated(["rm", f"{destination_folder}/{file_name}"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
|
||||
|
||||
|
||||
def check_files(self):
|
||||
if Path(self.constants.payload_apple_root_path).exists():
|
||||
if Path(self.constants.payload_local_binaries_root_path).exists():
|
||||
print("- Found local Apple Binaries")
|
||||
if self.constants.gui_mode is False:
|
||||
patch_input = input("Would you like to redownload?(y/n): ")
|
||||
if patch_input in {"y", "Y", "yes", "Yes"}:
|
||||
shutil.rmtree(Path(self.constants.payload_apple_root_path))
|
||||
shutil.rmtree(Path(self.constants.payload_local_binaries_root_path))
|
||||
output = self.download_files()
|
||||
else:
|
||||
output = self.download_files()
|
||||
@@ -628,32 +435,26 @@ class PatchSysVolume:
|
||||
|
||||
def download_files(self):
|
||||
if self.constants.gui_mode is False or "Library/InstallerSandboxes/" in str(self.constants.payload_path):
|
||||
download_result, os_ver, extensions_link, framework_link = sys_patch_download.grab_patcher_support_pkg(self.constants).download_files()
|
||||
download_result, os_ver, link = sys_patch_download.grab_patcher_support_pkg(self.constants).download_files()
|
||||
else:
|
||||
download_result = True
|
||||
os_ver, extensions_link, framework_link = sys_patch_download.grab_patcher_support_pkg(self.constants).generate_pkg_link()
|
||||
os_ver, link = sys_patch_download.grab_patcher_support_pkg(self.constants).generate_pkg_link()
|
||||
|
||||
if download_result and self.constants.payload_apple_root_path_zip.exists() and self.constants.payload_universal_extensions_zip_path.exists():
|
||||
print("- Download completed")
|
||||
print("- Unzipping download...")
|
||||
if download_result and self.constants.payload_local_binaries_root_path_zip.exists():
|
||||
print("- Unzipping binaries...")
|
||||
try:
|
||||
utilities.process_status(subprocess.run(["unzip", self.constants.payload_apple_root_path_zip], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path))
|
||||
utilities.process_status(subprocess.run(["unzip", self.constants.payload_universal_extensions_zip_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.constants.payload_path))
|
||||
utilities.process_status(subprocess.run(["ditto", "-V", "-x", "-k", "--sequesterRsrc", "--rsrc", self.constants.payload_local_binaries_root_path_zip, self.constants.payload_path]))
|
||||
print("- Renaming folder")
|
||||
os.rename(self.constants.payload_path / Path(os_ver), self.constants.payload_apple_root_path)
|
||||
Path(self.constants.payload_apple_root_path_zip).unlink()
|
||||
Path(self.constants.payload_universal_extensions_zip_path).unlink()
|
||||
print("- Binaries downloaded to:")
|
||||
print(self.constants.payload_path)
|
||||
return self.constants.payload_apple_root_path
|
||||
return self.constants.payload_local_binaries_root_path
|
||||
except zipfile.BadZipFile:
|
||||
print("- Couldn't unzip")
|
||||
return None
|
||||
else:
|
||||
if self.constants.gui_mode is True:
|
||||
print("- Download failed, please verify the below links work:")
|
||||
print(framework_link)
|
||||
print(extensions_link)
|
||||
print("- Download failed, please verify the below link work:")
|
||||
print(link)
|
||||
print("\nIf you continue to have issues, try using the Offline builds")
|
||||
print("located on Github next to the other builds")
|
||||
else:
|
||||
@@ -705,57 +506,6 @@ class PatchSysVolume:
|
||||
]
|
||||
)
|
||||
|
||||
def verify_patch_allowed(self):
|
||||
sip = sip_data.system_integrity_protection.root_patch_sip_big_sur if self.constants.detected_os > os_data.os_data.catalina else sip_data.system_integrity_protection.root_patch_sip_mojave
|
||||
if sip == sip_data.system_integrity_protection.root_patch_sip_mojave:
|
||||
sip_value = "For Hackintoshes, please set csr-active-config to '03060000' (0x603)\nFor non-OpenCore Macs, please run 'csrutil disable' in RecoveryOS"
|
||||
else:
|
||||
sip_value = (
|
||||
"For Hackintoshes, please set csr-active-config to '02080000' (0x802)\nFor non-OpenCore Macs, please run 'csrutil disable' and \n'csrutil authenticated-root disable' in RecoveryOS"
|
||||
)
|
||||
if self.sip_enabled is True:
|
||||
print("\nCannot patch! Please disable System Integrity Protection (SIP).")
|
||||
print("Disable SIP in Patcher Settings and Rebuild OpenCore\n")
|
||||
print("Ensure the following bits are set for csr-active-config:")
|
||||
print("\n".join(sip))
|
||||
print(sip_value)
|
||||
|
||||
if self.sbm_enabled is True:
|
||||
print("\nCannot patch! Please disable Apple Secure Boot.")
|
||||
print("Disable SecureBootModel in Patcher Settings and Rebuild OpenCore")
|
||||
print("For Hackintoshes, set SecureBootModel to Disabled")
|
||||
|
||||
if self.fv_enabled is True:
|
||||
print("\nCannot patch! Please disable FileVault.")
|
||||
print("For OCLP Macs, please rebuild your config with 0.2.5 or newer")
|
||||
print("For others, Go to System Preferences -> Security and disable FileVault")
|
||||
|
||||
if self.amfi_enabled is True and self.amfi_must_disable is True:
|
||||
print("\nCannot patch! Please disable AMFI.")
|
||||
print("For Hackintoshes, please add amfi_get_out_of_my_way=1 to boot-args")
|
||||
|
||||
if self.check_board_id is True and (self.computer.reported_board_id not in self.constants.sandy_board_id and self.computer.reported_board_id not in self.constants.sandy_board_id_stock):
|
||||
print("\nCannot patch! Board ID not supported by AppleIntelSNBGraphicsFB")
|
||||
print(f"Detected Board ID: {self.computer.reported_board_id}")
|
||||
print("Please ensure your Board ID is listed below:")
|
||||
for board in self.constants.sandy_board_id:
|
||||
print(f"- {board} ({generate_smbios.find_model_off_board(board)})")
|
||||
for board in self.constants.sandy_board_id_stock:
|
||||
print(f"- {board} ({generate_smbios.find_model_off_board(board)})")
|
||||
|
||||
self.bad_board_id = True
|
||||
|
||||
if self.dosdude_patched is True:
|
||||
print("\nCannot patch! Detected machine has already been patched by another patcher")
|
||||
print("Please ensure your install is either clean or patched with OpenCore Legacy Patcher")
|
||||
|
||||
if any(
|
||||
[self.sip_enabled, self.sbm_enabled, self.fv_enabled, self.dosdude_patched, self.amfi_enabled if self.amfi_must_disable else False, self.bad_board_id if self.check_board_id else False]
|
||||
):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
# Entry Function
|
||||
def start_patch(self):
|
||||
print("- Starting Patch Process")
|
||||
@@ -772,9 +522,8 @@ class PatchSysVolume:
|
||||
change_menu = "y"
|
||||
print("- Continuing root patching")
|
||||
if change_menu in ["y", "Y"]:
|
||||
print("- Continuing with Patching")
|
||||
print("- Verifying whether Root Patching possible")
|
||||
if self.verify_patch_allowed() is True:
|
||||
if sys_patch_detect.detect_root_patch(self.computer.real_model, self.constants).verify_patch_allowed(print_errors=not self.constants.wxpython_variant) is True:
|
||||
print("- Patcher is capable of patching")
|
||||
if self.check_files():
|
||||
self.find_mount_root_vol(True)
|
||||
@@ -786,7 +535,7 @@ class PatchSysVolume:
|
||||
|
||||
def start_unpatch(self):
|
||||
print("- Starting Unpatch Process")
|
||||
if self.verify_patch_allowed() is True:
|
||||
if sys_patch_detect.detect_root_patch(self.computer.real_model, self.constants).verify_patch_allowed(print_errors=not self.constants.wxpython_variant) is True:
|
||||
self.find_mount_root_vol(False)
|
||||
if self.constants.gui_mode is False:
|
||||
input("\nPress [ENTER] to return to the main menu")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Used when supplying data to sys_patch.py
|
||||
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
|
||||
|
||||
from resources import constants, device_probe, utilities
|
||||
from resources import constants, device_probe, utilities, generate_smbios
|
||||
from data import model_array, os_data, sip_data
|
||||
|
||||
class detect_root_patch:
|
||||
@@ -182,13 +182,52 @@ class detect_root_patch:
|
||||
|
||||
return self.root_patch_dict
|
||||
|
||||
def verify_patch_allowed(self):
|
||||
def verify_patch_allowed(self, print_errors=False):
|
||||
sip = sip_data.system_integrity_protection.root_patch_sip_big_sur if self.constants.detected_os > os_data.os_data.catalina else sip_data.system_integrity_protection.root_patch_sip_mojave
|
||||
self.sip_enabled, self.sbm_enabled, self.amfi_enabled, self.fv_enabled, self.dosdude_patched = utilities.patching_status(sip, self.constants.detected_os)
|
||||
if sip == sip_data.system_integrity_protection.root_patch_sip_mojave:
|
||||
sip_value = "For Hackintoshes, please set csr-active-config to '03060000' (0x603)\nFor non-OpenCore Macs, please run 'csrutil disable' in RecoveryOS"
|
||||
else:
|
||||
sip_value = (
|
||||
"For Hackintoshes, please set csr-active-config to '02080000' (0x802)\nFor non-OpenCore Macs, please run 'csrutil disable' and \n'csrutil authenticated-root disable' in RecoveryOS"
|
||||
)
|
||||
if print_errors is True:
|
||||
if self.sip_enabled is True:
|
||||
print("\nCannot patch! Please disable System Integrity Protection (SIP).")
|
||||
print("Disable SIP in Patcher Settings and Rebuild OpenCore\n")
|
||||
print("Ensure the following bits are set for csr-active-config:")
|
||||
print("\n".join(sip))
|
||||
print(sip_value)
|
||||
|
||||
if self.sbm_enabled is True:
|
||||
print("\nCannot patch! Please disable Apple Secure Boot.")
|
||||
print("Disable SecureBootModel in Patcher Settings and Rebuild OpenCore")
|
||||
print("For Hackintoshes, set SecureBootModel to Disabled")
|
||||
|
||||
if self.fv_enabled is True:
|
||||
print("\nCannot patch! Please disable FileVault.")
|
||||
print("For OCLP Macs, please rebuild your config with 0.2.5 or newer")
|
||||
print("For others, Go to System Preferences -> Security and disable FileVault")
|
||||
|
||||
if self.amfi_enabled is True and self.amfi_must_disable is True:
|
||||
print("\nCannot patch! Please disable AMFI.")
|
||||
print("For Hackintoshes, please add amfi_get_out_of_my_way=1 to boot-args")
|
||||
|
||||
if self.dosdude_patched is True:
|
||||
print("\nCannot patch! Detected machine has already been patched by another patcher")
|
||||
print("Please ensure your install is either clean or patched with OpenCore Legacy Patcher")
|
||||
|
||||
if self.check_board_id is True and (self.computer.reported_board_id not in self.constants.sandy_board_id and self.computer.reported_board_id not in self.constants.sandy_board_id_stock):
|
||||
self.bad_board_id = True
|
||||
|
||||
if print_errors is True:
|
||||
print("\nCannot patch! Board ID not supported by AppleIntelSNBGraphicsFB")
|
||||
print(f"Detected Board ID: {self.computer.reported_board_id}")
|
||||
print("Please ensure your Board ID is listed below:")
|
||||
for board in self.constants.sandy_board_id:
|
||||
print(f"- {board} ({generate_smbios.find_model_off_board(board)})")
|
||||
for board in self.constants.sandy_board_id_stock:
|
||||
print(f"- {board} ({generate_smbios.find_model_off_board(board)})")
|
||||
|
||||
if any(
|
||||
[self.sip_enabled, self.sbm_enabled, self.fv_enabled, self.dosdude_patched, self.amfi_enabled if self.amfi_must_disable else False, self.bad_board_id if self.check_board_id else False]
|
||||
):
|
||||
|
||||
@@ -22,31 +22,23 @@ class grab_patcher_support_pkg:
|
||||
os_ver = "10.14-Mojave"
|
||||
else:
|
||||
raise Exception(f"Unsupported OS: {self.constants.detected_os}")
|
||||
framework_link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/{os_ver}.zip"
|
||||
extensions_link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/Universal-Extensions.zip"
|
||||
return os_ver, extensions_link, framework_link
|
||||
link = f"{self.constants.url_patcher_support_pkg}{self.constants.patcher_support_pkg_version}/Universal-Binaries.zip"
|
||||
return os_ver, link
|
||||
|
||||
def download_files(self):
|
||||
os_ver, extensions_link, framework_link = self.generate_pkg_link()
|
||||
if Path(self.constants.payload_apple_root_path).exists():
|
||||
os_ver, link = self.generate_pkg_link()
|
||||
if Path(self.constants.payload_local_binaries_root_path).exists():
|
||||
print("- Removing old Apple Binaries folder")
|
||||
# Delete folder
|
||||
shutil.rmtree(self.constants.payload_apple_root_path)
|
||||
if Path(self.constants.payload_apple_root_path_zip).exists():
|
||||
print("- Removing old Apple Binaries zip")
|
||||
Path(self.constants.payload_apple_root_path_zip).unlink()
|
||||
shutil.rmtree(self.constants.payload_local_binaries_root_path)
|
||||
|
||||
download_result = None
|
||||
local_framework_zip = Path(self.constants.payload_path) / f"{os_ver}.zip"
|
||||
local_extensions_zip = Path(self.constants.payload_path) / f"Universal-Extensions.zip"
|
||||
if Path(local_framework_zip).exists() and Path(local_extensions_zip).exists():
|
||||
print(f"- Found local {os_ver} zip, skipping download")
|
||||
print(f"- Duplicating into Apple.zip")
|
||||
shutil.copy(local_framework_zip, self.constants.payload_apple_root_path_zip)
|
||||
local_zip = Path(self.constants.payload_path) / f"Universal-Binaries.zip"
|
||||
if Path(local_zip).exists():
|
||||
print(f"- Found local {local_zip} zip, skipping download")
|
||||
download_result = True
|
||||
else:
|
||||
print(f"- No local version found, donwloading...")
|
||||
if utilities.download_file(extensions_link, self.constants.payload_universal_extensions_zip_path):
|
||||
download_result = utilities.download_file(framework_link, self.constants.payload_apple_root_path_zip)
|
||||
print(f"- No local version found, downloading...")
|
||||
download_result = utilities.download_file(link, self.constants.payload_local_binaries_root_path_zip)
|
||||
|
||||
return download_result, os_ver, extensions_link, framework_link
|
||||
return download_result, os_ver, link
|
||||
Reference in New Issue
Block a user