From ca30e5e4e7100b32aca5d2b25cd962ec0241998f Mon Sep 17 00:00:00 2001 From: Iva Horn Date: Thu, 8 Jan 2026 10:04:18 +0100 Subject: [PATCH] fix(mac-crafter): Include dynamic libraries of frameworks directory in signing. Signed-off-by: Iva Horn --- .../mac-crafter/Sources/Utils/Signer.swift | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/admin/osx/mac-crafter/Sources/Utils/Signer.swift b/admin/osx/mac-crafter/Sources/Utils/Signer.swift index 69857e7399..31ef3e85b1 100644 --- a/admin/osx/mac-crafter/Sources/Utils/Signer.swift +++ b/admin/osx/mac-crafter/Sources/Utils/Signer.swift @@ -21,9 +21,11 @@ enum Signer: Signing { let dynamicFrameworksLocation = url .appendingPathComponent("Contents") .appendingPathComponent("PlugIns") - + + Log.info("Looking for dynamic libraries in \(dynamicFrameworksLocation.path)") + guard let enumerator = FileManager.default.enumerator(at: dynamicFrameworksLocation, includingPropertiesForKeys: nil) else { - fatalError("ERROR: Failed to get enumerator for: \(url.path)") + throw MacCrafterError.environmentError("Failed to get enumerator for: \(url.path)") } let dynamicLibaries: [URL] = enumerator.compactMap { element in @@ -38,7 +40,8 @@ enum Signer: Signing { guard candidate.pathExtension == "dylib" else { return nil } - + + Log.info("Found dynamic library: \(candidate.path)") return candidate } @@ -54,16 +57,18 @@ enum Signer: Signing { let pluginsLocation = url .appendingPathComponent("Contents") .appendingPathComponent("PlugIns") - + + Log.info("Looking for extensions in \(pluginsLocation.path)") var items = try FileManager.default.contentsOfDirectory(at: pluginsLocation, includingPropertiesForKeys: nil) items.removeAll { item in - if item.path.hasSuffix(".appex") == false { + if item.path.hasSuffix(".appex") { + Log.info("Found extension bundle: \(item.path)") + return false + } else { + Log.info("Skipping item that is not an extension bundle: \(item.path)") return true } - - Log.info("Found extension bundle: \(item.path)") - return false } return items @@ -78,16 +83,18 @@ enum Signer: Signing { let frameworksLocation = url .appendingPathComponent("Contents") .appendingPathComponent("Frameworks") - + + Log.info("Looking for frameworks in \(frameworksLocation.path)") var items = try FileManager.default.contentsOfDirectory(at: frameworksLocation, includingPropertiesForKeys: nil) items.removeAll { item in - if item.path.hasSuffix(".framework") == false { + if ["dylib", "framework"].contains(item.pathExtension) { + Log.info("Found item to sign: \(item.path)") + return false + } else { + Log.info("Skipping item due to invalid path extension: \(item.path)") return true } - - Log.info("Found framework bundle: \(item.path)") - return false } return items