mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-18 13:20:00 +10:00
sys_patch_detect.py: Switch to kdk_handler for KDK detection
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
# Used when supplying data to sys_patch.py
|
# Used when supplying data to sys_patch.py
|
||||||
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
|
# Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk
|
||||||
|
|
||||||
from resources import constants, device_probe, utilities, amfi_detect, network_handler
|
from resources import constants, device_probe, utilities, amfi_detect, network_handler, kdk_handler
|
||||||
from resources.sys_patch import sys_patch_helpers
|
from resources.sys_patch import sys_patch_helpers
|
||||||
from data import model_array, os_data, sip_data, sys_patch_dict, smbios_data, cpu_data
|
from data import model_array, os_data, sip_data, sys_patch_dict, smbios_data, cpu_data
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ class detect_root_patch:
|
|||||||
return utilities.check_kext_loaded("WhateverGreen", self.constants.detected_os)
|
return utilities.check_kext_loaded("WhateverGreen", self.constants.detected_os)
|
||||||
|
|
||||||
def check_kdk(self):
|
def check_kdk(self):
|
||||||
if sys_patch_helpers.sys_patch_helpers(self.constants).determine_kdk_present() is None:
|
if kdk_handler.KernelDebugKitObject(self.constants, self.constants.detected_os_build, self.constants.detected_os_version, passive=True).kdk_already_installed == "":
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import plistlib
|
|||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from resources import constants, bplist
|
from resources import kdk_handler, bplist
|
||||||
|
|
||||||
class sys_patch_helpers:
|
class sys_patch_helpers:
|
||||||
|
|
||||||
@@ -104,49 +104,6 @@ class sys_patch_helpers:
|
|||||||
logging.info("- Successfully installed KDK")
|
logging.info("- Successfully installed KDK")
|
||||||
|
|
||||||
|
|
||||||
def determine_kdk_present(self, match_closest=False, override_build=None):
|
|
||||||
# Check if KDK is present
|
|
||||||
# If 'match_closest' is True, will provide the closest match to the reported KDK
|
|
||||||
|
|
||||||
kdk_array = []
|
|
||||||
|
|
||||||
search_build = self.constants.detected_os_build
|
|
||||||
if override_build:
|
|
||||||
search_build = override_build
|
|
||||||
|
|
||||||
if not Path("/Library/Developer/KDKs").exists():
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
for kdk_folder in Path("/Library/Developer/KDKs").iterdir():
|
|
||||||
if not kdk_folder.name.endswith(".kdk"):
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Ensure direct match
|
|
||||||
if kdk_folder.name.endswith(f"{search_build}.kdk"):
|
|
||||||
# Verify that the KDK is valid
|
|
||||||
if (kdk_folder / Path("System/Library/Extensions/System.kext/PlugIns/Libkern.kext/Libkern")).exists():
|
|
||||||
return kdk_folder
|
|
||||||
if match_closest is True:
|
|
||||||
# ex: KDK_13.0_22A5266r.kdk -> 22A5266r.kdk -> 22A5266r
|
|
||||||
try:
|
|
||||||
build = kdk_folder.name.split("_")[2].split(".")[0]
|
|
||||||
# Don't append if Darwin Major is different
|
|
||||||
if build.startswith(str(self.constants.detected_os)):
|
|
||||||
kdk_array.append(build)
|
|
||||||
except IndexError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if match_closest is True:
|
|
||||||
result = os_data.os_conversion.find_largest_build(kdk_array)
|
|
||||||
logging.info(f"- Closest KDK match to {search_build}: {result}")
|
|
||||||
for kdk_folder in Path("/Library/Developer/KDKs").iterdir():
|
|
||||||
if kdk_folder.name.endswith(f"{result}.kdk"):
|
|
||||||
# Verify that the KDK is valid
|
|
||||||
if (kdk_folder / Path("System/Library/Extensions/System.kext/PlugIns/Libkern.kext/Libkern")).exists():
|
|
||||||
return kdk_folder
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def disable_window_server_caching(self):
|
def disable_window_server_caching(self):
|
||||||
# On legacy GCN GPUs, the WindowServer cache generated creates
|
# On legacy GCN GPUs, the WindowServer cache generated creates
|
||||||
|
|||||||
Reference in New Issue
Block a user