mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-18 05:34:42 +10:00
Due to lack of kernel version incrementing, beta 1 through 3 will not function with this build (as we are unable to limit kext injection). Note searchpartyd will crash on beta 4, full support not resolved yet.
860 lines
34 KiB
Python
860 lines
34 KiB
Python
"""
|
|
constants.py: Defines versioning, file paths and other settings for the patcher
|
|
"""
|
|
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
from packaging import version
|
|
|
|
from .datasets import os_data
|
|
from .detections import device_probe
|
|
|
|
|
|
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.copyright_date: str = "Copyright © 2020-2024 Dortania"
|
|
self.patcher_name: str = "OpenCore Legacy Patcher"
|
|
|
|
# URLs
|
|
self.url_patcher_support_pkg: str = "https://github.com/dortania/PatcherSupportPkg/releases/download/"
|
|
self.discord_link: str = "https://discord.gg/rqdPgH8xSN"
|
|
self.guide_link: str = "https://dortania.github.io/OpenCore-Legacy-Patcher/"
|
|
self.repo_link: str = "https://github.com/dortania/OpenCore-Legacy-Patcher"
|
|
self.installer_pkg_url: str = f"{self.repo_link}/releases/download/{self.patcher_version}/AutoPkg-Assets.pkg"
|
|
self.installer_pkg_url_nightly: str = "http://nightly.link/dortania/OpenCore-Legacy-Patcher/workflows/build-app-wxpython/main/AutoPkg-Assets.pkg.zip"
|
|
|
|
# OpenCore Versioning
|
|
# https://github.com/acidanthera/OpenCorePkg
|
|
self.opencore_version: str = "1.0.0"
|
|
|
|
# Kext Versioning
|
|
## Acidanthera
|
|
## https://github.com/acidanthera
|
|
self.lilu_version: str = "1.6.8" # Lilu
|
|
self.whatevergreen_version: str = "1.6.6" # WhateverGreen
|
|
self.whatevergreen_navi_version: str = "1.6.6-Navi" # WhateverGreen (Navi Patch)
|
|
self.airportbcrmfixup_version: str = "2.1.8" # AirPortBrcmFixup
|
|
self.nvmefix_version: str = "1.1.1" # NVMeFix
|
|
self.applealc_version: str = "1.6.3" # AppleALC
|
|
self.restrictevents_version: str = "1.1.3" # RestrictEvents
|
|
self.featureunlock_version: str = "1.1.5" # FeatureUnlock
|
|
self.debugenhancer_version: str = "1.0.8" # DebugEnhancer
|
|
self.cpufriend_version: str = "1.2.7" # CPUFriend
|
|
self.bluetool_version: str = "2.6.8" # BlueToolFixup (BrcmPatchRAM)
|
|
self.cslvfixup_version: str = "2.6.1" # CSLVFixup
|
|
self.autopkg_version: str = "1.0.3" # AutoPkgInstaller
|
|
self.cryptexfixup_version: str = "1.0.2" # CryptexFixup
|
|
|
|
## Apple
|
|
## https://www.apple.com
|
|
self.marvel_version: str = "1.0.1" # MarvelYukonEthernet
|
|
self.nforce_version: str = "1.0.1" # nForceEthernet
|
|
self.piixata_version: str = "1.0.1" # AppleIntelPIIXATA
|
|
self.fw_kext: str = "1.0.1" # IOFireWireFamily
|
|
self.apple_trackpad: str = "1.0.1" # AppleUSBTrackpad
|
|
self.apple_isight_version: str = "1.0.0" # AppleiSight
|
|
self.apple_raid_version: str = "1.0.0" # AppleRAIDCard
|
|
self.apfs_zlib_version: str = "12.3.1" # NoAVXFSCompressionTypeZlib
|
|
self.apfs_zlib_v2_version: str = "12.6" # NoAVXFSCompressionTypeZlib (patched with AVXpel)
|
|
self.multitouch_version: str = "1.0.0" # AppleUSBMultitouch
|
|
self.topcase_version: str = "1.0.0" # AppleUSBTopCase
|
|
self.topcase_inj_version: str = "1.0.0" # AppleTopCaseInjector
|
|
self.intel_82574l_version: str = "1.0.0" # Intel82574L
|
|
self.intel_8254x_version: str = "1.0.0" # AppleIntel8254XEthernet
|
|
self.apple_usb_11_injector: str = "1.0.0" # AppleUSBUHCI/OHCI
|
|
self.aicpupm_version: str = "1.0.0" # AppleIntelCPUPowerManagement/Client
|
|
self.s3x_nvme_version: str = "1.0.0" # IONVMeFamily (14.0 Beta 1, S1X and S3X classes)
|
|
self.apple_camera_version: str = "1.0.0" # AppleCameraInterface (14.0 Beta 1)
|
|
self.t1_sse_version: str = "1.1.0" # AppleSSE (13.6 - T1 support)
|
|
self.t1_key_store_version: str = "1.1.0" # AppleKeyStore (13.6 - T1 support)
|
|
self.t1_credential_version: str = "1.0.0" # AppleCredentialManager (13.6 - T1 support)
|
|
self.t1_corecrypto_version: str = "1.0.1" # corecrypto (13.6 - T1 support)
|
|
self.apple_spi_version: str = "1.0.0" # AppleHSSPISupport (14.4 Beta 1)
|
|
self.apple_spi_hid_version: str = "1.0.0" # AppleHSSPIHIDDriver (14.4 Beta 1)
|
|
self.kernel_relay_version: str = "1.0.0" # KernelRelayHost (15.0 Beta 3)
|
|
|
|
## Apple - Dortania Modified
|
|
self.bcm570_version: str = "1.0.2" # CatalinaBCM5701Ethernet
|
|
self.i210_version: str = "1.0.0" # CatalinaIntelI210Ethernet
|
|
self.corecaptureelcap_version: str = "1.0.2" # corecaptureElCap
|
|
self.io80211elcap_version: str = "2.0.1" # IO80211ElCap
|
|
self.io80211legacy_version: str = "1.0.0" # IO80211FamilyLegacy (Ventura)
|
|
self.ioskywalk_version: str = "1.1.0" # IOSkywalkFamily (Ventura)
|
|
self.bigsursdxc_version: str = "1.0.0" # BigSurSDXC
|
|
self.monterey_ahci_version: str = "1.0.0" # CatalinaAHCI
|
|
|
|
## Apple - Jazzzny Modified
|
|
self.aquantia_version: str = "1.1.0" # AppleEthernetAbuantiaAqtion
|
|
|
|
## 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.ecm_override_version: str = "1.0.0" # AppleUSBECM Override
|
|
self.rsrhelper_version: str = "1.0.0" # RSRHelper
|
|
self.amfipass_version: str = "1.4.1" # AMFIPass
|
|
self.amfipass_compatibility_version: str = "1.2.1" # Minimum AMFIPass version required
|
|
|
|
## Syncretic
|
|
## https://forums.macrumors.com/members/syncretic.1173816/
|
|
## https://github.com/reenigneorcim/latebloom
|
|
self.mousse_version: str = "0.95-Dortania" # MouSSE
|
|
self.telemetrap_version: str = "1.0.0" # telemetrap
|
|
|
|
## cdf
|
|
## https://github.com/cdf/Innie
|
|
self.innie_version: str = "1.3.1" # Innie
|
|
|
|
## arter97
|
|
## https://github.com/arter97/SimpleMSR/
|
|
self.simplemsr_version: str = "1.0.0" # SimpleMSR
|
|
|
|
## blackgate
|
|
## https://github.com/blackgate/AMDGPUWakeHandler
|
|
self.gpu_wake_version: str = "1.0.0"
|
|
|
|
## flagersgit
|
|
## https://github.com/flagersgit/KDKlessWorkaround
|
|
self.kdkless_version: str = "1.0.0"
|
|
|
|
## Jazzzny
|
|
self.legacy_keyboard: str = "1.0.0" # LegacyKeyboardInjector - Jazzzny
|
|
|
|
# Get resource path
|
|
self.current_path: Path = Path(__file__).parent.parent.resolve()
|
|
self.original_path: Path = Path(__file__).parent.parent.resolve()
|
|
self.payload_path: Path = self.current_path / Path("payloads")
|
|
|
|
|
|
# Patcher Settings
|
|
## Internal settings
|
|
self.allow_oc_everywhere: bool = False # Set whether Patcher can be run on unsupported Macs
|
|
self.gui_mode: bool = False # Determine whether running in a GUI or TUI
|
|
self.cli_mode: bool = True # Determine if running in CLI mode
|
|
self.validate: bool = False # Enable validation testing for CI
|
|
self.recovery_status: bool = False # Detect if booted into RecoveryOS
|
|
self.ignore_updates: bool = False # Ignore OCLP updates
|
|
self.wxpython_variant: bool = False # Determine if using wxPython variant
|
|
self.has_checked_updates: bool = False # Determine if check for updates has been run
|
|
self.root_patcher_succeeded: bool = False # Determine if root patcher succeeded
|
|
self.start_build_install: bool = False # Determine if build install should be started
|
|
self.host_is_non_metal: bool = False # Determine if host is non-metal (ie. enable UI hacks)
|
|
self.needs_to_open_preferences: bool = False # Determine if preferences need to be opened
|
|
self.host_is_hackintosh: bool = False # Determine if host is Hackintosh
|
|
self.should_nuke_kdks: bool = True # Determine if KDKs should be nuked if unused in /L*/D*/KDKs
|
|
self.launcher_binary: str = None # Determine launch binary path (ie. Python vs PyInstaller)
|
|
self.launcher_script: str = None # Determine launch file path (None if PyInstaller)
|
|
self.booted_oc_disk: str = None # Determine current disk OCLP booted from
|
|
self.unpack_thread = None # Determine if unpack thread finished (threading.Thread)
|
|
self.update_stage: int = 0 # Determine update stage (see gui_support.py)
|
|
self.log_filepath: Path = None # Path to log file
|
|
|
|
self.commit_info: tuple = (None, None, None) # Commit info (Branch, Commit Date, Commit URL)
|
|
|
|
## Hardware
|
|
self.computer: device_probe.Computer = None # type: ignore
|
|
self.custom_model: Optional[str] = None
|
|
|
|
## OpenCore Settings
|
|
self.opencore_debug: bool = False # Enable OpenCore debug
|
|
self.boot_efi: bool = False # Use EFI/BOOT/BOOTx64.efi vs boot.efi bootstrap
|
|
self.showpicker: bool = True # Show or Hide OpenCore's Boot Picker
|
|
self.nvram_write: bool = True # Write to hardware NVRAM
|
|
self.oc_timeout: int = 5 # Set OpenCore timeout
|
|
|
|
## Kext Settings
|
|
self.kext_debug: bool = False # Enables Lilu debug and DebugEnhancer
|
|
self.kext_variant: str = "RELEASE"
|
|
|
|
## NVRAM Settings
|
|
self.verbose_debug: bool = False # -v
|
|
|
|
## SMBIOS Settings
|
|
self.serial_settings: str = "None" # Set SMBIOS level used
|
|
self.override_smbios: str = "Default" # Set SMBIOS model used
|
|
self.allow_native_spoofs: bool = False # Allow native models to recieve spoofs
|
|
|
|
### Serial Number Overrides
|
|
self.custom_serial_number: str = "" # Set SMBIOS serial number
|
|
self.custom_board_serial_number: str = "" # Set SMBIOS board serial number
|
|
|
|
## FeatureUnlock Settings
|
|
self.fu_status: bool = True # Enable FeatureUnlock
|
|
self.fu_arguments: str = None # Set FeatureUnlock arguments
|
|
|
|
## Security Settings
|
|
self.sip_status: bool = True # System Integrity Protection
|
|
self.secure_status: bool = False # Secure Boot Model
|
|
self.vault: bool = False # EFI Vault
|
|
self.disable_cs_lv: bool = False # Disable Library validation
|
|
self.disable_amfi: bool = False # Disable AMFI
|
|
|
|
## OS Settings
|
|
self.os_support: float = 12.0
|
|
self.detected_os: int = 0 # Major Kernel Version
|
|
self.detected_os_minor: int = 0 # Minor Kernel Version
|
|
self.detected_os_build: str = "" # OS Build
|
|
self.detected_os_version: str = "" # OS Version
|
|
|
|
## Boot Volume Settings
|
|
self.firewire_boot: bool = False # Allow macOS FireWire Boot (kernel)
|
|
self.nvme_boot: bool = False # Allow UEFI NVMe Boot
|
|
self.xhci_boot: bool = False # Allow UEFI XHCI Boot
|
|
|
|
## Graphics Settings
|
|
self.allow_ts2_accel: bool = True # Set TeraScale 2 Acceleration support
|
|
self.drm_support: bool = False # Set iMac14,x DRM support
|
|
self.force_nv_web: bool = False # Force Nvidia Web Drivers on Tesla and Kepler
|
|
self.force_output_support: bool = False # Force Output support for Mac Pros with PC VBIOS
|
|
self.amd_gop_injection: bool = False # Set GOP Injection support
|
|
self.nvidia_kepler_gop_injection: bool = False # Set Kepler GOP Injection support
|
|
|
|
### MXM GPU Support
|
|
self.metal_build: bool = False # Set MXM Build support
|
|
self.imac_vendor: str = "None" # Set MXM GPU vendor
|
|
self.imac_model: str = "" # Set MXM GPU model
|
|
|
|
## Miscellaneous build settings
|
|
self.disallow_cpufriend: bool = False # Disable CPUFriend
|
|
self.enable_wake_on_wlan: bool = False # Allow Wake on WLAN for modern Broadcom
|
|
self.disable_tb: bool = False # Disable Thunderbolt Controller
|
|
self.dGPU_switch: bool = False # Set Display GPU Switching for Windows
|
|
self.force_surplus: bool = False # Force SurPlus patch in newer OSes
|
|
self.force_latest_psp: bool = False # Force latest PatcherSupportPkg
|
|
self.disable_fw_throttle: bool = False # Disable MSR Power Control and XCPM
|
|
self.software_demux: bool = False # Enable Software Demux patch set
|
|
self.force_vmm: bool = False # Force VMM patch
|
|
self.disable_connectdrivers: bool = False # Disable ConnectDrivers (hibernation)
|
|
self.set_vmm_cpuid: bool = False # Set VMM bit inside CPUID
|
|
self.disable_mediaanalysisd: bool = False # Set mediaanalysisd to spawn
|
|
self.set_alc_usage: bool = True # Set AppleALC usage
|
|
self.allow_3rd_party_drives: bool = True # Allow ThridPartyDrives quirk
|
|
self.allow_nvme_fixing: bool = True # Allow NVMe Kernel Space Patches
|
|
self.apfs_trim_timeout: bool = True # Set APFS Trim timeout
|
|
self.custom_sip_value: int = None # Set custom SIP value
|
|
|
|
## Non-Metal OS support
|
|
self.legacy_accel_support = [
|
|
os_data.os_data.big_sur,
|
|
os_data.os_data.monterey,
|
|
os_data.os_data.ventura,
|
|
os_data.os_data.sonoma,
|
|
os_data.os_data.sequoia,
|
|
]
|
|
|
|
@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
|
|
@property
|
|
def payload_path_dmg(self):
|
|
return self.original_path / Path("payloads.dmg")
|
|
|
|
@property
|
|
def payload_local_binaries_root_path_dmg(self):
|
|
return self.original_path / Path("Universal-Binaries.dmg")
|
|
|
|
@property
|
|
def overlay_psp_path_dmg(self):
|
|
return self.original_path / Path("DortaniaInternalResources.dmg")
|
|
|
|
# OpenCore
|
|
@property
|
|
def opencore_zip_source(self):
|
|
return self.payload_path / Path(f"OpenCore/OpenCore-{'DEBUG' if self.opencore_debug is True else 'RELEASE'}.zip")
|
|
|
|
@property
|
|
def plist_template(self):
|
|
return self.payload_path / Path("Config/config.plist")
|
|
|
|
# Launch Services
|
|
@property
|
|
def launch_services_path(self):
|
|
return self.payload_path / Path("Launch Services")
|
|
|
|
@property
|
|
def auto_patch_launch_agent_path(self):
|
|
return self.launch_services_path / Path("com.dortania.opencore-legacy-patcher.auto-patch.plist")
|
|
|
|
@property
|
|
def rsr_monitor_launch_daemon_path(self):
|
|
return self.launch_services_path / Path("com.dortania.opencore-legacy-patcher.rsr-monitor.plist")
|
|
|
|
@property
|
|
def update_launch_daemon_path(self):
|
|
return self.launch_services_path / Path("com.dortania.opencore-legacy-patcher.macos-update.plist")
|
|
|
|
@property
|
|
def kdk_launch_daemon_path(self):
|
|
return self.launch_services_path / Path("com.dortania.opencore-legacy-patcher.os-caching.plist")
|
|
|
|
# ACPI
|
|
@property
|
|
def pci_ssdt_path(self):
|
|
return self.payload_path / Path("ACPI/SSDT-CPBG.aml")
|
|
|
|
@property
|
|
def windows_ssdt_path(self):
|
|
return self.payload_path / Path("ACPI/SSDT-PCI.aml")
|
|
|
|
@property
|
|
def demux_ssdt_path(self):
|
|
return self.payload_path / Path("ACPI/SSDT-DGPU.aml")
|
|
|
|
# Drivers
|
|
@property
|
|
def nvme_driver_path(self):
|
|
return self.payload_path / Path("Drivers/NvmExpressDxe.efi")
|
|
|
|
@property
|
|
def exfat_legacy_driver_path(self):
|
|
return self.payload_path / Path("Drivers/ExFatDxeLegacy.efi")
|
|
|
|
@property
|
|
def amd_gop_driver_path(self):
|
|
return self.payload_path / Path("Drivers/AMDGOP.efi")
|
|
|
|
@property
|
|
def nvidia_kepler_gop_driver_path(self):
|
|
return self.payload_path / Path("Drivers/NVGOP_GK.efi")
|
|
|
|
@property
|
|
def xhci_driver_path(self):
|
|
return self.payload_path / Path("Drivers/XhciDxe.efi")
|
|
|
|
@property
|
|
def usb_bus_driver_path(self):
|
|
return self.payload_path / Path("Drivers/UsbBusDxe.efi")
|
|
|
|
@property
|
|
def diags_launcher_path(self):
|
|
return self.payload_path / Path("Drivers/diags.efi")
|
|
|
|
@property
|
|
def link_rate_driver_path(self):
|
|
return self.payload_path / Path("Drivers/FixPCIeLinkRate.efi")
|
|
|
|
@property
|
|
def installer_sh_path(self):
|
|
return self.payload_path / Path("Installer.sh")
|
|
|
|
# Kexts
|
|
@property
|
|
def payload_kexts_path(self):
|
|
return self.payload_path / Path("Kexts")
|
|
|
|
@property
|
|
def lilu_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/Lilu-v{self.lilu_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def whatevergreen_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def whatevergreen_navi_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_navi_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def airportbcrmfixup_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def restrictevents_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def efi_disabler_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/EFICheckDisabler.zip")
|
|
|
|
@property
|
|
def bcm570_path(self):
|
|
return self.payload_kexts_path / Path(f"Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_version}.zip")
|
|
|
|
@property
|
|
def aquantia_path(self):
|
|
return self.payload_kexts_path / Path(f"Ethernet/AppleEthernetAbuantiaAqtion-v{self.aquantia_version}.zip")
|
|
|
|
@property
|
|
def i210_path(self):
|
|
return self.payload_kexts_path / Path(f"Ethernet/CatalinaIntelI210Ethernet-v{self.i210_version}.zip")
|
|
|
|
@property
|
|
def marvel_path(self):
|
|
return self.payload_kexts_path / Path(f"Ethernet/MarvelYukonEthernet-v{self.marvel_version}.zip")
|
|
|
|
@property
|
|
def nforce_path(self):
|
|
return self.payload_kexts_path / Path(f"Ethernet/nForceEthernet-v{self.nforce_version}.zip")
|
|
|
|
@property
|
|
def intel_82574l_path(self):
|
|
return self.payload_kexts_path / Path(f"Ethernet/Intel82574L-v{self.intel_82574l_version}.zip")
|
|
|
|
@property
|
|
def intel_8254x_path(self):
|
|
return self.payload_kexts_path / Path(f"Ethernet/AppleIntel8254XEthernet-v{self.intel_8254x_version}.zip")
|
|
|
|
@property
|
|
def apple_usb_11_injector_path(self):
|
|
return self.payload_kexts_path / Path(f"USB/USB1.1-Injector-v{self.apple_usb_11_injector}.zip")
|
|
|
|
@property
|
|
def aicpupm_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleIntelCPUPowerManagement-v{self.aicpupm_version}.zip")
|
|
|
|
@property
|
|
def aicpupm_client_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleIntelCPUPowerManagementClient-v{self.aicpupm_version}.zip")
|
|
|
|
@property
|
|
def mce_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleMCEReporterDisabler-v{self.mce_version}.zip")
|
|
|
|
@property
|
|
def bigsursdxc_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/BigSurSDXC-v{self.bigsursdxc_version}.zip")
|
|
|
|
@property
|
|
def monterey_ahci_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/MonteAHCIPort-v{self.monterey_ahci_version}.zip")
|
|
|
|
@property
|
|
def apfs_zlib_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/NoAVXFSCompressionTypeZlib-v{self.apfs_zlib_version}.zip")
|
|
|
|
@property
|
|
def apfs_zlib_v2_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/NoAVXFSCompressionTypeZlib-AVXpel-v{self.apfs_zlib_v2_version}.zip")
|
|
|
|
@property
|
|
def multitouch_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleUSBMultitouch-v{self.multitouch_version}.zip")
|
|
|
|
@property
|
|
def top_case_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleUSBTopCase-v{self.topcase_version}.zip")
|
|
|
|
@property
|
|
def top_case_inj_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleTopCaseInjector-v{self.topcase_inj_version}.zip")
|
|
|
|
@property
|
|
def t1_key_store_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleKeyStore-v{self.t1_key_store_version}.zip")
|
|
|
|
@property
|
|
def t1_credential_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleCredentialManager-v{self.t1_credential_version}.zip")
|
|
|
|
@property
|
|
def t1_sse_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleSSE-v{self.t1_sse_version}.zip")
|
|
|
|
@property
|
|
def t1_corecrypto_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/corecrypto_T1-v{self.t1_corecrypto_version}.zip")
|
|
|
|
@property
|
|
def apple_spi_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleHSSPISupport-v{self.apple_spi_version}.zip")
|
|
|
|
@property
|
|
def apple_spi_hid_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleHSSPIHIDDriver-v{self.apple_spi_hid_version}.zip")
|
|
|
|
@property
|
|
def kernel_relay_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/KernelRelayHost-v{self.kernel_relay_version}.zip")
|
|
|
|
@property
|
|
def mousse_path(self):
|
|
return self.payload_kexts_path / Path(f"SSE/AAAMouSSE-v{self.mousse_version}.zip")
|
|
|
|
@property
|
|
def telemetrap_path(self):
|
|
return self.payload_kexts_path / Path(f"SSE/telemetrap-v{self.telemetrap_version}.zip")
|
|
|
|
@property
|
|
def corecaptureelcap_path(self):
|
|
return self.payload_kexts_path / Path(f"Wifi/corecaptureElCap-v{self.corecaptureelcap_version}.zip")
|
|
|
|
@property
|
|
def io80211elcap_path(self):
|
|
return self.payload_kexts_path / Path(f"Wifi/IO80211ElCap-v{self.io80211elcap_version}.zip")
|
|
|
|
@property
|
|
def io80211legacy_path(self):
|
|
return self.payload_kexts_path / Path(f"Wifi/IO80211FamilyLegacy-v{self.io80211legacy_version}.zip")
|
|
|
|
@property
|
|
def ioskywalk_path(self):
|
|
return self.payload_kexts_path / Path(f"Wifi/IOSkywalkFamily-v{self.ioskywalk_version}.zip")
|
|
|
|
@property
|
|
def applealc_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/AppleALC-v{self.applealc_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def piixata_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleIntelPIIXATA-v{self.piixata_version}.zip")
|
|
|
|
@property
|
|
def backlight_injector_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/BacklightInjector-v{self.backlight_injector_version}.zip")
|
|
|
|
@property
|
|
def backlight_injectorA_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/BacklightInjectorA-v{self.backlight_injectorA_version}.zip")
|
|
|
|
@property
|
|
def cpufriend_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/CPUFriend-v{self.cpufriend_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def smcspoof_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/SMC-Spoof-v{self.smcspoof_version}.zip")
|
|
|
|
@property
|
|
def btspoof_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/Bluetooth-Spoof-v{self.btspoof_version}.zip")
|
|
|
|
@property
|
|
def aspp_override_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/ASPP-Override-v{self.aspp_override_version}.zip")
|
|
|
|
@property
|
|
def ecm_override_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/ECM-Override-v{self.ecm_override_version}.zip")
|
|
|
|
@property
|
|
def nvmefix_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/NVMeFix-v{self.nvmefix_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def featureunlock_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/FeatureUnlock-v{self.featureunlock_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def debugenhancer_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/DebugEnhancer-v{self.debugenhancer_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def bluetool_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/BlueToolFixup-v{self.bluetool_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def cslvfixup_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/CSLVFixup-v{self.cslvfixup_version}.zip")
|
|
|
|
@property
|
|
def autopkg_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/AutoPkgInstaller-v{self.autopkg_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def cryptexfixup_path(self):
|
|
return self.payload_kexts_path / Path(f"Acidanthera/CryptexFixup-v{self.cryptexfixup_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
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")
|
|
|
|
@property
|
|
def simplemsr_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/SimpleMSR-v{self.simplemsr_version}.zip")
|
|
|
|
@property
|
|
def gpu_wake_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AMDGPUWakeHandler-v{self.gpu_wake_version}.zip")
|
|
|
|
@property
|
|
def apple_trackpad_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleUSBTrackpad-v{self.apple_trackpad}.zip")
|
|
|
|
@property
|
|
def apple_isight_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/LegacyUSBVideoSupport-v{self.apple_isight_version}.zip")
|
|
|
|
@property
|
|
def legacy_keyboard_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/LegacyKeyboardInjector-v{self.legacy_keyboard}.zip")
|
|
|
|
@property
|
|
def apple_raid_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleRAIDCard-v{self.apple_raid_version}.zip")
|
|
|
|
@property
|
|
def kdkless_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/KDKlessWorkaround-v{self.kdkless_version}-{self.kext_variant}.zip")
|
|
|
|
@property
|
|
def s3x_nvme_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/IOS3XeFamily-v{self.s3x_nvme_version}.zip")
|
|
|
|
@property
|
|
def apple_camera_path(self):
|
|
return self.payload_kexts_path / Path(f"Misc/AppleCameraInterface-v{self.apple_camera_version}.zip")
|
|
|
|
@property
|
|
def plist_folder_path(self):
|
|
return self.payload_kexts_path / Path("Plists")
|
|
|
|
@property
|
|
def platform_plugin_plist_path(self):
|
|
return self.plist_folder_path / Path("PlatformPlugin")
|
|
|
|
@property
|
|
def fw_family_path(self):
|
|
return self.payload_kexts_path / Path(f"FireWire/IOFireWireFamily-v{self.fw_kext}.zip")
|
|
|
|
@property
|
|
def fw_sbp2_path(self):
|
|
return self.payload_kexts_path / Path(f"FireWire/IOFireWireSBP2-v{self.fw_kext}.zip")
|
|
|
|
@property
|
|
def fw_bus_path(self):
|
|
return self.payload_kexts_path / Path(f"FireWire/IOFireWireSerialBusProtocolTransport-v{self.fw_kext}.zip")
|
|
|
|
# Build Location
|
|
@property
|
|
def build_path(self):
|
|
return self.current_path / Path("Build-Folder/")
|
|
|
|
@property
|
|
def opencore_release_folder(self):
|
|
return self.build_path / Path(f"OpenCore-Build")
|
|
|
|
@property
|
|
def opencore_zip_copied(self):
|
|
return self.build_path / Path(f"OpenCore-{'DEBUG' if self.opencore_debug is True else 'RELEASE'}.zip")
|
|
|
|
@property
|
|
def oc_folder(self):
|
|
return self.opencore_release_folder / Path("EFI/OC/")
|
|
|
|
@property
|
|
def plist_path(self):
|
|
return self.oc_folder / Path("config.plist")
|
|
|
|
@property
|
|
def acpi_path(self):
|
|
return self.oc_folder / Path("ACPI")
|
|
|
|
@property
|
|
def drivers_path(self):
|
|
return self.oc_folder / Path("Drivers")
|
|
|
|
@property
|
|
def kexts_path(self):
|
|
return self.oc_folder / Path("Kexts")
|
|
|
|
@property
|
|
def resources_path(self):
|
|
return self.oc_folder / Path("Resources")
|
|
|
|
@property
|
|
def map_kext_folder(self):
|
|
return self.kexts_path / Path("USB-Map.kext")
|
|
|
|
@property
|
|
def map_contents_folder(self):
|
|
return self.map_kext_folder / Path("Contents")
|
|
|
|
@property
|
|
def pp_kext_folder(self):
|
|
return self.kexts_path / Path("CPUFriendDataProvider.kext")
|
|
|
|
@property
|
|
def pp_contents_folder(self):
|
|
return self.pp_kext_folder / Path("Contents")
|
|
|
|
@property
|
|
def agdp_kext_folder(self):
|
|
return self.kexts_path / Path("AGDP-Override.kext")
|
|
|
|
@property
|
|
def agdp_contents_folder(self):
|
|
return self.agdp_kext_folder / Path("Contents")
|
|
|
|
@property
|
|
def agpm_kext_folder(self):
|
|
return self.kexts_path / Path("AGPM-Override.kext")
|
|
|
|
@property
|
|
def agpm_contents_folder(self):
|
|
return self.agpm_kext_folder / Path("Contents")
|
|
|
|
@property
|
|
def amc_kext_folder(self):
|
|
return self.kexts_path / Path("AMC-Override.kext")
|
|
|
|
@property
|
|
def amc_contents_folder(self):
|
|
return self.amc_kext_folder / Path("Contents")
|
|
|
|
# Tools
|
|
@property
|
|
def macserial_path(self):
|
|
return self.payload_path / Path("OpenCore/macserial")
|
|
|
|
@property
|
|
def vault_path(self):
|
|
return self.payload_path / Path("Tools/CreateVault/sign.command")
|
|
|
|
@property
|
|
def ocvalidate_path(self):
|
|
return self.payload_path / Path(f"OpenCore/ocvalidate")
|
|
|
|
@property
|
|
def oclp_helper_path(self):
|
|
return self.payload_path / Path("Tools/OpenCore-Patcher.app/Contents/MacOS/OpenCore-Patcher")
|
|
|
|
@property
|
|
def rsrrepair_userspace_path(self):
|
|
return self.payload_path / Path("Tools/RSRRepair")
|
|
|
|
# Icons
|
|
@property
|
|
def icns_resource_path(self):
|
|
if self.launcher_script:
|
|
return self.payload_path / Path("Icon/AppIcons")
|
|
return Path(self.launcher_binary).parent.parent / Path("Resources")
|
|
|
|
|
|
@property
|
|
def app_icon_path(self):
|
|
return self.payload_path / Path("Icon/AppIcons/OC-Patcher.icns")
|
|
|
|
@property
|
|
def icon_path_external(self):
|
|
return self.payload_path / Path("Icon/DriveIcons/External/.VolumeIcon.icns")
|
|
|
|
@property
|
|
def icon_path_internal(self):
|
|
return self.payload_path / Path("Icon/DriveIcons/Internal/.VolumeIcon.icns")
|
|
|
|
@property
|
|
def icon_path_sd(self):
|
|
return self.payload_path / Path("Icon/DriveIcons/SD-Card/.VolumeIcon.icns")
|
|
|
|
@property
|
|
def icon_path_ssd(self):
|
|
return self.payload_path / Path("Icon/DriveIcons/SSD/.VolumeIcon.icns")
|
|
|
|
@property
|
|
def icon_path_macos_generic(self):
|
|
return self.icns_resource_path / Path("Generic.icns")
|
|
|
|
@property
|
|
def icon_path_macos_big_sur(self):
|
|
return self.icns_resource_path / Path("BigSur.icns")
|
|
|
|
@property
|
|
def icon_path_macos_monterey(self):
|
|
return self.icns_resource_path / Path("Monterey.icns")
|
|
|
|
@property
|
|
def icon_path_macos_ventura(self):
|
|
return self.icns_resource_path / Path("Ventura.icns")
|
|
|
|
@property
|
|
def icon_path_macos_sonoma(self):
|
|
return self.icns_resource_path / Path("Sonoma.icns")
|
|
|
|
@property
|
|
def icon_path_macos_sequoia(self):
|
|
return self.icns_resource_path / Path("Sequoia.icns")
|
|
|
|
@property
|
|
def gui_path(self):
|
|
return self.payload_path / Path("Icon/Resources.zip")
|
|
|
|
@property
|
|
def installer_pkg_path(self):
|
|
return self.payload_path / Path("AutoPkg-Assets.pkg")
|
|
|
|
@property
|
|
def installer_pkg_zip_path(self):
|
|
return self.payload_path / Path("AutoPkg-Assets.pkg.zip")
|
|
|
|
# Apple Payloads Paths
|
|
@property
|
|
def payload_local_binaries_root_path(self):
|
|
return self.payload_path / Path("Universal-Binaries")
|
|
|
|
@property
|
|
def kdk_download_path(self):
|
|
return self.payload_path / Path("KDK.dmg")
|
|
|
|
@property
|
|
def icons_path(self):
|
|
return [
|
|
str(self.icon_path_macos_generic),
|
|
str(self.icon_path_macos_big_sur),
|
|
str(self.icon_path_macos_monterey),
|
|
str(self.icon_path_macos_ventura),
|
|
str(self.icon_path_macos_sonoma),
|
|
str(self.icon_path_macos_sequoia),
|
|
]
|
|
|
|
sbm_values = [
|
|
"j137ap", # iMacPro1,1
|
|
"j680ap", # MacBookPro15,1
|
|
"j132ap", # MacBookPro15,2
|
|
"j174ap", # Macmini8,1
|
|
"j140kap", # MacBookAir8,1
|
|
"j780ap", # MacBookPro15,3
|
|
"j213ap", # MacBookPro15,4
|
|
"j140aap", # MacBookAir8,2
|
|
"j152fap", # MacBookPro16,1
|
|
"j160ap", # MacPro7,1
|
|
"j230kap", # MacBookAir9,1
|
|
"j214kap", # MacBookPro16,2
|
|
"j223ap", # MacBookPro16,3
|
|
"j215ap", # MacBookPro16,4
|
|
"j185ap", # iMac20,1
|
|
"j185fap", # iMac20,2
|
|
# "x86legacy", # non-T2 Macs/VMs, Monterey's boot.efi enforces this on all Macs
|
|
]
|
|
|
|
sandy_board_id_stock = [
|
|
"Mac-94245B3640C91C81", # MacBookPro8,1
|
|
"Mac-94245A3940C91C80", # MacBookPro8,2
|
|
"Mac-942459F5819B171B", # MacBookPro8,3
|
|
"Mac-C08A6BB70A942AC2", # MacBookAir4,1
|
|
"Mac-742912EFDBEE19B3", # MacBookAir4,2
|
|
"Mac-8ED6AF5B48C039E1", # Macmini5,1
|
|
"Mac-4BC72D62AD45599E", # Macmini5,2
|
|
"Mac-7BA5B2794B2CDB12", # Macmini5,3
|
|
"Mac-942B5BF58194151B", # iMac12,1
|
|
"Mac-942B59F58194171B", # iMac12,2
|
|
"Mac-94245AF5819B141B", # AppleInternal MacBookPro8,3
|
|
"Mac-942B5B3A40C91381", # AppleInternal iMac12,2
|
|
] |