mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-06-14 03:16:28 +10:00
Merge branch 'main' into sonoma-development
# Conflicts: # payloads/Kexts/Acidanthera/RestrictEvents-v1.1.2-DEBUG.zip # payloads/Kexts/Acidanthera/RestrictEvents-v1.1.2-RELEASE.zip # payloads/Kexts/Acidanthera/WhateverGreen-v1.6.5-Navi-DEBUG.zip # payloads/Kexts/Acidanthera/WhateverGreen-v1.6.5-Navi-RELEASE.zip # payloads/OpenCore/OpenCore-DEBUG.zip # payloads/OpenCore/OpenCore-RELEASE.zip # resources/constants.py # resources/wx_gui/gui_settings.py
This commit is contained in:
+42
-8
@@ -3,14 +3,15 @@
|
||||
# Generate stand alone application for OpenCore-Patcher
|
||||
# Copyright (C) 2022-2023 - Mykola Grymalyuk
|
||||
|
||||
from pathlib import Path
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import argparse
|
||||
import os
|
||||
import subprocess
|
||||
import plistlib
|
||||
import time
|
||||
import sys
|
||||
import platform
|
||||
import subprocess
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from resources import constants
|
||||
|
||||
@@ -30,11 +31,13 @@ class CreateBinary:
|
||||
|
||||
def __init__(self):
|
||||
start = time.time()
|
||||
print("Starting build script")
|
||||
self._set_cwd()
|
||||
self._is_x86_64()
|
||||
|
||||
print("Starting build script")
|
||||
self.args = self._parse_arguments()
|
||||
|
||||
self._set_cwd()
|
||||
print(f"Current Working Directory:\n- {os.getcwd()}")
|
||||
|
||||
self._preflight_processes()
|
||||
self._build_binary()
|
||||
@@ -42,13 +45,44 @@ class CreateBinary:
|
||||
print(f"Build script completed in {str(round(time.time() - start, 2))} seconds")
|
||||
|
||||
|
||||
def _is_x86_64(self):
|
||||
"""
|
||||
Check if invoked as x86_64
|
||||
Some of our dependancies are not universal, so we'll create a new virtual environment and invoke as Rosetta
|
||||
"""
|
||||
|
||||
if platform.machine() != "arm64":
|
||||
return
|
||||
|
||||
print("Detected ARM64, creating x86_64 environment")
|
||||
|
||||
args = sys.argv[:]
|
||||
if "python" in args[0].lower():
|
||||
args.pop(0)
|
||||
|
||||
if not Path(".x86_64_venv").exists():
|
||||
print("Creating new venv")
|
||||
subprocess.run(["arch", "-x86_64", sys.executable, "-m", "venv", ".x86_64_venv"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
print("Installing requirements")
|
||||
subprocess.run(["arch", "-x86_64", ".x86_64_venv/bin/pip3", "install", "-r", "requirements.txt"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
|
||||
print("Relaunching as x86_64")
|
||||
result = subprocess.run(["arch", "-x86_64", ".x86_64_venv/bin/python3"] + args)
|
||||
|
||||
if result.returncode != 0:
|
||||
if result.stdout:
|
||||
print("STDOUT: " + result.stdout.decode("utf-8"))
|
||||
if result.stderr:
|
||||
print("STDERR: " + result.stderr.decode("utf-8"))
|
||||
sys.exit(result.returncode)
|
||||
|
||||
|
||||
def _set_cwd(self):
|
||||
"""
|
||||
Initialize current working directory to parent of this script
|
||||
"""
|
||||
|
||||
os.chdir(Path(__file__).resolve().parent)
|
||||
print(f"Current Working Directory:\n- {os.getcwd()}")
|
||||
|
||||
|
||||
def _parse_arguments(self):
|
||||
|
||||
@@ -1,6 +1,17 @@
|
||||
# OpenCore Legacy Patcher changelog
|
||||
|
||||
## 0.6.9
|
||||
- Resolve BCM2046 and BCM2070 support on macOS 13.3 and newer
|
||||
- Increment Binaries:
|
||||
- OpenCorePkg 0.9.3 - release
|
||||
- Lilu 1.6.6 - release
|
||||
- WhateverGreen 1.6.5 - release
|
||||
- RestrictEvents 1.1.2 - release
|
||||
- FeatureUnlock 1.1.5 - release
|
||||
- DebugEnhancer 1.0.8 - release
|
||||
- CPUFriend 1.2.7 - release
|
||||
- BlueToolFixup 2.6.8 - rolling (2305aaa)
|
||||
- CryptexFixup 1.0.2 - release
|
||||
|
||||
## 0.6.8
|
||||
- Update non-Metal Binaries:
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -43,7 +43,7 @@ class Constants:
|
||||
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.7" # BlueToolFixup (BrcmPatchRAM)
|
||||
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
|
||||
|
||||
@@ -280,6 +280,8 @@ class PatchSysVolume:
|
||||
if self.needs_kmutil_exemptions is True:
|
||||
logging.info("Note: Apple will require you to open System Preferences -> Security to allow the new kernel extensions to be loaded")
|
||||
self.constants.root_patcher_succeeded = True
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def _rebuild_kernel_collection(self) -> bool:
|
||||
@@ -418,9 +420,11 @@ class PatchSysVolume:
|
||||
"""
|
||||
Unmount root volume
|
||||
"""
|
||||
|
||||
logging.info("- Unmounting Root Volume (Don't worry if this fails)")
|
||||
utilities.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
if self.root_mount_path:
|
||||
logging.info("- Unmounting Root Volume (Don't worry if this fails)")
|
||||
utilities.elevated(["diskutil", "unmount", self.root_mount_path], stdout=subprocess.PIPE).stdout.decode().strip().encode()
|
||||
else:
|
||||
logging.info("- Skipping Root Volume unmount")
|
||||
|
||||
|
||||
def _rebuild_dyld_shared_cache(self) -> None:
|
||||
|
||||
@@ -4,8 +4,10 @@ import pprint
|
||||
import logging
|
||||
import py_sip_xnu
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
from pathlib import Path
|
||||
from resources.sys_patch.sys_patch import PatchSysVolume
|
||||
|
||||
from resources.wx_gui import (
|
||||
gui_support,
|
||||
@@ -806,6 +808,9 @@ class SettingsFrame(wx.Frame):
|
||||
},
|
||||
},
|
||||
"Developer": {
|
||||
"Validation": {
|
||||
"type": "title",
|
||||
},
|
||||
"Install latest nightly build 🧪": {
|
||||
"type": "button",
|
||||
"function": self.on_nightly,
|
||||
@@ -831,6 +836,28 @@ class SettingsFrame(wx.Frame):
|
||||
"Export constants.py values to a txt file.",
|
||||
],
|
||||
},
|
||||
"Developer Root Volume Patching": {
|
||||
"type": "title",
|
||||
},
|
||||
"Mount Root Volume": {
|
||||
"type": "button",
|
||||
"function": self.on_mount_root_vol,
|
||||
"description": [
|
||||
"Life's too short to type 'sudo mount -o",
|
||||
"nobrowse -t apfs /dev/diskXsY",
|
||||
"/System/Volumes/Update/mnt1' every time.",
|
||||
],
|
||||
},
|
||||
"wrap_around 2": {
|
||||
"type": "wrap_around",
|
||||
},
|
||||
"Save Root Volume": {
|
||||
"type": "button",
|
||||
"function": self.on_bless_root_vol,
|
||||
"description": [
|
||||
"Rebuild kernel cache and bless snapshot 🙏",
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1267,3 +1294,23 @@ Hardware Information:
|
||||
|
||||
def on_test_exception(self, event: wx.Event) -> None:
|
||||
raise Exception("Test Exception")
|
||||
|
||||
def on_mount_root_vol(self, event: wx.Event) -> None:
|
||||
if os.geteuid() != 0:
|
||||
wx.MessageDialog(self.parent, "Please relaunch as Root to mount the Root Volume", "Error", wx.OK | wx.ICON_ERROR).ShowModal()
|
||||
else:
|
||||
#Don't need to pass model as we're bypassing all logic
|
||||
if PatchSysVolume("",self.constants)._mount_root_vol() == True:
|
||||
wx.MessageDialog(self.parent, "Root Volume Mounted, remember to fix permissions before saving the Root Volume", "Success", wx.OK | wx.ICON_INFORMATION).ShowModal()
|
||||
else:
|
||||
wx.MessageDialog(self.parent, "Root Volume Mount Failed, check terminal output", "Error", wx.OK | wx.ICON_ERROR).ShowModal()
|
||||
|
||||
def on_bless_root_vol(self, event: wx.Event) -> None:
|
||||
if os.geteuid() != 0:
|
||||
wx.MessageDialog(self.parent, "Please relaunch as Root to save changes", "Error", wx.OK | wx.ICON_ERROR).ShowModal()
|
||||
else:
|
||||
#Don't need to pass model as we're bypassing all logic
|
||||
if PatchSysVolume("",self.constants)._rebuild_root_volume() == True:
|
||||
wx.MessageDialog(self.parent, "Root Volume saved, please reboot to apply changes", "Success", wx.OK | wx.ICON_INFORMATION).ShowModal()
|
||||
else:
|
||||
wx.MessageDialog(self.parent, "Root Volume update Failed, check terminal output", "Error", wx.OK | wx.ICON_ERROR).ShowModal()
|
||||
Reference in New Issue
Block a user