From 43be00e9e72ff6cce56d3e4fb177078f7817ee3d Mon Sep 17 00:00:00 2001 From: Dhinak G <17605561+dhinakg@users.noreply.github.com> Date: Wed, 26 Jul 2023 08:29:46 -0400 Subject: [PATCH] Add AMFIPass (#1051) --- .gitignore | 1 + Build-Binary.command | 7 +- docs/LICENSE.md | 1 + payloads/Config/config.plist | 16 +++ .../Acidanthera/AMFIPass-v1.3.1-RELEASE.zip | Bin 0 -> 174593 bytes resources/build/security.py | 3 + resources/constants.py | 34 ++++- resources/defaults.py | 32 ++++- resources/device_probe.py | 23 ++-- resources/kdk_handler.py | 2 +- resources/sys_patch/sys_patch.py | 3 +- resources/sys_patch/sys_patch_auto.py | 17 ++- resources/sys_patch/sys_patch_detect.py | 34 +++-- resources/updates.py | 122 ++++++++++-------- resources/utilities.py | 53 +++++--- resources/wx_gui/gui_main_menu.py | 31 +++-- resources/wx_gui/gui_update.py | 6 +- 17 files changed, 247 insertions(+), 138 deletions(-) create mode 100644 payloads/Kexts/Acidanthera/AMFIPass-v1.3.1-RELEASE.zip diff --git a/.gitignore b/.gitignore index 64180bd6f..e8b28230f 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ __pycache__/ /payloads/OpenCore-Legacy-Patcher /payloads/InstallAssistant.pkg.integrityDataV1 /payloads.dmg +/Universal-Binaries.dmg /payloads/OpenCore-Legacy-Patcher-*.plist /payloads/KDK.dmg *.log diff --git a/Build-Binary.command b/Build-Binary.command index 94b5da9ea..df8ab6fe7 100755 --- a/Build-Binary.command +++ b/Build-Binary.command @@ -20,7 +20,7 @@ class CreateBinary: Library for creating OpenCore-Patcher application This script's main purpose is to handle the following: - - Download external dependancies (ex. PatcherSupportPkg) + - Download external dependencies (ex. PatcherSupportPkg) - Convert payloads directory into DMG - Build Binary via Pyinstaller - Patch 'LC_VERSION_MIN_MACOSX' to OS X 10.10 @@ -275,7 +275,10 @@ class CreateBinary: for resource in required_resources: if Path(f"./{resource}").exists(): if self.args.reset_binaries: - print(f"- Removing old {resource}") + print(f" - Removing old {resource}") + # Just to be safe + assert resource, "Resource cannot be empty" + assert resource not in ("/", "."), "Resource cannot be root" rm_output = subprocess.run( ["rm", "-rf", f"./{resource}"], stdout=subprocess.PIPE, stderr=subprocess.PIPE diff --git a/docs/LICENSE.md b/docs/LICENSE.md index 21172e2b4..96a2d189a 100644 --- a/docs/LICENSE.md +++ b/docs/LICENSE.md @@ -18,6 +18,7 @@ This patcher is made of multiple external applications from different people and * [telemetrap](https://forums.macrumors.com/threads/mp3-1-others-sse-4-2-emulation-to-enable-amd-metal-driver.2206682/post-28447707) - Syncretic * [SurPlus](https://github.com/reenigneorcim/SurPlus) - Syncretic * [VMM Patch Set](https://github.com/dortania/OpenCore-Legacy-Patcher/blob/4a8f61a01da72b38a4b2250386cc4b497a31a839/payloads/Config/config.plist#L1222-L1281) - parrotgeek1 + * AMFIPass - Dhinak G * Apple Binaries - Apple Inc. * All other patches - respective authors diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist index c783fb0ff..301a81b50 100644 --- a/payloads/Config/config.plist +++ b/payloads/Config/config.plist @@ -1584,6 +1584,22 @@ Arch x86_64 + BundlePath + AMFIPass.kext + Comment + AMFIPass + Enabled + + ExecutablePath + Contents/MacOS/AMFIPass + MaxKernel + + MinKernel + 20.0.0 + PlistPath + Contents/Info.plist + + Comment Aquantia Ethernet Patch Enabled diff --git a/payloads/Kexts/Acidanthera/AMFIPass-v1.3.1-RELEASE.zip b/payloads/Kexts/Acidanthera/AMFIPass-v1.3.1-RELEASE.zip new file mode 100644 index 0000000000000000000000000000000000000000..06a04afcf283d6d809903e4512e207cf2afb0906 GIT binary patch literal 174593 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żUETm!<=RnMS4;`o}W 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 C@2ceh literal 0 HcmV?d00001 diff --git a/resources/build/security.py b/resources/build/security.py index f0818c62b..ff8936998 100644 --- a/resources/build/security.py +++ b/resources/build/security.py @@ -82,3 +82,6 @@ class BuildSecurity: support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (1)")["Enabled"] = True support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (2) Legacy")["Enabled"] = True support.BuildSupport(self.model, self.constants, self.config).get_item_by_kv(self.config["Kernel"]["Patch"], "Comment", "Reroute kern.hv_vmm_present patch (2) Ventura")["Enabled"] = True + + logging.info("- Enabling AMFIPass") + support.BuildSupport(self.model, self.constants, self.config).enable_kext("AMFIPass.kext", self.constants.amfipass_version, self.constants.amfipass_path) diff --git a/resources/constants.py b/resources/constants.py index 16379771c..429aa8ee5 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -4,6 +4,7 @@ from pathlib import Path from typing import Optional +from packaging import version from resources import device_probe from data import os_data @@ -78,13 +79,15 @@ class Constants: ## Dortania ## https://github.com/dortania - self.backlight_injector_version: str = "1.1.0" # BacklightInjector - self.backlight_injectorA_version: str = "1.0.0" # BacklightInjector (iMac9,1) - self.smcspoof_version: str = "1.0.0" # SMC-Spoof - self.mce_version: str = "1.0.0" # AppleMCEReporterDisabler - self.btspoof_version: str = "1.0.0" # Bluetooth-Spoof - self.aspp_override_version: str = "1.0.1" # ACPI_SMC_PlatformPlugin Override - self.rsrhelper_version: str = "1.0.0" # RSRHelper + self.backlight_injector_version: str = "1.1.0" # BacklightInjector + self.backlight_injectorA_version: str = "1.0.0" # BacklightInjector (iMac9,1) + self.smcspoof_version: str = "1.0.0" # SMC-Spoof + self.mce_version: str = "1.0.0" # AppleMCEReporterDisabler + self.btspoof_version: str = "1.0.0" # Bluetooth-Spoof + self.aspp_override_version: str = "1.0.1" # ACPI_SMC_PlatformPlugin Override + self.rsrhelper_version: str = "1.0.0" # RSRHelper + self.amfipass_version: str = "1.3.1" # AMFIPass + self.amfipass_compatibility_version: str = "1.2.1" # Minimum AMFIPass version required ## Syncretic ## https://forums.macrumors.com/members/syncretic.1173816/ @@ -232,6 +235,18 @@ class Constants: os_data.os_data.ventura, ] + @property + def special_build(self): + """ + Special builds are used for testing. They do not get updates through the updater + """ + + try: + version.parse(self.patcher_version) + return False + except version.InvalidVersion: + return True + # Payload Location # Support Disk Images @@ -489,6 +504,11 @@ class Constants: def rsrhelper_path(self): return self.payload_kexts_path / Path(f"Acidanthera/RSRHelper-v{self.rsrhelper_version}-{self.kext_variant}.zip") + @property + def amfipass_path(self): + # AMFIPass is release only + return self.payload_kexts_path / Path(f"Acidanthera/AMFIPass-v{self.amfipass_version}-RELEASE.zip") + @property def innie_path(self): return self.payload_kexts_path / Path(f"Misc/Innie-v{self.innie_version}-{self.kext_variant}.zip") diff --git a/resources/defaults.py b/resources/defaults.py index 0e061ef49..d654787d0 100644 --- a/resources/defaults.py +++ b/resources/defaults.py @@ -49,7 +49,7 @@ class GenerateDefaults: self._networking_probe() self._misc_hardwares_probe() self._smbios_probe() - + self._check_amfipass_supported() def _general_probe(self) -> None: """ @@ -309,4 +309,32 @@ class GenerateDefaults: if is_key_enabled not in ["false", "0"]: subprocess.run(["defaults", "write", "-g", key, "-bool", "true"]) - subprocess.run(["defaults", "write", "-g", "Amy.MenuBar2Beta", "-bool", "false"]) \ No newline at end of file + subprocess.run(["defaults", "write", "-g", "Amy.MenuBar2Beta", "-bool", "false"]) + + def _check_amfipass_supported(self) -> None: + """ + Check if root volume supports AMFIPass + + The basic requirements of this function are: + - The host is the target + - Root volume doesn't have adhoc signed binaries + + If all of these conditions are met, it is safe to disable AMFI and CS_LV. Otherwise, for safety, leave it be. + """ + + if not self.host_is_target: + # Unknown whether the host is using old binaries + # Rebuild it once you are on the host + return + + # Check for adhoc signed binaries + if self.constants.computer.oclp_sys_signed is False: + # Root patch with new binaries, then reboot + return + + # Note: simply checking the authority is not enough, as the authority can be spoofed + # (but do we really care? this is just a simple check) + # Note: the cert will change + + self.constants.disable_amfi = False + self.constants.disable_cs_lv = False diff --git a/resources/device_probe.py b/resources/device_probe.py index f21479d92..1c129eae0 100644 --- a/resources/device_probe.py +++ b/resources/device_probe.py @@ -604,6 +604,7 @@ class Computer: oclp_sys_version: Optional[str] = None oclp_sys_date: Optional[str] = None oclp_sys_url: Optional[str] = None + oclp_sys_signed: Optional[bool] = False firmware_vendor: Optional[str] = None rosetta_active: Optional[bool] = False @@ -927,15 +928,19 @@ class Computer: def oclp_sys_patch_probe(self): path = Path("/System/Library/CoreServices/OpenCore-Legacy-Patcher.plist") - if path.exists(): - sys_plist = plistlib.load(path.open("rb")) - if sys_plist: - if "OpenCore Legacy Patcher" in sys_plist: - self.oclp_sys_version = sys_plist["OpenCore Legacy Patcher"] - if "Time Patched" in sys_plist: - self.oclp_sys_date = sys_plist["Time Patched"] - if "Commit URL" in sys_plist: - self.oclp_sys_url = sys_plist["Commit URL"] + if not path.exists(): + self.oclp_sys_signed = True # No plist, so assume root is valid + return + sys_plist = plistlib.load(path.open("rb")) + if sys_plist: + if "OpenCore Legacy Patcher" in sys_plist: + self.oclp_sys_version = sys_plist["OpenCore Legacy Patcher"] + if "Time Patched" in sys_plist: + self.oclp_sys_date = sys_plist["Time Patched"] + if "Commit URL" in sys_plist: + self.oclp_sys_url = sys_plist["Commit URL"] + if "Custom Signature" in sys_plist: + self.oclp_sys_signed = sys_plist["Custom Signature"] def check_rosetta(self): result = subprocess.run("sysctl -in sysctl.proc_translated".split(), stdout=subprocess.PIPE).stdout.decode() diff --git a/resources/kdk_handler.py b/resources/kdk_handler.py index 0c59bf13d..fd31b27e2 100644 --- a/resources/kdk_handler.py +++ b/resources/kdk_handler.py @@ -20,7 +20,7 @@ from data import os_data KDK_INSTALL_PATH: str = "/Library/Developer/KDKs" KDK_INFO_PLIST: str = "KDKInfo.plist" -KDK_API_LINK: str = "https://raw.githubusercontent.com/dortania/KdkSupportPkg/gh-pages/manifest.json" +KDK_API_LINK: str = "https://dortania.github.io/KdkSupportPkg/manifest.json" KDK_ASSET_LIST: list = None diff --git a/resources/sys_patch/sys_patch.py b/resources/sys_patch/sys_patch.py index 6dcf7749c..5e2bd4238 100644 --- a/resources/sys_patch/sys_patch.py +++ b/resources/sys_patch/sys_patch.py @@ -67,7 +67,6 @@ class PatchSysVolume: self.skip_root_kmutil_requirement = self.hardware_details["Settings: Supports Auxiliary Cache"] - def _init_pathing(self, custom_root_mount_path: Path = None, custom_data_mount_path: Path = None) -> None: """ Initializes the pathing for root volume patching @@ -493,7 +492,7 @@ class PatchSysVolume: oclp_plist_data = plistlib.load(Path(oclp_path).open("rb")) for key in oclp_plist_data: if isinstance(oclp_plist_data[key], (bool, int)): - continue + continue if "Install" not in oclp_plist_data[key]: continue for location in oclp_plist_data[key]["Install"]: diff --git a/resources/sys_patch/sys_patch_auto.py b/resources/sys_patch/sys_patch_auto.py index dcf79841b..e1cdca83e 100644 --- a/resources/sys_patch/sys_patch_auto.py +++ b/resources/sys_patch/sys_patch_auto.py @@ -47,8 +47,7 @@ class AutomaticSysPatch: dict = updates.CheckBinaryUpdates(self.constants).check_binary_updates() if dict: - for key in dict: - version = dict[key]["Version"] + version = dict["Version"] logging.info(f"- Found new version: {version}") app = wx.App() @@ -64,7 +63,7 @@ class AutomaticSysPatch: if response == wx.ID_YES: gui_entry.EntryPoint(self.constants).start(entry=gui_entry.SupportedEntryPoints.UPDATE_APP) elif response == wx.ID_NO: - webbrowser.open(dict[key]["Github Link"]) + webbrowser.open(dict["Github Link"]) return if utilities.check_seal() is True: @@ -149,17 +148,21 @@ class AutomaticSysPatch: logging.info("- Versions match") return True + if self.constants.special_build is True: + # Version doesn't match and we're on a special build + # Special builds don't have good ways to compare versions + logging.info("- Special build detected, assuming installed is older") + return False + # Check if installed version is newer than booted version - if updates.CheckBinaryUpdates(self.constants)._check_if_build_newer( - self.constants.computer.oclp_version.split("."), self.constants.patcher_version.split(".") - ) is True: + if updates.CheckBinaryUpdates(self.constants).check_if_newer(self.constants.computer.oclp_version): logging.info("- Installed version is newer than booted version") return True args = [ "osascript", "-e", - f"""display dialog "OpenCore Legacy Patcher has detected that you are booting an outdated OpenCore build\n- Booted: {self.constants.computer.oclp_version}\n- Installed: {self.constants.patcher_version}\n\nWould you like to update the OpenCore bootloader?" """ + f"""display dialog "OpenCore Legacy Patcher has detected that you are booting {'a different' if self.constants.special_build else 'an outdated'} OpenCore build\n- Booted: {self.constants.computer.oclp_version}\n- Installed: {self.constants.patcher_version}\n\nWould you like to update the OpenCore bootloader?" """ f'with icon POSIX file "{self.constants.app_icon_path}"', ] output = subprocess.run( diff --git a/resources/sys_patch/sys_patch_detect.py b/resources/sys_patch/sys_patch_detect.py index f2518a481..5bd350c10 100644 --- a/resources/sys_patch/sys_patch_detect.py +++ b/resources/sys_patch/sys_patch_detect.py @@ -3,26 +3,16 @@ # Used when supplying data to sys_patch.py # Copyright (C) 2020-2022, Dhinak G, Mykola Grymalyuk -import plistlib import logging -import py_sip_xnu +import plistlib from pathlib import Path -from resources import ( - constants, - device_probe, - utilities, - amfi_detect, - network_handler, - kdk_handler -) -from data import ( - model_array, - os_data, - sip_data, - smbios_data, - cpu_data -) +import packaging.version +import py_sip_xnu + +from data import cpu_data, model_array, os_data, sip_data, smbios_data +from resources import (amfi_detect, constants, device_probe, kdk_handler, + network_handler, utilities) class DetectRootPatch: @@ -418,7 +408,7 @@ class DetectRootPatch: bool: True if loaded, False otherwise """ - return utilities.check_kext_loaded("WhateverGreen", self.constants.detected_os) + return utilities.check_kext_loaded("as.vit9696.WhateverGreen") def _check_kdk(self): @@ -521,7 +511,7 @@ class DetectRootPatch: if self.constants.detected_os > os_data.os_data.catalina: self.brightness_legacy = True - if self.model in ["iMac7,1", "iMac8,1"] or (self.model in model_array.LegacyAudio and utilities.check_kext_loaded("AppleALC", self.constants.detected_os) is False): + if self.model in ["iMac7,1", "iMac8,1"] or (self.model in model_array.LegacyAudio and utilities.check_kext_loaded("as.vit9696.AppleALC") is False): # Special hack for systems with botched GOPs # TL;DR: No Boot Screen breaks Lilu, therefore breaking audio if self.constants.detected_os > os_data.os_data.catalina: @@ -610,6 +600,12 @@ class DetectRootPatch: if self.constants.detected_os < os_data.os_data.big_sur: return amfi_detect.AmfiConfigDetectLevel.NO_CHECK + amfipass_version = utilities.check_kext_loaded("com.dhinakg.AMFIPass") + if amfipass_version: + if packaging.version.parse(amfipass_version) >= packaging.version.parse(self.constants.amfipass_compatibility_version): + # If AMFIPass is loaded, our binaries will work + return amfi_detect.AmfiConfigDetectLevel.NO_CHECK + if self.constants.detected_os >= os_data.os_data.ventura: if self.amfi_shim_bins is True: # Currently we require AMFI outright disabled diff --git a/resources/updates.py b/resources/updates.py index 8b0df26c8..9b12df530 100644 --- a/resources/updates.py +++ b/resources/updates.py @@ -3,8 +3,11 @@ # Call check_binary_updates() to determine if any updates are available # Returns dict with Link and Version of the latest binary update if available import logging +from typing import Optional, Union -from resources import network_handler, constants +from packaging import version + +from resources import constants, network_handler REPO_LATEST_RELEASE_URL: str = "https://api.github.com/repos/dortania/OpenCore-Legacy-Patcher/releases/latest" @@ -12,48 +15,62 @@ REPO_LATEST_RELEASE_URL: str = "https://api.github.com/repos/dortania/OpenCore-L class CheckBinaryUpdates: def __init__(self, global_constants: constants.Constants) -> None: self.constants: constants.Constants = global_constants + try: + self.binary_version = version.parse(self.constants.patcher_version) + except version.InvalidVersion: + assert self.constants.special_build is True, "Invalid version number for binary" + # Special builds will not have a proper version number + self.binary_version = version.parse("0.0.0") - self.binary_version = self.constants.patcher_version - self.binary_version_array = [int(x) for x in self.binary_version.split(".")] + self.latest_details = None - - def _check_if_build_newer(self, remote_version: list = None, local_version: list = None) -> bool: + def check_if_newer(self, version: Union[str, version.Version]) -> bool: """ - Check if the remote version is newer than the local version + Check if the provided version is newer than the local version Parameters: - remote_version (list): Remote version to compare against - local_version (list): Local version to compare against + version (str): Version to compare against Returns: - bool: True if remote version is newer, False if not + bool: True if the provided version is newer, False if not + """ + if self.constants.special_build is True: + return False + + return self._check_if_build_newer(version, self.binary_version) + + def _check_if_build_newer(self, first_version: Union[str, version.Version], second_version: Union[str, version.Version]) -> bool: + """ + Check if the first version is newer than the second version + + Parameters: + first_version_str (str): First version to compare against (generally local) + second_version_str (str): Second version to compare against (generally remote) + + Returns: + bool: True if first version is newer, False if not """ - if remote_version is None: - remote_version = self.remote_version_array - if local_version is None: - local_version = self.binary_version_array + if not isinstance(first_version, version.Version): + try: + first_version = version.parse(first_version) + except version.InvalidVersion: + # Special build > release build: assume special build is newer + return True + if not isinstance(second_version, version.Version): + try: + second_version = version.parse(second_version) + except version.InvalidVersion: + # Release build > special build: assume special build is newer + return False - if local_version == remote_version: + if first_version == second_version: if not self.constants.commit_info[0].startswith("refs/tags"): # Check for nightly builds return True - # Pad version numbers to match length (ie. 0.1.0 vs 0.1.0.1) - while len(remote_version) > len(local_version): - local_version.append(0) - while len(remote_version) < len(local_version): - remote_version.append(0) - - for i in range(0, len(remote_version)): - if int(remote_version[i]) < int(local_version[i]): - break - elif int(remote_version[i]) > int(local_version[i]): - return True - - return False - + return first_version > second_version def _determine_local_build_type(self) -> str: """ @@ -63,11 +80,7 @@ class CheckBinaryUpdates: str: "GUI" or "TUI" """ - if self.constants.wxpython_variant is True: - return "GUI" - else: - return "TUI" - + return "GUI" if self.constants.wxpython_variant else "TUI" def _determine_remote_type(self, remote_name: str) -> str: """ @@ -87,8 +100,7 @@ class CheckBinaryUpdates: else: return "Unknown" - - def check_binary_updates(self) -> dict: + def check_binary_updates(self) -> Optional[dict]: """ Check if any updates are available for the OpenCore Legacy Patcher binary @@ -96,7 +108,13 @@ class CheckBinaryUpdates: dict: Dictionary with Link and Version of the latest binary update if available """ - available_binaries: list = {} + if self.constants.special_build is True: + # Special builds do not get updates through the updater + return None + + if self.latest_details: + # We already checked + return self.latest_details if not network_handler.NetworkUtilities(REPO_LATEST_RELEASE_URL).verify_network_connection(): return None @@ -107,26 +125,26 @@ class CheckBinaryUpdates: if "tag_name" not in data_set: return None - self.remote_version = data_set["tag_name"] + # The release marked as latest will always be stable, and thus, have a proper version number + # But if not, let's not crash the program + try: + latest_remote_version = version.parse(data_set["tag_name"]) + except version.InvalidVersion: + return None - self.remote_version_array = self.remote_version.split(".") - self.remote_version_array = [int(x) for x in self.remote_version_array] - - if self._check_if_build_newer() is False: + if not self._check_if_build_newer(latest_remote_version, self.binary_version): return None for asset in data_set["assets"]: logging.info(f"Found asset: {asset['name']}") if self._determine_remote_type(asset["name"]) == self._determine_local_build_type(): - available_binaries.update({ - asset['name']: { - "Name": asset["name"], - "Version": self.remote_version, - "Link": asset["browser_download_url"], - "Type": self._determine_remote_type(asset["name"]), - "Github Link": f"https://github.com/dortania/OpenCore-Legacy-Patcher/releases/{self.remote_version}" - } - }) - return available_binaries + self.latest_details = { + "Name": asset["name"], + "Version": latest_remote_version, + "Link": asset["browser_download_url"], + "Type": self._determine_remote_type(asset["name"]), + "Github Link": f"https://github.com/dortania/OpenCore-Legacy-Patcher/releases/{latest_remote_version}", + } + return self.latest_details - return None \ No newline at end of file + return None diff --git a/resources/utilities.py b/resources/utilities.py index c5676a391..d83810f85 100644 --- a/resources/utilities.py +++ b/resources/utilities.py @@ -1,21 +1,20 @@ # Copyright (C) 2020-2023, Dhinak G, Mykola Grymalyuk +import argparse +import atexit +import binascii +import logging import math import os import plistlib +import re +import shutil import subprocess from pathlib import Path -import os -import binascii -import argparse -import atexit -import shutil import py_sip_xnu -import logging - +from data import os_data, sip_data from resources import constants, ioreg -from data import sip_data, os_data def hexswap(input_hex: str): @@ -173,15 +172,35 @@ def enable_sleep_after_running(): sleep_process = None -def check_kext_loaded(kext_name, os_version): - if os_version > os_data.os_data.catalina: - kext_loaded = subprocess.run(["kmutil", "showloaded", "--list-only", "--variant-suffix", "release"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - else: - kext_loaded = subprocess.run(["kextstat", "-l"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - if kext_name in kext_loaded.stdout.decode(): - return True - else: - return False +def check_kext_loaded(bundle_id: str) -> str: + """ + Checks if a kext is loaded + + Parameters: + bundle_id (str): The bundle ID of the kext to check + + Returns: + str: The version of the kext if it is loaded, or "" if it is not loaded + """ + # Name (Version) UUID + # no UUID for kextstat + pattern = re.compile(re.escape(bundle_id) + r"\s+\((?P.+)\)") + + args = ["kextstat", "-l", "-b", bundle_id] + + if Path("/usr/bin/kmutil").exists(): + args = ["kmutil", "showloaded", "--list-only", "--variant-suffix", "release", "--optional-identifier", bundle_id] + + kext_loaded = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + if kext_loaded.returncode != 0: + return "" + output = kext_loaded.stdout.decode() + if not output.strip(): + return "" + match = pattern.search(output) + if match: + return match.group("version") + return "" def check_oclp_boot(): diff --git a/resources/wx_gui/gui_main_menu.py b/resources/wx_gui/gui_main_menu.py index 64103ba68..66266ef04 100644 --- a/resources/wx_gui/gui_main_menu.py +++ b/resources/wx_gui/gui_main_menu.py @@ -65,7 +65,7 @@ class MainFrame(wx.Frame): """ # Title label: OpenCore Legacy Patcher v{X.Y.Z} - title_label = wx.StaticText(self, label=f"OpenCore Legacy Patcher v{self.constants.patcher_version}", pos=(-1,10)) + title_label = wx.StaticText(self, label=f"OpenCore Legacy Patcher {'' if self.constants.special_build else 'v'}{self.constants.patcher_version}", pos=(-1, 10)) title_label.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont")) title_label.Centre(wx.HORIZONTAL) @@ -282,22 +282,21 @@ class MainFrame(wx.Frame): if not dict: return - for entry in dict: - version = dict[entry]["Version"] - logging.info(f"New version: {version}") - dialog = wx.MessageDialog( - parent=self, - message=f"Current Version: {self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}\nNew version: {version}\nWould you like to update?", - caption="Update Available for OpenCore Legacy Patcher!", - style=wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION - ) - dialog.SetYesNoCancelLabels("Download and install", "Ignore", "View on Github") - response = dialog.ShowModal() + version = dict["Version"] + logging.info(f"New version: {version}") + dialog = wx.MessageDialog( + parent=self, + message=f"Current Version: {self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}\nNew version: {version}\nWould you like to update?", + caption="Update Available for OpenCore Legacy Patcher!", + style=wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION + ) + dialog.SetYesNoCancelLabels("Download and install", "Ignore", "View on Github") + response = dialog.ShowModal() - if response == wx.ID_YES: - wx.CallAfter(self.on_update, dict[entry]["Link"], version) - elif response == wx.ID_CANCEL: - webbrowser.open(dict[entry]["Github Link"]) + if response == wx.ID_YES: + wx.CallAfter(self.on_update, dict["Link"], version) + elif response == wx.ID_CANCEL: + webbrowser.open(dict["Github Link"]) def on_build_and_install(self, event: wx.Event = None): diff --git a/resources/wx_gui/gui_update.py b/resources/wx_gui/gui_update.py index f5ab367b9..03ca75265 100644 --- a/resources/wx_gui/gui_update.py +++ b/resources/wx_gui/gui_update.py @@ -48,10 +48,8 @@ class UpdateFrame(wx.Frame): if url == "" or version_label == "": dict = updates.CheckBinaryUpdates(self.constants).check_binary_updates() if dict: - for key in dict: - version_label = dict[key]["Version"] - url = dict[key]["Link"] - break + version_label = dict["Version"] + url = dict["Link"] else: wx.MessageBox("Failed to get update info", "Critical Error") sys.exit(1)