From 604fb7e28f996761d8e0ef9975dc3ae7f68fae3f Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk Date: Wed, 26 Oct 2022 14:50:04 -0600 Subject: [PATCH] sys_patch.py: Handle migrated kexts from old installs --- CHANGELOG.md | 2 ++ resources/sys_patch.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7774a5fec..bb6d629a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ - ie. stock SSD found in MacBookAir6,x - Lax KDK N-1 logic to allow 1 minor version difference - ex. Allow 13.0 KDK on 13.1 +- Clean out `/Library/Extensions` on KDK-less root patches + - Ensures old, incompatible kexts are not linked against ## 0.5.0 - Ventura Specific Updates: diff --git a/resources/sys_patch.py b/resources/sys_patch.py index 5d79b8295..209dd1251 100644 --- a/resources/sys_patch.py +++ b/resources/sys_patch.py @@ -36,6 +36,7 @@ import plistlib import shutil import subprocess from pathlib import Path +from datetime import datetime from resources import constants, utilities, sys_patch_download, sys_patch_detect, sys_patch_auto, sys_patch_helpers, kdk_handler from data import os_data @@ -354,6 +355,15 @@ class PatchSysVolume: continue self.remove_file("/Library/Extensions", file) + # Handle situations where users migrated from older OSes with a lot of garbage in /L*/E* + # ex. Nvidia Web Drivers, NetUSB, dosdude1's patches, etc. + # Delete if file's age is older than October 2021 (year before Ventura) + if self.constants.detected_os < os_data.os_data.ventura: + return + for file in Path("/Library/Extensions").glob("*.kext"): + if datetime.fromtimestamp(file.stat().st_mtime) < datetime(2021, 10, 1): + self.remove_file("/Library/Extensions", file.name) + def write_patchset(self, patchset): destination_path = f"{self.mount_location}/System/Library/CoreServices" file_name = "OpenCore-Legacy-Patcher.plist"