mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-20 14:10:51 +10:00
Rename to constants
This commit is contained in:
@@ -11,7 +11,7 @@ PATCHER_VERSION = "0.0.9"
|
|||||||
|
|
||||||
class OpenCoreLegacyPatcher():
|
class OpenCoreLegacyPatcher():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.versions = Versions.Versions()
|
self.constants = Constants.Constants()
|
||||||
self.custom_model: str = None
|
self.custom_model: str = None
|
||||||
self.current_model: str = None
|
self.current_model: str = None
|
||||||
opencore_model: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
opencore_model: str = subprocess.run("nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||||
@@ -23,15 +23,15 @@ class OpenCoreLegacyPatcher():
|
|||||||
self.current_model = [line.strip().split(": ", 1)[1] for line in self.current_model.stdout.decode().split("\n") if line.strip().startswith("Model Identifier")][0]
|
self.current_model = [line.strip().split(": ", 1)[1] for line in self.current_model.stdout.decode().split("\n") if line.strip().startswith("Model Identifier")][0]
|
||||||
|
|
||||||
def build_opencore(self):
|
def build_opencore(self):
|
||||||
build.OpenCoreMenus(self.versions).build_opencore_menu(self.custom_model or self.current_model)
|
build.OpenCoreMenus(self.constants).build_opencore_menu(self.custom_model or self.current_model)
|
||||||
|
|
||||||
def install_opencore(self):
|
def install_opencore(self):
|
||||||
utilities.cls()
|
utilities.cls()
|
||||||
utilities.header(["Installing OpenCore to Drive"])
|
utilities.header(["Installing OpenCore to Drive"])
|
||||||
|
|
||||||
if self.versions.opencore_path_done.exists():
|
if self.constants.opencore_release_folder.exists():
|
||||||
print("\nFound OpenCore in Build Folder")
|
print("\nFound OpenCore in Build Folder")
|
||||||
build.BuildOpenCore(self.custom_model or self.current_model, self.versions).copy_efi()
|
build.BuildOpenCore(self.custom_model or self.current_model, self.constants).copy_efi()
|
||||||
input("Press [Enter] to go back.")
|
input("Press [Enter] to go back.")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -0,0 +1,108 @@
|
|||||||
|
# pylint: disable=multiple-statements
|
||||||
|
# Define Files
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
class Constants:
|
||||||
|
def __init__(self):
|
||||||
|
self.default_opencore_version = "0.6.6"
|
||||||
|
self.opencore_version = "0.6.6"
|
||||||
|
self.available_opencore_versions = ["0.6.6"]
|
||||||
|
self.lilu_version = "1.5.0"
|
||||||
|
self.whatevergreen_version = "1.4.6"
|
||||||
|
self.airportbcrmfixup_version = "2.1.2"
|
||||||
|
self.bcm570_version = "1.0.0"
|
||||||
|
self.marvel_version = "1.0.0"
|
||||||
|
self.nforce_version = "1.0.0"
|
||||||
|
self.mce_version = "1.0.0"
|
||||||
|
self.mousse_version = "0.93"
|
||||||
|
self.telemetrap_version = "1.0.0"
|
||||||
|
self.io80211high_sierra_version = "1.0.0"
|
||||||
|
self.io80211mojave_version = "1.0.0"
|
||||||
|
self.voodoohda_version = "296"
|
||||||
|
self.restrictevents_version = "1.0.0"
|
||||||
|
|
||||||
|
# Get resource path
|
||||||
|
self.current_path = Path(__file__).parent.parent.resolve()
|
||||||
|
self.payload_path = self.current_path / Path("payloads")
|
||||||
|
|
||||||
|
# Payload Location
|
||||||
|
# OpenCore
|
||||||
|
@property
|
||||||
|
def opencore_zip_source(self): return self.payload_path / Path(f"OpenCore/OpenCore-v{self.opencore_version}.zip")
|
||||||
|
@property
|
||||||
|
def plist_template(self): return self.payload_path / Path(f"Config/v{self.opencore_version}/config.plist")
|
||||||
|
|
||||||
|
# ACPI
|
||||||
|
@property
|
||||||
|
def pci_ssdt_path(self): return self.payload_path / Path("ACPI/SSDT-CPBG.aml")
|
||||||
|
|
||||||
|
# Drivers
|
||||||
|
@property
|
||||||
|
def nvme_driver_path(self): return self.payload_path / Path("Drivers/NvmExpressDxe.efi")
|
||||||
|
|
||||||
|
# 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}.zip")
|
||||||
|
@property
|
||||||
|
def whatevergreen_path(self): return self.payload_kexts_path / Path(f"Acidanthera/WhateverGreen-v{self.whatevergreen_version}.zip")
|
||||||
|
@property
|
||||||
|
def airportbcrmfixup_path(self): return self.payload_kexts_path / Path(f"Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}.zip")
|
||||||
|
@property
|
||||||
|
def restrictevents_path(self): return self.payload_kexts_path / Path(f"Acidanthera/RestrictEvents-v{self.restrictevents_version}.zip")
|
||||||
|
@property
|
||||||
|
def bcm570_path(self): return self.payload_kexts_path / Path(f"Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_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 mce_path(self): return self.payload_kexts_path / Path(f"Misc/AppleMCEReporterDisabler-v{self.mce_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 io80211high_sierra_path(self): return self.payload_kexts_path / Path(f"Wifi/IO80211HighSierra-v{self.io80211high_sierra_version}.zip")
|
||||||
|
@property
|
||||||
|
def io80211mojave_path(self): return self.payload_kexts_path / Path(f"Wifi/IO80211Mojave-v{self.io80211mojave_version}.zip")
|
||||||
|
@property
|
||||||
|
def voodoohda_path(self): return self.payload_kexts_path / Path(f"Audio/VoodooHDA-v{self.voodoohda_version}.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-v{self.opencore_version}")
|
||||||
|
@property
|
||||||
|
def opencore_zip_copied(self): return self.build_path / Path(f"OpenCore-v{self.opencore_version}.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")
|
||||||
|
|
||||||
|
# Tools
|
||||||
|
@property
|
||||||
|
def macserial_path(self): return self.payload_path / Path("Tools/macserial")
|
||||||
|
|
||||||
|
# Icons
|
||||||
|
@property
|
||||||
|
def app_icon_path(self): return self.current_path / Path("OC-Patcher.icns")
|
||||||
|
@property
|
||||||
|
def icon_path(self): return self.payload_path / Path("Icon/.VolumeIcon.icns")
|
||||||
|
@property
|
||||||
|
def gui_path(self): return self.payload_path / Path("Icon/Resources.zip")
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
# Define Files
|
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
from shutil import copy
|
|
||||||
from shutil import rmtree
|
|
||||||
|
|
||||||
import os
|
|
||||||
import json
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
|
|
||||||
class Versions:
|
|
||||||
def __init__(self):
|
|
||||||
self.default_opencore_version = "0.6.6"
|
|
||||||
self.opencore_version = "0.6.6"
|
|
||||||
self.available_opencore_versions = ["0.6.6"]
|
|
||||||
self.lilu_version = "1.5.0"
|
|
||||||
self.whatevergreen_version = "1.4.6"
|
|
||||||
self.airportbcrmfixup_version = "2.1.2"
|
|
||||||
self.bcm570_version = "1.0.0"
|
|
||||||
self.marvel_version = "1.0.0"
|
|
||||||
self.nforce_version = "1.0.0"
|
|
||||||
self.mce_version = "1.0.0"
|
|
||||||
self.mousse_version = "0.93"
|
|
||||||
self.telemetrap_version = "1.0.0"
|
|
||||||
self.io80211high_sierra_version = "1.0.0"
|
|
||||||
self.io80211mojave_version = "1.0.0"
|
|
||||||
self.voodoohda_version = "296"
|
|
||||||
self.restrictevents_version = "1.0.0"
|
|
||||||
|
|
||||||
# Get resource path
|
|
||||||
self.current_path = Path(__file__).parent.parent.resolve()
|
|
||||||
self.payload_path = self.current_path / Path("payloads")
|
|
||||||
|
|
||||||
# Payload Location
|
|
||||||
# OpenCore
|
|
||||||
@property
|
|
||||||
def opencore_path(self): return self.current_path / Path(f"payloads/OpenCore/OpenCore-v{self.opencore_version}.zip")
|
|
||||||
@property
|
|
||||||
def plist_path(self): return self.current_path / Path(f"payloads/Config/v{self.opencore_version}/config.plist")
|
|
||||||
|
|
||||||
# ACPI
|
|
||||||
@property
|
|
||||||
def pci_ssdt_path(self): return self.current_path / Path("payloads/ACPI/SSDT-CPBG.aml")
|
|
||||||
|
|
||||||
# Drivers
|
|
||||||
@property
|
|
||||||
def nvme_driver_path(self): return self.current_path / Path("payloads/Drivers/NvmExpressDxe.efi")
|
|
||||||
|
|
||||||
# Kexts
|
|
||||||
@property
|
|
||||||
def lilu_path(self): return self.current_path / Path(f"payloads/Kexts/Acidanthera/Lilu-v{self.lilu_version}.zip")
|
|
||||||
@property
|
|
||||||
def whatevergreen_path(self): return self.current_path / Path(f"payloads/Kexts/Acidanthera/WhateverGreen-v{self.whatevergreen_version}.zip")
|
|
||||||
@property
|
|
||||||
def airportbcrmfixup_path(self): return self.current_path / Path(f"payloads/Kexts/Acidanthera/AirportBrcmFixup-v{self.airportbcrmfixup_version}.zip")
|
|
||||||
@property
|
|
||||||
def restrictevents_path(self): return self.current_path / Path(f"payloads/Kexts/Acidanthera/RestrictEvents-v{self.restrictevents_version}.zip")
|
|
||||||
@property
|
|
||||||
def bcm570_path(self): return self.current_path / Path(f"payloads/Kexts/Ethernet/CatalinaBCM5701Ethernet-v{self.bcm570_version}.zip")
|
|
||||||
@property
|
|
||||||
def marvel_path(self): return self.current_path / Path(f"payloads/Kexts/Ethernet/MarvelYukonEthernet-v{self.marvel_version}.zip")
|
|
||||||
@property
|
|
||||||
def nforce_path(self): return self.current_path / Path(f"payloads/Kexts/Ethernet/nForceEthernet-v{self.nforce_version}.zip")
|
|
||||||
@property
|
|
||||||
def mce_path(self): return self.current_path / Path(f"payloads/Kexts/Misc/AppleMCEReporterDisabler-v{self.mce_version}.zip")
|
|
||||||
@property
|
|
||||||
def mousse_path(self): return self.current_path / Path(f"payloads/Kexts/SSE/AAAMouSSE-v{self.mousse_version}.zip")
|
|
||||||
@property
|
|
||||||
def telemetrap_path(self): return self.current_path / Path(f"payloads/Kexts/SSE/telemetrap-v{self.telemetrap_version}.zip")
|
|
||||||
@property
|
|
||||||
def io80211high_sierra_path(self): return self.current_path / Path(f"payloads/Kexts/Wifi/IO80211HighSierra-v{self.io80211high_sierra_version}.zip")
|
|
||||||
@property
|
|
||||||
def io80211mojave_path(self): return self.current_path / Path(f"payloads/Kexts/Wifi/IO80211Mojave-v{self.io80211mojave_version}.zip")
|
|
||||||
@property
|
|
||||||
def voodoohda_path(self): return self.current_path / Path(f"payloads/Kexts/Audio/VoodooHDA-v{self.voodoohda_version}.zip")
|
|
||||||
|
|
||||||
# Build Location
|
|
||||||
@property
|
|
||||||
def opencore_path_build(self): return self.current_path / Path(f"Build-Folder/OpenCore-v{self.opencore_version}.zip")
|
|
||||||
@property
|
|
||||||
def plist_path_build(self): return self.current_path / Path(f"Build-Folder/OpenCore-v{self.opencore_version}/EFI/OC/")
|
|
||||||
@property
|
|
||||||
def plist_path_build_full(self): return self.current_path / Path(f"Build-Folder/OpenCore-v{self.opencore_version}/EFI/OC/config.plist")
|
|
||||||
@property
|
|
||||||
def acpi_path_build(self): return self.current_path / Path(f"Build-Folder/OpenCore-v{self.opencore_version}/EFI/OC/ACPI")
|
|
||||||
@property
|
|
||||||
def drivers_path_build(self): return self.current_path / Path(f"Build-Folder/OpenCore-v{self.opencore_version}/EFI/OC/Drivers")
|
|
||||||
@property
|
|
||||||
def kext_path_build(self): return self.current_path / Path(f"Build-Folder/OpenCore-v{self.opencore_version}/EFI/OC/Kexts")
|
|
||||||
@property
|
|
||||||
def opencore_path_done(self): return self.current_path / Path(f"Build-Folder/OpenCore-v{self.opencore_version}")
|
|
||||||
@property
|
|
||||||
def build_path(self): return self.current_path / Path("Build-Folder/")
|
|
||||||
@property
|
|
||||||
def gui_path_build(self): return self.current_path / Path(f"Build-Folder/OpenCore-v{self.opencore_version}/EFI/OC/Resources")
|
|
||||||
|
|
||||||
# Tools
|
|
||||||
@property
|
|
||||||
def macserial_path(self): return self.current_path / Path("payloads/Tools")
|
|
||||||
|
|
||||||
# Icons
|
|
||||||
@property
|
|
||||||
def app_icon_path(self): return self.current_path / Path("OC-Patcher.icns")
|
|
||||||
@property
|
|
||||||
def icon_path(self): return self.current_path / Path(f"payloads/Icon/.VolumeIcon.icns")
|
|
||||||
@property
|
|
||||||
def gui_path(self): return self.current_path / Path(f"payloads/Icon/Resources.zip")
|
|
||||||
+49
-49
@@ -18,59 +18,59 @@ class BuildOpenCore():
|
|||||||
def __init__(self, model, versions):
|
def __init__(self, model, versions):
|
||||||
self.model = model
|
self.model = model
|
||||||
self.config = None
|
self.config = None
|
||||||
self.versions: Versions.Versions = versions
|
self.constants: Constants.Constants = versions
|
||||||
|
|
||||||
def build_efi(self):
|
def build_efi(self):
|
||||||
utilities.cls()
|
utilities.cls()
|
||||||
if not Path(self.versions.build_path).exists():
|
if not Path(self.constants.build_path).exists():
|
||||||
Path(self.versions.build_path).mkdir()
|
Path(self.constants.build_path).mkdir()
|
||||||
print("Created build folder")
|
print("Created build folder")
|
||||||
else:
|
else:
|
||||||
print("Build folder already present, skipping")
|
print("Build folder already present, skipping")
|
||||||
|
|
||||||
if Path(self.versions.opencore_path_build).exists():
|
if Path(self.constants.opencore_zip_copied).exists():
|
||||||
print("Deleting old copy of OpenCore zip")
|
print("Deleting old copy of OpenCore zip")
|
||||||
Path(self.versions.opencore_path_build).unlink()
|
Path(self.constants.opencore_zip_copied).unlink()
|
||||||
if Path(self.versions.opencore_path_done).exists():
|
if Path(self.constants.opencore_release_folder).exists():
|
||||||
print("Deleting old copy of OpenCore folder")
|
print("Deleting old copy of OpenCore folder")
|
||||||
shutil.rmtree(self.versions.opencore_path_done)
|
shutil.rmtree(self.constants.opencore_release_folder)
|
||||||
|
|
||||||
print()
|
print()
|
||||||
print("- Adding OpenCore v" + self.versions.opencore_version)
|
print("- Adding OpenCore v" + self.constants.opencore_version)
|
||||||
shutil.copy(self.versions.opencore_path, self.versions.build_path)
|
shutil.copy(self.constants.opencore_zip_source, self.constants.build_path)
|
||||||
zipfile.ZipFile(self.versions.opencore_path_build).extractall(self.versions.build_path)
|
zipfile.ZipFile(self.constants.opencore_zip_copied).extractall(self.constants.build_path)
|
||||||
|
|
||||||
print("- Adding config.plist for OpenCore")
|
print("- Adding config.plist for OpenCore")
|
||||||
# Setup config.plist for editing
|
# Setup config.plist for editing
|
||||||
shutil.copy(self.versions.plist_path, self.versions.plist_path_build)
|
shutil.copy(self.constants.plist_template, self.constants.oc_folder)
|
||||||
self.config = plistlib.load(Path(self.versions.plist_path_build_full).open("rb"))
|
self.config = plistlib.load(Path(self.constants.plist_path).open("rb"))
|
||||||
|
|
||||||
for name, version, path, check in [
|
for name, version, path, check in [
|
||||||
# Essential kexts
|
# Essential kexts
|
||||||
("Lilu.kext", self.versions.lilu_version, self.versions.lilu_path, lambda: True),
|
("Lilu.kext", self.constants.lilu_version, self.constants.lilu_path, lambda: True),
|
||||||
("WhateverGreen.kext", self.versions.whatevergreen_version, self.versions.whatevergreen_path, lambda: True),
|
("WhateverGreen.kext", self.constants.whatevergreen_version, self.constants.whatevergreen_path, lambda: True),
|
||||||
("RestrictEvents.kext", self.versions.restrictevents_version, self.versions.restrictevents_path, lambda: self.model in ModelArray.MacPro71),
|
("RestrictEvents.kext", self.constants.restrictevents_version, self.constants.restrictevents_path, lambda: self.model in ModelArray.MacPro71),
|
||||||
# CPU patches
|
# CPU patches
|
||||||
("AppleMCEReporterDisabler.kext", self.versions.mce_version, self.versions.mce_path, lambda: self.model in ModelArray.DualSocket),
|
("AppleMCEReporterDisabler.kext", self.constants.mce_version, self.constants.mce_path, lambda: self.model in ModelArray.DualSocket),
|
||||||
("AAAMouSSE.kext", self.versions.mousse_version, self.versions.mousse_path, lambda: self.model in ModelArray.SSEEmulator),
|
("AAAMouSSE.kext", self.constants.mousse_version, self.constants.mousse_path, lambda: self.model in ModelArray.SSEEmulator),
|
||||||
("telemetrap.kext", self.versions.telemetrap_version, self.versions.telemetrap_path, lambda: self.model in ModelArray.MissingSSE42),
|
("telemetrap.kext", self.constants.telemetrap_version, self.constants.telemetrap_path, lambda: self.model in ModelArray.MissingSSE42),
|
||||||
# Ethernet patches
|
# Ethernet patches
|
||||||
("nForceEthernet.kext", self.versions.nforce_version, self.versions.nforce_path, lambda: self.model in ModelArray.EthernetNvidia),
|
("nForceEthernet.kext", self.constants.nforce_version, self.constants.nforce_path, lambda: self.model in ModelArray.EthernetNvidia),
|
||||||
("MarvelYukonEthernet.kext", self.versions.marvel_version, self.versions.marvel_path, lambda: self.model in ModelArray.EthernetMarvell),
|
("MarvelYukonEthernet.kext", self.constants.marvel_version, self.constants.marvel_path, lambda: self.model in ModelArray.EthernetMarvell),
|
||||||
("CatalinaBCM5701Ethernet.kext", self.versions.bcm570_version, self.versions.bcm570_path, lambda: self.model in ModelArray.EthernetBroadcom),
|
("CatalinaBCM5701Ethernet.kext", self.constants.bcm570_version, self.constants.bcm570_path, lambda: self.model in ModelArray.EthernetBroadcom),
|
||||||
# Legacy audio
|
# Legacy audio
|
||||||
("VoodooHDA.kext", self.versions.voodoohda_version, self.versions.voodoohda_path, lambda: self.model in ModelArray.LegacyAudio)
|
("VoodooHDA.kext", self.constants.voodoohda_version, self.constants.voodoohda_path, lambda: self.model in ModelArray.LegacyAudio)
|
||||||
]:
|
]:
|
||||||
self.enable_kext(name, version, path, check)
|
self.enable_kext(name, version, path, check)
|
||||||
|
|
||||||
# WiFi patches
|
# WiFi patches
|
||||||
|
|
||||||
if self.model in ModelArray.WifiAtheros:
|
if self.model in ModelArray.WifiAtheros:
|
||||||
self.enable_kext("IO80211HighSierra.kext", self.versions.io80211high_sierra_version, self.versions.io80211high_sierra_path)
|
self.enable_kext("IO80211HighSierra.kext", self.constants.io80211high_sierra_version, self.constants.io80211high_sierra_path)
|
||||||
self.get_kext_by_bundle_path("IO80211HighSierra.kext/Contents/PlugIns/AirPortAtheros40.kext")["Enabled"] = True
|
self.get_kext_by_bundle_path("IO80211HighSierra.kext/Contents/PlugIns/AirPortAtheros40.kext")["Enabled"] = True
|
||||||
|
|
||||||
if self.model in ModelArray.WifiBCM94331:
|
if self.model in ModelArray.WifiBCM94331:
|
||||||
self.enable_kext("AirportBrcmFixup.kext", self.versions.airportbcrmfixup_version, self.versions.airportbcrmfixup_path)
|
self.enable_kext("AirportBrcmFixup.kext", self.constants.airportbcrmfixup_version, self.constants.airportbcrmfixup_path)
|
||||||
self.get_kext_by_bundle_path("AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext")["Enabled"] = True
|
self.get_kext_by_bundle_path("AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext")["Enabled"] = True
|
||||||
|
|
||||||
if self.model in ModelArray.EthernetNvidia:
|
if self.model in ModelArray.EthernetNvidia:
|
||||||
@@ -106,10 +106,10 @@ class BuildOpenCore():
|
|||||||
# USB map
|
# USB map
|
||||||
map_name = f"USB-Map-{self.model}.zip"
|
map_name = f"USB-Map-{self.model}.zip"
|
||||||
map_entry = f"USB-Map-{self.model}.kext"
|
map_entry = f"USB-Map-{self.model}.kext"
|
||||||
usb_map_path = Path(self.versions.current_path) / Path(f"payloads/Kexts/Maps/Zip/{map_name}")
|
usb_map_path = Path(self.constants.current_path) / Path(f"payloads/Kexts/Maps/Zip/{map_name}")
|
||||||
if usb_map_path.exists():
|
if usb_map_path.exists():
|
||||||
print(f"- Adding {map_entry}")
|
print(f"- Adding {map_entry}")
|
||||||
shutil.copy(usb_map_path, self.versions.kext_path_build)
|
shutil.copy(usb_map_path, self.constants.kexts_path)
|
||||||
self.get_kext_by_bundle_path("USB-Map-SMBIOS.kext")["Enabled"] = True
|
self.get_kext_by_bundle_path("USB-Map-SMBIOS.kext")["Enabled"] = True
|
||||||
self.get_kext_by_bundle_path("USB-Map-SMBIOS.kext")["BundlePath"] = map_entry
|
self.get_kext_by_bundle_path("USB-Map-SMBIOS.kext")["BundlePath"] = map_entry
|
||||||
|
|
||||||
@@ -123,11 +123,11 @@ class BuildOpenCore():
|
|||||||
|
|
||||||
# Add OpenCanopy
|
# Add OpenCanopy
|
||||||
print("- Adding OpenCanopy GUI")
|
print("- Adding OpenCanopy GUI")
|
||||||
shutil.rmtree(self.versions.gui_path_build)
|
shutil.rmtree(self.constants.resources_path)
|
||||||
shutil.copy(self.versions.gui_path, self.versions.plist_path_build)
|
shutil.copy(self.constants.gui_path, self.constants.oc_folder)
|
||||||
self.config["UEFI"]["Drivers"] = ["OpenCanopy.efi", "OpenRuntime.efi"]
|
self.config["UEFI"]["Drivers"] = ["OpenCanopy.efi", "OpenRuntime.efi"]
|
||||||
|
|
||||||
plistlib.dump(self.config, Path(self.versions.plist_path_build_full).open("wb"), sort_keys=True)
|
plistlib.dump(self.config, Path(self.constants.plist_path).open("wb"), sort_keys=True)
|
||||||
|
|
||||||
def set_smbios(self):
|
def set_smbios(self):
|
||||||
spoofed_model = self.model
|
spoofed_model = self.model
|
||||||
@@ -155,7 +155,7 @@ class BuildOpenCore():
|
|||||||
elif self.model in ModelArray.MacPro71:
|
elif self.model in ModelArray.MacPro71:
|
||||||
print("- Spoofing to MacPro7,1")
|
print("- Spoofing to MacPro7,1")
|
||||||
spoofed_model = "MacPro7,1"
|
spoofed_model = "MacPro7,1"
|
||||||
macserial_output = subprocess.run((f"./payloads/tools/macserial -g -m {spoofed_model} -n 1").split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
macserial_output = subprocess.run(([self.constants.macserial_path] + f"-g -m {spoofed_model} -n 1").split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
macserial_output = macserial_output.stdout.decode().strip().split(" | ")
|
macserial_output = macserial_output.stdout.decode().strip().split(" | ")
|
||||||
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = spoofed_model
|
self.config["PlatformInfo"]["Generic"]["SystemProductName"] = spoofed_model
|
||||||
self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = macserial_output[0]
|
self.config["PlatformInfo"]["Generic"]["SystemSerialNumber"] = macserial_output[0]
|
||||||
@@ -186,23 +186,23 @@ class BuildOpenCore():
|
|||||||
return
|
return
|
||||||
|
|
||||||
print(f"- Adding {kext_name} {kext_version}")
|
print(f"- Adding {kext_name} {kext_version}")
|
||||||
shutil.copy(kext_path, self.versions.kext_path_build)
|
shutil.copy(kext_path, self.constants.kexts_path)
|
||||||
kext["Enabled"] = True
|
kext["Enabled"] = True
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
print("- Cleaning up files")
|
print("- Cleaning up files")
|
||||||
for kext in Path(self.versions.kext_path_build).glob("*.zip"):
|
for kext in Path(self.constants.kexts_path).rglob("*.zip"):
|
||||||
with zipfile.ZipFile(kext) as zip_file:
|
with zipfile.ZipFile(kext) as zip_file:
|
||||||
zip_file.extractall(self.versions.kext_path_build)
|
zip_file.extractall(self.constants.kexts_path)
|
||||||
kext.unlink()
|
kext.unlink()
|
||||||
shutil.rmtree((Path(self.versions.kext_path_build) / Path("__MACOSX")), ignore_errors=True)
|
shutil.rmtree((Path(self.constants.kexts_path) / Path("__MACOSX")), ignore_errors=True)
|
||||||
|
|
||||||
for item in Path(self.versions.plist_path_build).glob("*.zip"):
|
for item in Path(self.constants.oc_folder).glob("*.zip"):
|
||||||
with zipfile.ZipFile(item) as zip_file:
|
with zipfile.ZipFile(item) as zip_file:
|
||||||
zip_file.extractall(self.versions.plist_path_build)
|
zip_file.extractall(self.constants.oc_folder)
|
||||||
item.unlink()
|
item.unlink()
|
||||||
shutil.rmtree((Path(self.versions.build_path) / Path("__MACOSX")), ignore_errors=True)
|
shutil.rmtree((Path(self.constants.build_path) / Path("__MACOSX")), ignore_errors=True)
|
||||||
Path(self.versions.opencore_path_build).unlink()
|
Path(self.constants.opencore_zip_copied).unlink()
|
||||||
|
|
||||||
def build_opencore(self):
|
def build_opencore(self):
|
||||||
self.build_efi()
|
self.build_efi()
|
||||||
@@ -210,7 +210,7 @@ class BuildOpenCore():
|
|||||||
self.cleanup()
|
self.cleanup()
|
||||||
print("")
|
print("")
|
||||||
print("Your OpenCore EFI has been built at:")
|
print("Your OpenCore EFI has been built at:")
|
||||||
print(f" {self.versions.opencore_path_done}")
|
print(f" {self.constants.opencore_release_folder}")
|
||||||
print("")
|
print("")
|
||||||
input("Press enter to go back")
|
input("Press enter to go back")
|
||||||
|
|
||||||
@@ -230,9 +230,9 @@ class BuildOpenCore():
|
|||||||
if (efi_dir / Path("EFI")).exists():
|
if (efi_dir / Path("EFI")).exists():
|
||||||
print("Removing preexisting EFI folder")
|
print("Removing preexisting EFI folder")
|
||||||
shutil.rmtree(efi_dir / Path("EFI"))
|
shutil.rmtree(efi_dir / Path("EFI"))
|
||||||
if Path(self.versions.opencore_path_done).exists():
|
if Path(self.constants.opencore_release_folder).exists():
|
||||||
shutil.copytree(self.versions.opencore_path_done, efi_dir)
|
shutil.copytree(self.constants.opencore_release_folder, efi_dir)
|
||||||
shutil.copy(self.versions.icon_path, efi_dir)
|
shutil.copy(self.constants.icon_path, efi_dir)
|
||||||
print("OpenCore transfer complete")
|
print("OpenCore transfer complete")
|
||||||
print("")
|
print("")
|
||||||
else:
|
else:
|
||||||
@@ -243,35 +243,35 @@ class BuildOpenCore():
|
|||||||
|
|
||||||
class OpenCoreMenus():
|
class OpenCoreMenus():
|
||||||
def __init__(self, versions):
|
def __init__(self, versions):
|
||||||
self.versions: Versions.Versions = versions
|
self.constants: Constants.Constants = versions
|
||||||
|
|
||||||
def change_opencore_version(self):
|
def change_opencore_version(self):
|
||||||
utilities.cls()
|
utilities.cls()
|
||||||
utilities.header(["Change OpenCore Version"])
|
utilities.header(["Change OpenCore Version"])
|
||||||
print(f"\nCurrent OpenCore version: {self.versions.opencore_version}\nSupported versions: 0.6.6 (recommended)")
|
print(f"\nCurrent OpenCore version: {self.constants.opencore_version}\nSupported versions: 0.6.6 (recommended)")
|
||||||
version = input("Please enter the desired OpenCore version (or press Enter to cancel): ").strip()
|
version = input("Please enter the desired OpenCore version (or press Enter to cancel): ").strip()
|
||||||
if not version:
|
if not version:
|
||||||
return
|
return
|
||||||
while version not in self.versions.available_opencore_versions:
|
while version not in self.constants.available_opencore_versions:
|
||||||
utilities.cls()
|
utilities.cls()
|
||||||
utilities.header(["Change OpenCore Version"])
|
utilities.header(["Change OpenCore Version"])
|
||||||
print(f"\nCurrent OpenCore version: {self.versions.opencore_version}\nSupported versions: 0.6.6 (recommended)")
|
print(f"\nCurrent OpenCore version: {self.constants.opencore_version}\nSupported versions: 0.6.6 (recommended)")
|
||||||
version = input(f"Invalid OpenCore version {version}!\nPlease enter the desired OpenCore version (or press Enter to cancel): ").strip()
|
version = input(f"Invalid OpenCore version {version}!\nPlease enter the desired OpenCore version (or press Enter to cancel): ").strip()
|
||||||
if not version:
|
if not version:
|
||||||
return
|
return
|
||||||
self.versions.opencore_version = version
|
self.constants.opencore_version = version
|
||||||
|
|
||||||
def build_opencore_menu(self, model):
|
def build_opencore_menu(self, model):
|
||||||
response = None
|
response = None
|
||||||
while not (response and response == -1):
|
while not (response and response == -1):
|
||||||
title = [
|
title = [
|
||||||
f"Build OpenCore v{self.versions.opencore_version} EFI",
|
f"Build OpenCore v{self.constants.opencore_version} EFI",
|
||||||
"Selected Model: " + model
|
"Selected Model: " + model
|
||||||
]
|
]
|
||||||
menu = utilities.TUIMenu(title, "Please select an option: ", auto_number=True)
|
menu = utilities.TUIMenu(title, "Please select an option: ", auto_number=True)
|
||||||
|
|
||||||
options = [
|
options = [
|
||||||
["Build OpenCore", lambda: BuildOpenCore(model, self.versions).build_opencore()],
|
["Build OpenCore", lambda: BuildOpenCore(model, self.constants).build_opencore()],
|
||||||
["Change OpenCore Version", self.change_opencore_version],
|
["Change OpenCore Version", self.change_opencore_version],
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user