From f0cceba20f3ced8a405ffa1c848fb9104ffc418d Mon Sep 17 00:00:00 2001 From: Hoang Hong Quan Date: Tue, 10 Jun 2025 02:47:13 +0700 Subject: [PATCH] Add support for macOS Tahoe 26 --- README.md | 2 +- Scripts/datasets/kext_data.py | 2 +- Scripts/datasets/mac_model_data.py | 22 +++++++++++----------- Scripts/datasets/os_data.py | 14 ++++++++++---- Scripts/kext_maestro.py | 11 ++++++----- Scripts/smbios.py | 2 +- 6 files changed, 30 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 197a6ad..cbd8a39 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ |----------------|-----------------------------------------------------------------------------------------------------| | **CPU** | Intel: Nehalem and Westmere (1nd Gen) → Arrow Lake (15th Gen/Core Ultra Series 2)
AMD: Ryzen and Threadripper with [AMD Vanilla](https://github.com/AMD-OSX/AMD_Vanilla) | | **GPU** | Intel iGPU: Iron Lake (1nd Gen) → Ice Lake (10th Gen)
AMD APU: The entire Vega Raven ASIC family (Ryzen 1xxx → 5xxx, 7x30 series)
AMD dGPU: Navi 23, Navi 22, Navi 21 generations, and older series
NVIDIA: Kepler, Pascal, Maxwell, Fermi, Tesla generations | - | **macOS** | macOS High Sierra → macOS Sequoia | + | **macOS** | macOS High Sierra → macOS Tahoe | 2. **ACPI Patches and Kexts** Automatically detects and adds ACPI patches and kexts based on hardware configuration. diff --git a/Scripts/datasets/kext_data.py b/Scripts/datasets/kext_data.py index e56bc46..423eba6 100644 --- a/Scripts/datasets/kext_data.py +++ b/Scripts/datasets/kext_data.py @@ -8,7 +8,7 @@ class KextInfo: self.category = category self.required = required self.min_darwin_version = min_darwin_version or os_data.get_lowest_darwin_version() - self.max_darwin_version = max_darwin_version or os_data.get_latest_darwin_version() + self.max_darwin_version = max_darwin_version or os_data.get_latest_darwin_version(include_beta=False) self.requires_kexts = requires_kexts self.conflict_group_id = conflict_group_id self.github_repo = github_repo diff --git a/Scripts/datasets/mac_model_data.py b/Scripts/datasets/mac_model_data.py index 1a5a017..8bb4307 100644 --- a/Scripts/datasets/mac_model_data.py +++ b/Scripts/datasets/mac_model_data.py @@ -30,8 +30,8 @@ mac_devices = [ MacDevice("iMac18,1", "i5-7360U", "Kaby Lake", None, "16.5.0", "22.99.99"), MacDevice("iMac18,2", "i5-7400", "Kaby Lake", "AMD Radeon Pro 555", "16.5.0", "22.99.99"), MacDevice("iMac18,3", "i5-7600K", "Kaby Lake", "AMD Radeon Pro 570", "16.5.0", "22.99.99"), - MacDevice("iMac19,1", "i9-9900K", "Coffee Lake", "AMD Radeon Pro 570X", "18.5.0"), - MacDevice("iMac19,2", "i5-8500", "Coffee Lake", "AMD Radeon Pro 555X", "18.5.0"), + MacDevice("iMac19,1", "i9-9900K", "Coffee Lake", "AMD Radeon Pro 570X", "18.5.0", "24.99.99"), + MacDevice("iMac19,2", "i5-8500", "Coffee Lake", "AMD Radeon Pro 555X", "18.5.0", "24.99.99"), MacDevice("iMac20,1", "i5-10500", "Comet Lake", "AMD Radeon Pro 5300", "19.6.0"), MacDevice("iMac20,2", "i9-10910", "Comet Lake", "AMD Radeon Pro 5300", "19.6.0"), # MacBook Models @@ -47,9 +47,9 @@ mac_devices = [ MacDevice("MacBookAir6,2", "i5-4250U", "Haswell", None, "12.4.0", "20.99.99"), MacDevice("MacBookAir7,1", "i5-5250U", "Broadwell", None, "14.1.0", "21.99.99"), MacDevice("MacBookAir7,2", "i5-5250U", "Broadwell", None, "14.1.0", "21.99.99"), - MacDevice("MacBookAir8,1", "i5-8210Y", "Amber Lake", None, "18.2.0"), - MacDevice("MacBookAir8,2", "i5-8210Y", "Amber Lake", None, "18.6.0"), - MacDevice("MacBookAir9,1", "i3-1000NG4", "Ice Lake", None, "19.4.0"), + MacDevice("MacBookAir8,1", "i5-8210Y", "Amber Lake", None, "18.2.0", "24.99.99"), + MacDevice("MacBookAir8,2", "i5-8210Y", "Amber Lake", None, "18.6.0", "24.99.99"), + MacDevice("MacBookAir9,1", "i3-1000NG4", "Ice Lake", None, "19.4.0", "24.99.99"), # MacBookPro Models MacDevice("MacBookPro6,1", "i7-640M", "Arrandale", "NVIDIA GeForce GT 330M", "10.3.0", "17.99.99"), MacDevice("MacBookPro6,2", "i7-640M", "Arrandale", "NVIDIA GeForce GT 330M", "10.3.0", "17.99.99"), @@ -72,10 +72,10 @@ mac_devices = [ MacDevice("MacBookPro14,1", "i5-7360U", "Kaby Lake", None, "16.6.0", "22.99.99"), MacDevice("MacBookPro14,2", "i5-7267U", "Kaby Lake", None, "16.6.0", "22.99.99"), MacDevice("MacBookPro14,3", "i7-7700HQ", "Kaby Lake", "AMD Radeon Pro 555", "16.6.0", "22.99.99"), - MacDevice("MacBookPro15,1", "i7-8750H", "Coffee Lake", "AMD Radeon Pro 555X", "17.99.99"), - MacDevice("MacBookPro15,2", "i7-8559U", "Coffee Lake", None, "17.99.99"), - MacDevice("MacBookPro15,3", "i7-8850H", "Coffee Lake", "AMD Radeon Pro Vega 16", "18.2.0"), - MacDevice("MacBookPro15,4", "i5-8257U", "Coffee Lake", None, "18.6.0"), + MacDevice("MacBookPro15,1", "i7-8750H", "Coffee Lake", "AMD Radeon Pro 555X", "17.99.99", "24.99.99"), + MacDevice("MacBookPro15,2", "i7-8559U", "Coffee Lake", None, "17.99.99", "24.99.99"), + MacDevice("MacBookPro15,3", "i7-8850H", "Coffee Lake", "AMD Radeon Pro Vega 16", "18.2.0", "24.99.99"), + MacDevice("MacBookPro15,4", "i5-8257U", "Coffee Lake", None, "18.6.0", "24.99.99"), MacDevice("MacBookPro16,1", "i7-9750H", "Coffee Lake", "AMD Radeon Pro 5300", "19.0.0"), MacDevice("MacBookPro16,2", "i5-1038NG7", "Ice Lake", None, "19.4.0"), MacDevice("MacBookPro16,3", "i5-8257U", "Coffee Lake", None, "19.4.0"), @@ -87,9 +87,9 @@ mac_devices = [ MacDevice("Macmini6,1", "i5-3210M", "Ivy Bridge", None, "10.8.1", "19.99.99"), MacDevice("Macmini6,2", "i7-3615QM", "Ivy Bridge", None, "10.8.1", "19.99.99"), MacDevice("Macmini7,1", "i5-4260U", "Haswell", None, "14.0.0", "21.99.99"), - MacDevice("Macmini8,1", "i7-8700B", "Coffee Lake", None, "18.0.0"), + MacDevice("Macmini8,1", "i7-8700B", "Coffee Lake", None, "18.0.0", "24.99.99"), # iMacPro Models - MacDevice("iMacPro1,1", "W-2140B", "Skylake-W", "AMD Radeon RX Vega 56", "17.3.0"), + MacDevice("iMacPro1,1", "W-2140B", "Skylake-W", "AMD Radeon RX Vega 56", "17.3.0", "24.99.99"), # MacPro Models MacDevice("MacPro5,1", "X5675 x2", "Nehalem/Westmere", "ATI Radeon HD 5770", "10.4.0", "18.99.99"), MacDevice("MacPro6,1", "E5-1620 v2", "Ivy Bridge EP", "AMD FirePro D300", "13.0.0", "21.99.99"), diff --git a/Scripts/datasets/os_data.py b/Scripts/datasets/os_data.py index 30797e7..12bb139 100644 --- a/Scripts/datasets/os_data.py +++ b/Scripts/datasets/os_data.py @@ -1,7 +1,7 @@ class macOSVersionInfo: def __init__(self, name, macos_version, release_status = "final"): self.name = name - self.darwin_version = (int(macos_version.split(".")[1]) + 4) if "10." in macos_version else (int(macos_version.split(".")[0]) + 9) + self.darwin_version = (int(macos_version.split(".")[1]) + 4) if "10." in macos_version else (int(macos_version.split(".")[0]) + 9) if macos_version.startswith("1") else (int(macos_version.split(".")[0]) - 1) self.macos_version = macos_version self.release_status = release_status @@ -13,11 +13,17 @@ macos_versions = [ macOSVersionInfo("Monterey", "12"), macOSVersionInfo("Ventura", "13"), macOSVersionInfo("Sonoma", "14"), - macOSVersionInfo("Sequoia", "15") + macOSVersionInfo("Sequoia", "15"), + macOSVersionInfo("Tahoe", "26", "beta") ] -def get_latest_darwin_version(): - return "{}.{}.{}".format(macos_versions[-1].darwin_version, 99, 99) +def get_latest_darwin_version(include_beta=True): + for macos_version in macos_versions[::-1]: + if include_beta: + return "{}.{}.{}".format(macos_version.darwin_version, 99, 99) + else: + if macos_version.release_status == "final": + return "{}.{}.{}".format(macos_version.darwin_version, 99, 99) def get_lowest_darwin_version(): return "{}.{}.{}".format(macos_versions[0].darwin_version, 0, 0) diff --git a/Scripts/kext_maestro.py b/Scripts/kext_maestro.py index 241fdbc..7f79511 100644 --- a/Scripts/kext_maestro.py +++ b/Scripts/kext_maestro.py @@ -502,12 +502,13 @@ class KextMaestro: bundle["MaxKernel"] = os_data.get_latest_darwin_version() bundle["MinKernel"] = os_data.get_lowest_darwin_version() - - kext_index = kext_data.kext_index_by_name.get(os.path.splitext(os.path.basename(bundle.get("BundlePath")))[0]) - if kext_index: - bundle["MaxKernel"] = self.kexts[kext_index].max_darwin_version - bundle["MinKernel"] = self.kexts[kext_index].min_darwin_version + if not "Beta" in os_data.get_macos_name_by_darwin(macos_version): + kext_index = kext_data.kext_index_by_name.get(os.path.splitext(os.path.basename(bundle.get("BundlePath")))[0]) + + if kext_index: + bundle["MaxKernel"] = self.kexts[kext_index].max_darwin_version + bundle["MinKernel"] = self.kexts[kext_index].min_darwin_version for dep_identifier in bundle.get("BundleLibraries"): if dep_identifier in bundle_dict: diff --git a/Scripts/smbios.py b/Scripts/smbios.py index b4aa194..efc5612 100644 --- a/Scripts/smbios.py +++ b/Scripts/smbios.py @@ -80,7 +80,7 @@ class SMBIOS: platform = "NUC" if "NUC" in hardware_report.get("Motherboard").get("Name") else hardware_report.get("Motherboard").get("Platform") codename = hardware_report.get("CPU").get("Codename") - smbios_model = "MacBookPro16,3" if "Laptop" in platform else "iMacPro1,1" + smbios_model = "MacBookPro16,3" if "Laptop" in platform else "iMacPro1,1" if self.utils.parse_darwin_version(macos_version) < self.utils.parse_darwin_version("25.0.0") else "MacPro7,1" if codename in ("Lynnfield", "Clarkdale") and "Xeon" not in hardware_report.get("CPU").get("Processor Name") and self.utils.parse_darwin_version(macos_version) < self.utils.parse_darwin_version("19.0.0"): smbios_model = "iMac11,1" if codename in "Lynnfield" else "iMac11,2"