Fixes for embedding SDK dependencies. (#922)

This commit is contained in:
Kiran Thorat
2020-08-06 09:13:13 +10:00
committed by GitHub
parent 727a648623
commit 691ca93677
3 changed files with 26 additions and 1 deletions
+3
View File
@@ -4,6 +4,9 @@
- Add `Scheme.Test.TestTarget.skipped` to allow skipping of an entire test target. [#916](https://github.com/yonaskolb/XcodeGen/pull/916) @codeman9
#### Fixed
- Allow SDK dependencies to be embedded. [#922](https://github.com/yonaskolb/XcodeGen/pull/922) @k-thorat
## 2.17.0
#### Added
@@ -827,6 +827,13 @@ public class PBXProjGenerator {
)
targetFrameworkBuildFiles.append(buildFile)
if dependency.embed == true {
let embedFile = addObject(
PBXBuildFile(file: fileReference, settings: getEmbedSettings(dependency: dependency, codeSign: dependency.codeSign ?? true))
)
copyFrameworksReferences.append(embedFile)
}
case .carthage(let findFrameworks, let linkType):
let findFrameworks = findFrameworks ?? project.options.findCarthageFrameworks
let allDependencies = findFrameworks
@@ -559,6 +559,9 @@ class ProjectGeneratorTests: XCTestCase {
Dependency(type: .package(product: "RxCocoa"), reference: "RxSwift"),
Dependency(type: .package(product: "RxRelay"), reference: "RxSwift"),
// Validate - Do not link package
Dependency(type: .package(product: "KeychainAccess"), reference: "KeychainAccess", link: false),
// Statically linked, so don't embed into test
Dependency(type: .target, reference: staticLibrary.name),
@@ -679,25 +682,37 @@ class ProjectGeneratorTests: XCTestCase {
iosFrameworkB.filename,
])
let XCTestPath = "Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework"
let GXToolsPath = "Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/GXTools.framework"
let XCTAutomationPath = "Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/XCTAutomationSupport.framework"
let stickerPack = Target(
name: "MyStickerApp",
type: .stickerPack,
platform: .iOS,
dependencies: [
Dependency(type: .sdk(root: nil), reference: "NotificationCenter.framework"),
Dependency(type: .sdk(root: "DEVELOPER_DIR"), reference: "Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework"),
Dependency(type: .sdk(root: "DEVELOPER_DIR"), reference: XCTestPath),
Dependency(type: .sdk(root: "DEVELOPER_DIR"), reference: GXToolsPath, embed: true),
Dependency(type: .sdk(root: "DEVELOPER_DIR"), reference: XCTAutomationPath, embed: true, codeSign: true),
]
)
expectedResourceFiles[stickerPack.name] = nil
expectedLinkedFiles[stickerPack.name] = Set([
"XCTest.framework",
"NotificationCenter.framework",
"GXTools.framework",
"XCTAutomationSupport.framework"
])
expectedEmbeddedFrameworks[stickerPack.name] = Set([
"GXTools.framework",
"XCTAutomationSupport.framework"
])
let targets = [app, iosFrameworkZ, iosFrameworkX, staticLibrary, resourceBundle, iosFrameworkA, iosFrameworkB, appTest, appTestWithoutTransitive, stickerPack]
let packages: [String: SwiftPackage] = [
"RxSwift": .remote(url: "https://github.com/ReactiveX/RxSwift", versionRequirement: .upToNextMajorVersion("5.1.1")),
"KeychainAccess": .remote(url: "https://github.com/kishikawakatsumi/KeychainAccess", versionRequirement: .upToNextMajorVersion("4.2.0"))
]
let project = Project(