mirror of
https://github.com/dortania/OpenCore-Legacy-Patcher.git
synced 2026-04-19 13:46:05 +10:00
Avoid .split() usage for subprocess
This commit is contained in:
@@ -862,7 +862,7 @@ class Computer:
|
|||||||
# Reported model
|
# Reported model
|
||||||
entry = next(ioreg.ioiterator_to_list(ioreg.IOServiceGetMatchingServices(ioreg.kIOMasterPortDefault, ioreg.IOServiceMatching("IOPlatformExpertDevice".encode()), None)[1]))
|
entry = next(ioreg.ioiterator_to_list(ioreg.IOServiceGetMatchingServices(ioreg.kIOMasterPortDefault, ioreg.IOServiceMatching("IOPlatformExpertDevice".encode()), None)[1]))
|
||||||
self.reported_model = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(entry, "model", ioreg.kCFAllocatorDefault, ioreg.kNilOptions)).strip(b"\0").decode() # type: ignore
|
self.reported_model = ioreg.corefoundation_to_native(ioreg.IORegistryEntryCreateCFProperty(entry, "model", ioreg.kCFAllocatorDefault, ioreg.kNilOptions)).strip(b"\0").decode() # type: ignore
|
||||||
translated = subprocess.run("sysctl -in sysctl.proc_translated".split(), stdout=subprocess.PIPE).stdout.decode()
|
translated = subprocess.run(["/usr/sbin/sysctl", "-in", "sysctl.proc_translated"], stdout=subprocess.PIPE).stdout.decode()
|
||||||
if translated:
|
if translated:
|
||||||
board = "target-type"
|
board = "target-type"
|
||||||
else:
|
else:
|
||||||
@@ -894,14 +894,14 @@ class Computer:
|
|||||||
|
|
||||||
def cpu_probe(self):
|
def cpu_probe(self):
|
||||||
self.cpu = CPU(
|
self.cpu = CPU(
|
||||||
subprocess.run("sysctl machdep.cpu.brand_string".split(), stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip(),
|
subprocess.run(["/usr/sbin/sysctl", "machdep.cpu.brand_string"], stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip(),
|
||||||
subprocess.run("sysctl machdep.cpu.features".split(), stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip().split(" "),
|
subprocess.run(["/usr/sbin/sysctl", "machdep.cpu.features"], stdout=subprocess.PIPE).stdout.decode().partition(": ")[2].strip().split(" "),
|
||||||
self.cpu_get_leafs(),
|
self.cpu_get_leafs(),
|
||||||
)
|
)
|
||||||
|
|
||||||
def cpu_get_leafs(self):
|
def cpu_get_leafs(self):
|
||||||
leafs = []
|
leafs = []
|
||||||
result = subprocess.run("sysctl machdep.cpu.leaf7_features".split(), stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
|
result = subprocess.run(["/usr/sbin/sysctl", "machdep.cpu.leaf7_features"], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
|
||||||
if result.returncode == 0:
|
if result.returncode == 0:
|
||||||
return result.stdout.decode().partition(": ")[2].strip().split(" ")
|
return result.stdout.decode().partition(": ")[2].strip().split(" ")
|
||||||
return leafs
|
return leafs
|
||||||
@@ -979,7 +979,7 @@ class Computer:
|
|||||||
def sata_disk_probe(self):
|
def sata_disk_probe(self):
|
||||||
# Get all SATA Controllers/Disks from 'system_profiler SPSerialATADataType'
|
# Get all SATA Controllers/Disks from 'system_profiler SPSerialATADataType'
|
||||||
# Determine whether SATA SSD is present and Apple-made
|
# Determine whether SATA SSD is present and Apple-made
|
||||||
sp_sata_data = plistlib.loads(subprocess.run(f"system_profiler SPSerialATADataType -xml".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
sp_sata_data = plistlib.loads(subprocess.run(["/usr/sbin/system_profiler", "SPSerialATADataType", "-xml"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
for root in sp_sata_data:
|
for root in sp_sata_data:
|
||||||
for ahci_controller in root["_items"]:
|
for ahci_controller in root["_items"]:
|
||||||
# Each AHCI controller will have its own entry
|
# Each AHCI controller will have its own entry
|
||||||
@@ -1015,7 +1015,7 @@ class Computer:
|
|||||||
self.oclp_sys_signed = sys_plist["Custom Signature"]
|
self.oclp_sys_signed = sys_plist["Custom Signature"]
|
||||||
|
|
||||||
def check_rosetta(self):
|
def check_rosetta(self):
|
||||||
result = subprocess.run("sysctl -in sysctl.proc_translated".split(), stdout=subprocess.PIPE).stdout.decode()
|
result = subprocess.run(["/usr/sbin/sysctl", "-in", "sysctl.proc_translated"], stdout=subprocess.PIPE).stdout.decode()
|
||||||
if "1" in result:
|
if "1" in result:
|
||||||
self.rosetta_active = True
|
self.rosetta_active = True
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -22,16 +22,16 @@ class tui_disk_installation:
|
|||||||
# TODO: AllDisksAndPartitions is not supported in Snow Leopard and older
|
# TODO: AllDisksAndPartitions is not supported in Snow Leopard and older
|
||||||
try:
|
try:
|
||||||
# High Sierra and newer
|
# High Sierra and newer
|
||||||
disks = plistlib.loads(subprocess.run("diskutil list -plist physical".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist", "physical"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
except ValueError:
|
except ValueError:
|
||||||
# Sierra and older
|
# Sierra and older
|
||||||
disks = plistlib.loads(subprocess.run("diskutil list -plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
for disk in disks["AllDisksAndPartitions"]:
|
for disk in disks["AllDisksAndPartitions"]:
|
||||||
disk_info = plistlib.loads(subprocess.run(f"diskutil info -plist {disk['DeviceIdentifier']}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
try:
|
try:
|
||||||
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "partitions": {}}
|
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "partitions": {}}
|
||||||
for partition in disk["Partitions"]:
|
for partition in disk["Partitions"]:
|
||||||
partition_info = plistlib.loads(subprocess.run(f"diskutil info -plist {partition['DeviceIdentifier']}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
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"]] = {
|
all_disks[disk["DeviceIdentifier"]]["partitions"][partition["DeviceIdentifier"]] = {
|
||||||
"fs": partition_info.get("FilesystemType", partition_info["Content"]),
|
"fs": partition_info.get("FilesystemType", partition_info["Content"]),
|
||||||
"type": partition_info["Content"],
|
"type": partition_info["Content"],
|
||||||
@@ -102,15 +102,15 @@ class tui_disk_installation:
|
|||||||
logging.info("Please disable Safe Mode and try again.")
|
logging.info("Please disable Safe Mode and try again.")
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
result = subprocess.run(f"diskutil mount {full_disk_identifier}".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
result = subprocess.run(["/usr/sbin/diskutil", "mount", full_disk_identifier], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
logging.info("Mount failed")
|
logging.info("Mount failed")
|
||||||
logging.info(result.stderr.decode())
|
logging.info(result.stderr.decode())
|
||||||
return
|
return
|
||||||
|
|
||||||
partition_info = plistlib.loads(subprocess.run(f"diskutil info -plist {full_disk_identifier}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
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"]
|
parent_disk = partition_info["ParentWholeDisk"]
|
||||||
drive_host_info = plistlib.loads(subprocess.run(f"diskutil info -plist {parent_disk}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
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["MediaName"]
|
||||||
try:
|
try:
|
||||||
ssd_type = drive_host_info["SolidState"]
|
ssd_type = drive_host_info["SolidState"]
|
||||||
|
|||||||
@@ -179,13 +179,13 @@ fi
|
|||||||
# TODO: AllDisksAndPartitions is not supported in Snow Leopard and older
|
# TODO: AllDisksAndPartitions is not supported in Snow Leopard and older
|
||||||
try:
|
try:
|
||||||
# High Sierra and newer
|
# High Sierra and newer
|
||||||
disks = plistlib.loads(subprocess.run("diskutil list -plist physical".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist", "physical"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
except ValueError:
|
except ValueError:
|
||||||
# Sierra and older
|
# Sierra and older
|
||||||
disks = plistlib.loads(subprocess.run("diskutil list -plist".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
disks = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "list", "-plist"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
|
|
||||||
for disk in disks["AllDisksAndPartitions"]:
|
for disk in disks["AllDisksAndPartitions"]:
|
||||||
disk_info = plistlib.loads(subprocess.run(f"diskutil info -plist {disk['DeviceIdentifier']}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
disk_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk["DeviceIdentifier"]], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
try:
|
try:
|
||||||
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "removable": disk_info["Internal"], "partitions": {}}
|
all_disks[disk["DeviceIdentifier"]] = {"identifier": disk_info["DeviceNode"], "name": disk_info["MediaName"], "size": disk_info["TotalSize"], "removable": disk_info["Internal"], "partitions": {}}
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@@ -407,7 +407,7 @@ class RemoteInstallerCatalog:
|
|||||||
})
|
})
|
||||||
|
|
||||||
available_apps = {k: v for k, v in sorted(available_apps.items(), key=lambda x: x[1]['Version'])}
|
available_apps = {k: v for k, v in sorted(available_apps.items(), key=lambda x: x[1]['Version'])}
|
||||||
|
|
||||||
return available_apps
|
return available_apps
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -108,13 +108,14 @@ def check_recovery():
|
|||||||
|
|
||||||
|
|
||||||
def get_disk_path():
|
def get_disk_path():
|
||||||
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
root_partition_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", "/"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
root_mount_path = root_partition_info["DeviceIdentifier"]
|
root_mount_path = root_partition_info["DeviceIdentifier"]
|
||||||
root_mount_path = root_mount_path[:-2] if root_mount_path.count("s") > 1 else root_mount_path
|
root_mount_path = root_mount_path[:-2] if root_mount_path.count("s") > 1 else root_mount_path
|
||||||
return root_mount_path
|
return root_mount_path
|
||||||
|
|
||||||
|
|
||||||
def check_if_root_is_apfs_snapshot():
|
def check_if_root_is_apfs_snapshot():
|
||||||
root_partition_info = plistlib.loads(subprocess.run("diskutil info -plist /".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
root_partition_info = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", "/"], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
try:
|
try:
|
||||||
is_snapshotted = root_partition_info["APFSSnapshot"]
|
is_snapshotted = root_partition_info["APFSSnapshot"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@@ -213,7 +214,7 @@ def check_oclp_boot():
|
|||||||
def check_monterey_wifi():
|
def check_monterey_wifi():
|
||||||
IO80211ElCap = "com.apple.iokit.IO80211ElCap"
|
IO80211ElCap = "com.apple.iokit.IO80211ElCap"
|
||||||
CoreCaptureElCap = "com.apple.driver.corecaptureElCap"
|
CoreCaptureElCap = "com.apple.driver.corecaptureElCap"
|
||||||
loaded_kexts: str = subprocess.run("kextcache".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
loaded_kexts: str = subprocess.run(["/usr/sbin/kextcache"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||||
if IO80211ElCap in loaded_kexts and CoreCaptureElCap in loaded_kexts:
|
if IO80211ElCap in loaded_kexts and CoreCaptureElCap in loaded_kexts:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@@ -307,7 +308,7 @@ def patching_status(os_sip, os):
|
|||||||
|
|
||||||
if os > os_data.os_data.catalina and not check_filevault_skip():
|
if os > os_data.os_data.catalina and not check_filevault_skip():
|
||||||
# Assume non-OCLP Macs do not have our APFS seal patch
|
# Assume non-OCLP Macs do not have our APFS seal patch
|
||||||
fv_status: str = subprocess.run("fdesetup status".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
fv_status: str = subprocess.run(["/usr/bin/fdesetup", "status"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode()
|
||||||
if "FileVault is Off" in fv_status:
|
if "FileVault is Off" in fv_status:
|
||||||
fv_enabled = False
|
fv_enabled = False
|
||||||
else:
|
else:
|
||||||
@@ -340,8 +341,7 @@ def cls():
|
|||||||
|
|
||||||
def check_command_line_tools():
|
def check_command_line_tools():
|
||||||
# Determine whether Command Line Tools exist
|
# Determine whether Command Line Tools exist
|
||||||
# xcode-select -p
|
xcode_select = subprocess.run(["/usr/bin/xcode-select", "--print-path"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
xcode_select = subprocess.run("xcode-select -p".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
||||||
if xcode_select.returncode == 0:
|
if xcode_select.returncode == 0:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@@ -492,7 +492,7 @@ def get_free_space(disk=None):
|
|||||||
return free
|
return free
|
||||||
|
|
||||||
def grab_mount_point_from_disk(disk):
|
def grab_mount_point_from_disk(disk):
|
||||||
data = plistlib.loads(subprocess.run(f"diskutil info -plist {disk}".split(), stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
data = plistlib.loads(subprocess.run(["/usr/sbin/diskutil", "info", "-plist", disk], stdout=subprocess.PIPE).stdout.decode().strip().encode())
|
||||||
return data["MountPoint"]
|
return data["MountPoint"]
|
||||||
|
|
||||||
def monitor_disk_output(disk):
|
def monitor_disk_output(disk):
|
||||||
|
|||||||
Reference in New Issue
Block a user