From 9f82f46a4947af3df73e931e25ef1289ac07765b Mon Sep 17 00:00:00 2001 From: Russ Shanahan Date: Fri, 12 Jul 2024 18:17:45 -0400 Subject: [PATCH] fix: SPM build issues with Xcode 16 (issue #1793) https://github.com/parse-community/Parse-SDK-iOS-OSX/issues/1793 There is an issue with the Package.swift file where it uses wildcard globbing to refer to all the private header directories that should be included when building. It turns out that it was a mistake that Xcode ever supported wildcard globbing in the first place, as described here: https://forums.swift.org/t/recursive-headersearchpath/59769 To fix it, we are replacing the wildcard glob with a list of all header directories. This issue was first observed on Xcode 16.0.0 beta 1. I confirmed that it now builds correctly on Xcode 16.0.0 beta 2. --- Package.swift | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 6acdeac3f..b92ee40aa 100644 --- a/Package.swift +++ b/Package.swift @@ -29,7 +29,93 @@ let package = Package( exclude: ["Resources/Parse-tvOS.Info.plist", "Resources/Parse-iOS.Info.plist", "Resources/Parse-OSX.Info.plist", "Resources/Parse-watchOS.Info.plist"], resources: [.process("Resources")], publicHeadersPath: "Source", - cSettings: [.headerSearchPath("Internal/**")] + cSettings: [ + .headerSearchPath("Internal"), + .headerSearchPath("Internal/ACL"), + .headerSearchPath("Internal/ACL/DefaultACLController"), + .headerSearchPath("Internal/ACL/State"), + .headerSearchPath("Internal/Analytics"), + .headerSearchPath("Internal/Analytics/Controller"), + .headerSearchPath("Internal/Analytics/Utilities"), + .headerSearchPath("Internal/CloudCode"), + .headerSearchPath("Internal/Commands"), + .headerSearchPath("Internal/Commands/CommandRunner"), + .headerSearchPath("Internal/Commands/CommandRunner/URLRequestConstructor"), + .headerSearchPath("Internal/Commands/CommandRunner/URLSession"), + .headerSearchPath("Internal/Commands/CommandRunner/URLSession/Session"), + .headerSearchPath("Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate"), + .headerSearchPath("Internal/Config"), + .headerSearchPath("Internal/Config/Controller"), + .headerSearchPath("Internal/FieldOperation"), + .headerSearchPath("Internal/File"), + .headerSearchPath("Internal/File/Controller"), + .headerSearchPath("Internal/File/FileDataStream"), + .headerSearchPath("Internal/File/State"), + .headerSearchPath("Internal/HTTPRequest"), + .headerSearchPath("Internal/Installation"), + .headerSearchPath("Internal/Installation/Constants"), + .headerSearchPath("Internal/Installation/Controller"), + .headerSearchPath("Internal/Installation/CurrentInstallationController"), + .headerSearchPath("Internal/Installation/InstallationIdentifierStore"), + .headerSearchPath("Internal/KeyValueCache"), + .headerSearchPath("Internal/LocalDataStore"), + .headerSearchPath("Internal/LocalDataStore/OfflineQueryLogic"), + .headerSearchPath("Internal/LocalDataStore/OfflineStore"), + .headerSearchPath("Internal/LocalDataStore/Pin"), + .headerSearchPath("Internal/LocalDataStore/SQLite"), + .headerSearchPath("Internal/MultiProcessLock"), + .headerSearchPath("Internal/Object"), + .headerSearchPath("Internal/Object/BatchController"), + .headerSearchPath("Internal/Object/Coder"), + .headerSearchPath("Internal/Object/Coder/File"), + .headerSearchPath("Internal/Object/Constants"), + .headerSearchPath("Internal/Object/Controller"), + .headerSearchPath("Internal/Object/Controller/OfflineController"), + .headerSearchPath("Internal/Object/CurrentController"), + .headerSearchPath("Internal/Object/EstimatedData"), + .headerSearchPath("Internal/Object/FilePersistence"), + .headerSearchPath("Internal/Object/LocalIdStore"), + .headerSearchPath("Internal/Object/OperationSet"), + .headerSearchPath("Internal/Object/PinningStore"), + .headerSearchPath("Internal/Object/State"), + .headerSearchPath("Internal/Object/Subclassing"), + .headerSearchPath("Internal/Object/Utilities"), + .headerSearchPath("Internal/Persistence"), + .headerSearchPath("Internal/Persistence/Group"), + .headerSearchPath("Internal/Product"), + .headerSearchPath("Internal/Product/ProductsRequestHandler"), + .headerSearchPath("Internal/PropertyInfo"), + .headerSearchPath("Internal/Purchase"), + .headerSearchPath("Internal/Purchase/Controller"), + .headerSearchPath("Internal/Purchase/PaymentTransactionObserver"), + .headerSearchPath("Internal/Push"), + .headerSearchPath("Internal/Push/ChannelsController"), + .headerSearchPath("Internal/Push/Controller"), + .headerSearchPath("Internal/Push/Manager"), + .headerSearchPath("Internal/Push/State"), + .headerSearchPath("Internal/Push/Utilites"), + .headerSearchPath("Internal/Query"), + .headerSearchPath("Internal/Query/Controller"), + .headerSearchPath("Internal/Query/State"), + .headerSearchPath("Internal/Query/Utilities"), + .headerSearchPath("Internal/Relation"), + .headerSearchPath("Internal/Relation/State"), + .headerSearchPath("Internal/Session"), + .headerSearchPath("Internal/Session/Controller"), + .headerSearchPath("Internal/Session/Utilities"), + .headerSearchPath("Internal/ThreadSafety"), + .headerSearchPath("Internal/User"), + .headerSearchPath("Internal/User/AuthenticationProviders"), + .headerSearchPath("Internal/User/AuthenticationProviders/Controller"), + .headerSearchPath("Internal/User/AuthenticationProviders/Providers"), + .headerSearchPath("Internal/User/AuthenticationProviders/Providers/Anonymous"), + .headerSearchPath("Internal/User/Coder"), + .headerSearchPath("Internal/User/Coder/File"), + .headerSearchPath("Internal/User/Constants"), + .headerSearchPath("Internal/User/Controller"), + .headerSearchPath("Internal/User/CurrentUserController"), + .headerSearchPath("Internal/User/State"), + ] ), .target( name: "ParseLiveQuery",