diff --git a/CHANGELOG.md b/CHANGELOG.md index fa3c5f6b6..5b1664789 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ - Implement new Copy on Write detection mechanism for all file copying operations - Implemented using `getattrlist` and `VOL_CAP_INT_CLONE` flag - Helps improve performance on APFS volumes +- Increment Binaries: + - PatcherSupportPkg 1.6.3 - release ## 1.5.0 - Restructure project directories diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 39d990e6e..6c2e93a0d 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -3,8 +3,8 @@ Here are some common errors that users may experience while using this patcher: * [OpenCore Legacy Patcher not launching](#opencore-legacy-patcher-not-launching) -* ["You don't have permission to save..." error when creating USB installer](#you-dont-have-permission-to-save-error-when-creating-usb-installer) -* [Stuck on `This version of Mac OS X is not supported on this platform` or (🚫) Prohibited Symbol](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform-or-(🚫)-prohibited-symbol) +* ["You don't have permission to save..." error when creating USB installer](#you-don-t-have-permission-to-save-error-when-creating-usb-installer) +* [Stuck on `This version of Mac OS X is not supported on this platform` or (🚫) Prohibited Symbol](#stuck-on-this-version-of-mac-os-x-is-not-supported-on-this-platform-or-🚫-prohibited-symbol) * [Cannot boot macOS without the USB](#cannot-boot-macos-without-the-usb) * [Infinite Recovery OS Booting](#infinite-recovery-os-reboot) * [Stuck on boot after root patching](#stuck-on-boot-after-root-patching) diff --git a/opencore_legacy_patcher/constants.py b/opencore_legacy_patcher/constants.py index 9fd4220a1..337533d90 100644 --- a/opencore_legacy_patcher/constants.py +++ b/opencore_legacy_patcher/constants.py @@ -14,7 +14,7 @@ class Constants: def __init__(self) -> None: # Patcher Versioning self.patcher_version: str = "1.6.0" # OpenCore-Legacy-Patcher - self.patcher_support_pkg_version: str = "1.6.2" # PatcherSupportPkg + self.patcher_support_pkg_version: str = "1.6.3" # PatcherSupportPkg self.copyright_date: str = "Copyright © 2020-2024 Dortania" self.patcher_name: str = "OpenCore Legacy Patcher" diff --git a/opencore_legacy_patcher/datasets/sys_patch_dict.py b/opencore_legacy_patcher/datasets/sys_patch_dict.py index 7ac5b1e85..4db823aca 100644 --- a/opencore_legacy_patcher/datasets/sys_patch_dict.py +++ b/opencore_legacy_patcher/datasets/sys_patch_dict.py @@ -91,10 +91,10 @@ class SystemPatchDictionary(): - AppleIntelHD4000Graphics.kext """ if self.os_major < os_data.os_data.sonoma: - return "11.4" + return "11.7.10" if self.os_float < self.macOS_14_4: - return "11.4-23" - return "11.4-23.4" + return "11.7.10-23" + return "11.7.10-23.4" def __resolve_kepler_geforce_framebuffers(self) -> str: @@ -458,8 +458,8 @@ class SystemPatchDictionary(): }, "Install": { "/System/Library/PrivateFrameworks": { - "AppleGVA.framework": "10.15.7", - "AppleGVACore.framework": "10.15.7", + "AppleGVA.framework": "11.7.10", + "AppleGVACore.framework": "11.7.10", }, }, }, @@ -972,13 +972,13 @@ class SystemPatchDictionary(): }, "Install": { "/System/Library/Extensions": { - "AppleIntelHD4000GraphicsGLDriver.bundle": "11.0 Beta 6", - "AppleIntelHD4000GraphicsMTLDriver.bundle": "11.0 Beta 6" if self.os_major < os_data.os_data.ventura else "11.0-beta 6-22", - "AppleIntelHD4000GraphicsVADriver.bundle": "11.3 Beta 1", + "AppleIntelHD4000GraphicsGLDriver.bundle": "11.7.10", + "AppleIntelHD4000GraphicsMTLDriver.bundle": "11.7.10" if self.os_major < os_data.os_data.ventura else "11.7.10-22", + "AppleIntelHD4000GraphicsVADriver.bundle": "11.7.10", "AppleIntelFramebufferCapri.kext": self.__resolve_ivy_bridge_framebuffers(), "AppleIntelHD4000Graphics.kext": self.__resolve_ivy_bridge_framebuffers(), - "AppleIntelIVBVA.bundle": "11.4", - "AppleIntelGraphicsShared.bundle": "11.4", # libIGIL-Metal.dylib pulled from 11.0 Beta 6 + "AppleIntelIVBVA.bundle": "11.7.10", + "AppleIntelGraphicsShared.bundle": "11.7.10", # libIGIL-Metal.dylib pulled from 11.0 Beta 6 }, }, }, @@ -1354,7 +1354,7 @@ class SystemPatchDictionary(): }, "Install": { "/System/Library/Frameworks": { - "LocalAuthentication.framework": f"13.6-{self.os_major}", # Required for Password Authentication (SharedUtils.framework) + "LocalAuthentication.framework": f"13.6-{self.os_major}" # Required for Password Authentication (SharedUtils.framework) }, "/System/Library/PrivateFrameworks": { "EmbeddedOSInstall.framework": "13.6", # Required for biometrickitd diff --git a/opencore_legacy_patcher/support/install.py b/opencore_legacy_patcher/support/install.py index e9bbf1cb7..f1a6aebf1 100644 --- a/opencore_legacy_patcher/support/install.py +++ b/opencore_legacy_patcher/support/install.py @@ -5,6 +5,7 @@ install.py: Installation of OpenCore files to ESP import logging import plistlib import subprocess +import re from pathlib import Path @@ -27,9 +28,15 @@ class tui_disk_installation: # Sierra and older disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()) for disk in disks["AllDisksAndPartitions"]: - disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode()) try: - all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "partitions": {}} + disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode()) + except: + # Chinesium USB can have garbage data in MediaName + diskutil_output = subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip() + ungarbafied_output = re.sub(r'(MediaName\s*).*?()', r'\1\2', diskutil_output).encode() + disk_info = plistlib.loads(ungarbafied_output) + try: + all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info.get("MediaName", "Disk"), "size": disk_info["TotalSize"], "partitions": {}} for partition in disk["Partitions"]: partition_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", partition["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode()) all_disks[disk["DeviceIdentifier"]]["partitions"][partition["DeviceIdentifier"]] = { @@ -98,7 +105,7 @@ class tui_disk_installation: partition_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", full_disk_identifier], stdout=subprocess.PIPE).stdout.decode().strip().encode()) parent_disk = partition_info["ParentWholeDisk"] drive_host_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", parent_disk], stdout=subprocess.PIPE).stdout.decode().strip().encode()) - sd_type = drive_host_info["MediaName"] + sd_type = drive_host_info.get("MediaName", "Disk") try: ssd_type = drive_host_info["SolidState"] except KeyError: diff --git a/opencore_legacy_patcher/support/macos_installer_handler.py b/opencore_legacy_patcher/support/macos_installer_handler.py index fc764c2d3..2475493d1 100644 --- a/opencore_legacy_patcher/support/macos_installer_handler.py +++ b/opencore_legacy_patcher/support/macos_installer_handler.py @@ -6,6 +6,7 @@ import logging import plistlib import tempfile import subprocess +import re from pathlib import Path @@ -171,9 +172,15 @@ fi disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode()) for disk in disks["AllDisksAndPartitions"]: - disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode()) try: - all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "removable": disk_info["Internal"], "partitions": {}} + disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode()) + except: + # Chinesium USB can have garbage data in MediaName + diskutil_output = subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip() + ungarbafied_output = re.sub(r'(MediaName\s*).*?()', r'\1\2', diskutil_output).encode() + disk_info = plistlib.loads(ungarbafied_output) + try: + all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info.get("MediaName", "Disk"), "size": disk_info["TotalSize"], "removable": disk_info["Internal"], "partitions": {}} except KeyError: # Avoid crashing with CDs installed continue