From 6d87ab690d95b713bb49fb1b87d17aa4ef64a9cc Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Thu, 4 Nov 2021 11:47:07 +1100 Subject: [PATCH 01/26] Fixes Mac Catalyst support by using generic destinations properly --- Sources/CreateXCFramework/Platforms.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/CreateXCFramework/Platforms.swift b/Sources/CreateXCFramework/Platforms.swift index 31ed138..b4c1dd5 100644 --- a/Sources/CreateXCFramework/Platforms.swift +++ b/Sources/CreateXCFramework/Platforms.swift @@ -60,7 +60,7 @@ enum TargetPlatform: String, ExpressibleByArgument, CaseIterable { case .macos: return [ SDK ( - destination: "platform=macOS", + destination: "generic/platform=macOS,name=Any Mac", archiveName: "macos.xcarchive", releaseFolder: "Release", buildSettings: nil @@ -70,7 +70,7 @@ enum TargetPlatform: String, ExpressibleByArgument, CaseIterable { case .maccatalyst: return [ SDK ( - destination: "platform=macOS,variant=Mac Catalyst", + destination: "generic/platform=macOS,variant=Mac Catalyst", archiveName: "maccatalyst.xcarchive", releaseFolder: "Release-maccatalyst", buildSettings: [ "SUPPORTS_MACCATALYST": "YES" ] From f51395065b45bce6c37f41598fafb30a29fda106 Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Thu, 4 Nov 2021 11:47:32 +1100 Subject: [PATCH 02/26] Added the `--stack-evolution` option --- Sources/CreateXCFramework/Command+Options.swift | 3 +++ Sources/CreateXCFramework/Command.swift | 4 +++- Sources/CreateXCFramework/PackageInfo.swift | 6 +++++- Sources/CreateXCFramework/ProjectGenerator.swift | 12 ++++-------- Sources/CreateXCFramework/XcodeBuilder.swift | 7 ++++++- Sources/CreateXCFramework/Zipper.swift | 2 +- 6 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Sources/CreateXCFramework/Command+Options.swift b/Sources/CreateXCFramework/Command+Options.swift index 4cf1fc8..238e46c 100644 --- a/Sources/CreateXCFramework/Command+Options.swift +++ b/Sources/CreateXCFramework/Command+Options.swift @@ -37,6 +37,9 @@ extension Command { @Option(help: "The path to a .xcconfig file that can be used to override Xcode build settings. Relative to the package path.") var xcconfig: String? + @Flag(help: "Enables Library Evolution for the whole build stack. Normally we apply it only to the targets listed to be built to work around issues with projects that don't support it.") + var stackEvolution: Bool = false + @Option(help: ArgumentHelp("Arbitrary Xcode build settings that are passed directly to the `xcodebuild` invocation. Can be specified multiple times.", valueName: "NAME=VALUE")) var xcSetting: [BuildSetting] = [] diff --git a/Sources/CreateXCFramework/Command.swift b/Sources/CreateXCFramework/Command.swift index 299f04e..6411036 100644 --- a/Sources/CreateXCFramework/Command.swift +++ b/Sources/CreateXCFramework/Command.swift @@ -77,7 +77,9 @@ struct Command: ParsableCommand { // we've applied the xcconfig to everything, but some dependencies (*cough* swift-nio) // have build errors, so we remove it from targets we're not building - try project.enableDistribution(targets: productNames, xcconfig: AbsolutePath(package.distributionBuildXcconfig.path).relative(to: AbsolutePath(package.rootDirectory.path))) + if self.options.stackEvolution == false { + try project.enableDistribution(targets: productNames, xcconfig: AbsolutePath(package.distributionBuildXcconfig.path).relative(to: AbsolutePath(package.rootDirectory.path))) + } // save the project try project.save(to: generator.projectPath) diff --git a/Sources/CreateXCFramework/PackageInfo.swift b/Sources/CreateXCFramework/PackageInfo.swift index 1547e69..7d55539 100644 --- a/Sources/CreateXCFramework/PackageInfo.swift +++ b/Sources/CreateXCFramework/PackageInfo.swift @@ -27,6 +27,10 @@ struct PackageInfo { .absoluteURL } + var hasDistributionBuildXcconfig: Bool { + self.overridesXcconfig != nil || self.options.stackEvolution == false + } + var distributionBuildXcconfig: Foundation.URL { return self.projectBuildDirectory .appendingPathComponent("Distribution.xcconfig") @@ -232,7 +236,7 @@ enum SupportedPlatforms { case packageValid (plan: [SupportedPlatform]) } -extension SupportedPlatform: Equatable, Comparable { +extension SupportedPlatform: Comparable { public static func == (lhs: SupportedPlatform, rhs: SupportedPlatform) -> Bool { return lhs.platform == rhs.platform && lhs.version == rhs.version } diff --git a/Sources/CreateXCFramework/ProjectGenerator.swift b/Sources/CreateXCFramework/ProjectGenerator.swift index e4b404e..b936e36 100644 --- a/Sources/CreateXCFramework/ProjectGenerator.swift +++ b/Sources/CreateXCFramework/ProjectGenerator.swift @@ -38,6 +38,10 @@ struct ProjectGenerator { /// Writes out the Xcconfig file func writeDistributionXcconfig () throws { + guard self.package.hasDistributionBuildXcconfig else { + return + } + try makeDirectories(self.projectPath) let path = AbsolutePath(self.package.distributionBuildXcconfig.path) @@ -56,14 +60,6 @@ struct ProjectGenerator { BUILD_LIBRARY_FOR_DISTRIBUTION=YES """ ) - - if package.options.platform.contains(.maccatalyst) { - stream ( - """ - SUPPORTS_MACCATALYST=YES - """ - ) - } } } diff --git a/Sources/CreateXCFramework/XcodeBuilder.swift b/Sources/CreateXCFramework/XcodeBuilder.swift index 6f6180d..a48b1e9 100644 --- a/Sources/CreateXCFramework/XcodeBuilder.swift +++ b/Sources/CreateXCFramework/XcodeBuilder.swift @@ -122,8 +122,13 @@ struct XcodeBuilder { } } + // enable evolution for the whole stack + if self.options.stackEvolution { + command.append("BUILD_LIBRARY_FOR_DISTRIBUTION=YES") + } + // add build settings provided in the invocation - options.xcSetting.forEach { setting in + self.options.xcSetting.forEach { setting in command.append("\(setting.name)=\(setting.value)") } diff --git a/Sources/CreateXCFramework/Zipper.swift b/Sources/CreateXCFramework/Zipper.swift index 81fe0f9..46b3b6d 100644 --- a/Sources/CreateXCFramework/Zipper.swift +++ b/Sources/CreateXCFramework/Zipper.swift @@ -74,7 +74,7 @@ struct Zipper { guard let packageRef = self.package.graph.packages.first(where: { $0.targets.contains(where: { $0.name == target }) }) else { return nil } guard - let dependency = self.package.workspace.state.dependencies[forNameOrIdentity: packageRef.name], + let dependency = self.package.workspace.state.dependencies[forNameOrIdentity: packageRef.manifestName], case let .checkout(checkout) = dependency.state, let version = checkout.version else { From b6d9f0affd60e6706dc0d5da3b589b18f232351d Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Thu, 4 Nov 2021 12:01:40 +1100 Subject: [PATCH 03/26] Update tests to support Xcode 13.1 and 13.2 --- .github/workflows/tests.yml | 83 +++++-------------------------------- 1 file changed, 11 insertions(+), 72 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5508a4b..b1e5270 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,57 +13,15 @@ on: - '**/*.swift' jobs: - tests-xcode-13_0: - name: Test Builds - Xcode 13.0 + tests-macos11: + name: Test Builds - macOS 11 runs-on: macos-11.0 - env: - DEVELOPER_DIR: /Applications/Xcode_13.0.app/Contents/Developer - - steps: - - name: 🛒 Checkout - uses: actions/checkout@v2 - - - name: 🧱 Build - run: make build-release - - - name: 🚩 Checkout Vexil - uses: actions/checkout@v2 - with: - repository: unsignedapps/Vexil - ref: v1.2.2 - path: Vexil - - - name: 📦 Package Vexil - run: cd Vexil && ../.build/release/swift-create-xcframework --zip --zip-version 1.2.2 --platform ios --platform macos --platform tvos --platform watchos - - tests-xcode-12_5: - name: Test Builds - Xcode 12.5 - runs-on: macos-11.0 - env: - DEVELOPER_DIR: /Applications/Xcode_12.5.1.app/Contents/Developer - - steps: - - name: 🛒 Checkout - uses: actions/checkout@v2 - - - name: 🧱 Build - run: make build-release - - - name: 🚩 Checkout Vexil - uses: actions/checkout@v2 - with: - repository: unsignedapps/Vexil - ref: v1.2.2 - path: Vexil + strategy: + matrix: + xcode: [ "12.4", "12.5.1", "13.0", "13.1", "13.2" ] - - name: 📦 Package Vexil - run: cd Vexil && ../.build/release/swift-create-xcframework --zip --zip-version 1.2.2 --platform ios --platform macos --platform tvos --platform watchos - - tests-xcode-12_4: - name: Test Builds - Xcode 12.4 - runs-on: macos-11.0 env: - DEVELOPER_DIR: /Applications/Xcode_12.4.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer steps: - name: 🛒 Checkout @@ -82,34 +40,15 @@ jobs: - name: 📦 Package Vexil run: cd Vexil && ../.build/release/swift-create-xcframework --zip --zip-version 1.2.2 --platform ios --platform macos --platform tvos --platform watchos - tests-xcode-12_3: + tests-xcode-macos10_15: name: Test Builds - Xcode 12.3 runs-on: macos-10.15 - env: - DEVELOPER_DIR: /Applications/Xcode_12.3.app/Contents/Developer - - steps: - - name: 🛒 Checkout - uses: actions/checkout@v2 + strategy: + matrix: + xcode: [ "12.2", "12.3", "12.4" ] - - name: 🧱 Build - run: make build-release - - - name: 🚩 Checkout Vexil - uses: actions/checkout@v2 - with: - repository: unsignedapps/Vexil - ref: v1.2.2 - path: Vexil - - - name: 📦 Package Vexil - run: cd Vexil && ../.build/release/swift-create-xcframework --zip --zip-version 1.2.2 --platform ios --platform macos --platform tvos --platform watchos - - tests-xcode-12_2: - name: Test Builds - Xcode 12.2 - runs-on: macos-10.15 env: - DEVELOPER_DIR: /Applications/Xcode_12.2.app/Contents/Developer + DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer steps: - name: 🛒 Checkout From 4b7d6f909bee6030786e620df7f25f61feba88a0 Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Thu, 4 Nov 2021 12:02:19 +1100 Subject: [PATCH 04/26] Fixed test name --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b1e5270..3863bef 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,7 +41,7 @@ jobs: run: cd Vexil && ../.build/release/swift-create-xcframework --zip --zip-version 1.2.2 --platform ios --platform macos --platform tvos --platform watchos tests-xcode-macos10_15: - name: Test Builds - Xcode 12.3 + name: Test Builds - macOS 10.15 runs-on: macos-10.15 strategy: matrix: From 4785977c2807478e0b3538a1d5b867a56104374b Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Thu, 4 Nov 2021 20:14:42 +1100 Subject: [PATCH 05/26] Fixed backwards compatibility on manifestName change --- Sources/CreateXCFramework/Zipper.swift | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Sources/CreateXCFramework/Zipper.swift b/Sources/CreateXCFramework/Zipper.swift index 46b3b6d..a588f7b 100644 --- a/Sources/CreateXCFramework/Zipper.swift +++ b/Sources/CreateXCFramework/Zipper.swift @@ -74,7 +74,7 @@ struct Zipper { guard let packageRef = self.package.graph.packages.first(where: { $0.targets.contains(where: { $0.name == target }) }) else { return nil } guard - let dependency = self.package.workspace.state.dependencies[forNameOrIdentity: packageRef.manifestName], + let dependency = self.package.workspace.state.dependencies[forNameOrIdentity: packageRef.packageName], case let .checkout(checkout) = dependency.state, let version = checkout.version else { @@ -91,3 +91,17 @@ struct Zipper { try FileManager.default.removeItem(at: file) } } + +#if swift(>=5.5) +private extension ResolvedPackage { + var packageName: String { + self.manifestName + } +} +#else +private extension ResolvedPackage { + var packageName: String { + self.name + } +} +#endif From a8376e964c5e29dae0290f53c3aa865bb5f34d00 Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Thu, 4 Nov 2021 22:50:48 +1100 Subject: [PATCH 06/26] Updated version to 2.1.0 --- action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.js b/action.js index 6622593..f077b45 100644 --- a/action.js +++ b/action.js @@ -4,7 +4,7 @@ const path = require('path') const artifact = require('././.action/artifact') const fs = require('fs') -const scxVersion = '2.0.0' +const scxVersion = '2.1.0' const outputPath = '.build/xcframework-zipfile.url' core.setCommandEcho(true) From d1981e4261ff069b88237306d83dbcbcc19f7bfc Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Wed, 17 Nov 2021 17:44:12 +0100 Subject: [PATCH 07/26] Fixed install version --- action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.js b/action.js index f077b45..3102d51 100644 --- a/action.js +++ b/action.js @@ -4,7 +4,7 @@ const path = require('path') const artifact = require('././.action/artifact') const fs = require('fs') -const scxVersion = '2.1.0' +const scxVersion = 'v2.1.0' const outputPath = '.build/xcframework-zipfile.url' core.setCommandEcho(true) From 0e1dcde382255b91d8d457152b43b3ee3880ff97 Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Wed, 17 Nov 2021 18:22:52 +0100 Subject: [PATCH 08/26] Added run method using mint --- action.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/action.js b/action.js index 3102d51..1fa823d 100644 --- a/action.js +++ b/action.js @@ -9,7 +9,7 @@ const outputPath = '.build/xcframework-zipfile.url' core.setCommandEcho(true) -async function run () { +async function run() { try { let packagePath = core.getInput('path', { required: false }) let targets = core.getInput('target', { required: false }) @@ -24,7 +24,7 @@ async function run () { await installUsingMintIfRequired('swift-create-xcframework', 'unsignedapps/swift-create-xcframework') // put together our options - var options = [ '--zip', '--github-action' ] + var options = ['--zip', '--github-action'] if (!!packagePath) { options.push('--package-path') options.push(packagePath) @@ -60,7 +60,7 @@ async function run () { }) } - await exec.exec('swift-create-xcframework', options) + await runUsingMint('swift-create-xcframework', options) let client = artifact.create() let files = fs.readFileSync(outputPath, { encoding: 'utf8' }) @@ -70,7 +70,7 @@ async function run () { for (var i = 0, c = files.length; i < c; i++) { let file = files[i] let name = path.basename(file) - await client.uploadArtifact(name, [ file ], path.dirname(file)) + await client.uploadArtifact(name, [file], path.dirname(file)) } } catch (error) { @@ -78,28 +78,32 @@ async function run () { } } -async function installUsingBrewIfRequired (package) { +async function installUsingBrewIfRequired(package) { if (await isInstalled(package)) { core.info(package + " is already installed.") } else { core.info("Installing " + package) - await exec.exec('brew', [ 'install', package ]) + await exec.exec('brew', ['install', package]) } } -async function installUsingMintIfRequired (command, package) { +async function installUsingMintIfRequired(command, package) { if (await isInstalled(command)) { core.info(command + " is already installed") } else { core.info("Installing " + package) - await exec.exec('mint', [ 'install', 'unsignedapps/swift-create-xcframework@' + scxVersion ]) + await exec.exec('mint', ['install', 'unsignedapps/swift-create-xcframework@' + scxVersion]) } } -async function isInstalled (command) { - return await exec.exec('which', [ command ], { silent: true, failOnStdErr: false, ignoreReturnCode: true }) == 0 +async function isInstalled(command) { + return await exec.exec('which', [command], { silent: true, failOnStdErr: false, ignoreReturnCode: true }) == 0 +} + +async function runUsingMint(command, options) { + await exec.exec('mint', ['run', command, ...options]) } run() From 3a74430ee257fc206900d8d1117f3a206a48d70d Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Wed, 13 Apr 2022 13:00:58 +0300 Subject: [PATCH 09/26] fix typo in the help overview --- Sources/CreateXCFramework/Command.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/CreateXCFramework/Command.swift b/Sources/CreateXCFramework/Command.swift index 6411036..82ba5fb 100644 --- a/Sources/CreateXCFramework/Command.swift +++ b/Sources/CreateXCFramework/Command.swift @@ -23,7 +23,7 @@ struct Command: ParsableCommand { """ Note that Swift Binary Frameworks (XCFramework) support is only available in Swift 5.1 or newer, and so it is only supported by recent versions of Xcode and the *OS SDKs. Likewise, - only Apple pplatforms are supported. + only Apple platforms are supported. Supported platforms: \(TargetPlatform.allCases.map({ $0.rawValue }).joined(separator: ", ")) """, From ccc9df17520c20e1a8163da4a8f1920a6483e10d Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Sat, 7 May 2022 23:55:10 +1000 Subject: [PATCH 10/26] Update tests.yml --- .github/workflows/tests.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3863bef..37bc374 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,6 +13,33 @@ on: - '**/*.swift' jobs: + tests-macos12: + name: Test Builds - macOS 12 + runs-on: macos-12.0 + strategy: + matrix: + xcode: [ "13.1", "13.2.1", "13.3.1" ] + + env: + DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer + + steps: + - name: 🛒 Checkout + uses: actions/checkout@v2 + + - name: 🧱 Build + run: make build-release + + - name: 🚩 Checkout Vexil + uses: actions/checkout@v2 + with: + repository: unsignedapps/Vexil + ref: v1.2.2 + path: Vexil + + - name: 📦 Package Vexil + run: cd Vexil && ../.build/release/swift-create-xcframework --zip --zip-version 1.2.2 --platform ios --platform macos --platform tvos --platform watchos + tests-macos11: name: Test Builds - macOS 11 runs-on: macos-11.0 From 0f5052cea078d7c98a866098b73793ef889f31a6 Mon Sep 17 00:00:00 2001 From: Iskandar Safarov Date: Wed, 15 Jun 2022 09:50:26 +1000 Subject: [PATCH 11/26] Fixed issue with missing(url) on latest XCodes (#63) a8376e --- Package.resolved | 24 +++++----- Package.swift | 23 ++++++++-- Sources/CreateXCFramework/PackageInfo.swift | 45 ++++++++++++++++--- .../CreateXCFramework/ProjectGenerator.swift | 21 ++++++++- Sources/CreateXCFramework/Zipper.swift | 18 +++++++- 5 files changed, 107 insertions(+), 24 deletions(-) diff --git a/Package.resolved b/Package.resolved index 6e60d66..7563169 100644 --- a/Package.resolved +++ b/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/apple/swift-argument-parser.git", "state": { "branch": null, - "revision": "83b23d940471b313427da226196661856f6ba3e0", - "version": "0.4.4" + "revision": "e394bf350e38cb100b6bc4172834770ede1b7232", + "version": "1.0.3" } }, { @@ -15,16 +15,16 @@ "repositoryURL": "https://github.com/apple/swift-crypto.git", "state": { "branch": null, - "revision": "3bea268b223651c4ab7b7b9ad62ef9b2d4143eb6", - "version": "1.1.6" + "revision": "ddb07e896a2a8af79512543b1c7eb9797f8898a5", + "version": "1.1.7" } }, { "package": "swift-driver", "repositoryURL": "https://github.com/apple/swift-driver.git", "state": { - "branch": "release/5.5", - "revision": "ba0ab62cfc3999fb47fcfa33f046677008d9b145", + "branch": "release/5.6", + "revision": "9982f32f96a2e0e597d1b4a0af4a7e997dc471be", "version": null } }, @@ -32,8 +32,8 @@ "package": "llbuild", "repositoryURL": "https://github.com/apple/swift-llbuild.git", "state": { - "branch": "release/5.5", - "revision": "b5d9b4a9995c05688ae5f3b87a0d7ac0dc45c6c6", + "branch": "release/5.6", + "revision": "acd686530e56122d916acd49a166beb9198e9b87", "version": null } }, @@ -41,8 +41,8 @@ "package": "SwiftPM", "repositoryURL": "https://github.com/apple/swift-package-manager.git", "state": { - "branch": "release/5.5", - "revision": "96c347b1419e513291f07c988f3e995363d400ed", + "branch": "release/5.6", + "revision": "286f6dc58e7211d925c3c8ef28593b45f8bfdd85", "version": null } }, @@ -50,8 +50,8 @@ "package": "swift-tools-support-core", "repositoryURL": "https://github.com/apple/swift-tools-support-core.git", "state": { - "branch": "release/5.5", - "revision": "1b21e2ce36891ed4f458421a83b5d9e886acd4cd", + "branch": "release/5.6", + "revision": "f6c8048a76e280d0f14cc378b8b5c3cfb77c61fb", "version": null } }, diff --git a/Package.swift b/Package.swift index a1439af..61325d0 100644 --- a/Package.swift +++ b/Package.swift @@ -4,7 +4,13 @@ import PackageDescription let dependencies: [Package.Dependency] -#if swift(>=5.5) +#if swift(>=5.6) +dependencies = [ + .package(url: "https://github.com/apple/swift-argument-parser.git", .exact("1.0.3")), + .package(name: "SwiftPM", url: "https://github.com/apple/swift-package-manager.git", .branch("release/5.6")), + .package(url: "https://github.com/apple/swift-tools-support-core.git", .exact("0.2.5")) +] +#elseif swift(>=5.5) dependencies = [ .package(url: "https://github.com/apple/swift-argument-parser.git", .exact("0.4.4")), .package(name: "SwiftPM", url: "https://github.com/apple/swift-package-manager.git", .branch("release/5.5")), @@ -18,13 +24,22 @@ dependencies = [ ] #endif +let platforms: [SupportedPlatform] +#if swift(>=5.6) +platforms = [ + .macOS(.v11), +] +#else +platforms = [ + .macOS(.v10_15), +] +#endif + let package = Package( name: "swift-create-xcframework", // TODO: Add Linux / Windows support - platforms: [ - .macOS(.v10_15), - ], + platforms: platforms, products: [ .executable(name: "swift-create-xcframework", targets: [ "CreateXCFramework" ]), diff --git a/Sources/CreateXCFramework/PackageInfo.swift b/Sources/CreateXCFramework/PackageInfo.swift index 7d55539..35fefbf 100644 --- a/Sources/CreateXCFramework/PackageInfo.swift +++ b/Sources/CreateXCFramework/PackageInfo.swift @@ -6,11 +6,14 @@ // import ArgumentParser +import Basics import Build import Foundation +import PackageGraph import PackageLoading import PackageModel import SPMBuildCore +import TSCBasic import Workspace import Xcodeproj @@ -53,13 +56,18 @@ struct PackageInfo { } // TODO: Map diagnostics to swift-log +#if swift(>=5.6) + let observabilitySystem = ObservabilitySystem { scope, diagnostics in + print("\(diagnostics.severity): \(diagnostics.message)") + } +#else let diagnostics = DiagnosticsEngine() +#endif let options: Command.Options -// let package: Package let graph: PackageGraph let manifest: Manifest - let toolchain: Toolchain + let toolchain: UserToolchain let workspace: Workspace @@ -74,6 +82,11 @@ struct PackageInfo { self.toolchain = try UserToolchain(destination: try .hostDestination()) + #if swift(>=5.6) + let resources = ToolchainConfiguration(swiftCompilerPath: self.toolchain.swiftCompilerPath) + let loader = ManifestLoader(toolchain: resources) + self.workspace = try Workspace(forRootPackage: root, customManifestLoader: loader) + #else #if swift(>=5.5) let resources = try UserManifestResources(swiftCompiler: self.toolchain.swiftCompiler, swiftCompilerFlags: []) #else @@ -81,8 +94,20 @@ struct PackageInfo { #endif let loader = ManifestLoader(manifestResources: resources) self.workspace = Workspace.create(forRootPackage: root, manifestLoader: loader) - - #if swift(>=5.5) + #endif + + #if swift(>=5.6) + self.graph = try workspace.loadPackageGraph(rootPath: root, observabilityScope: self.observabilitySystem.topScope) + let workspace = self.workspace + let scope = observabilitySystem.topScope + self.manifest = try tsc_await { + workspace.loadRootManifest( + at: root, + observabilityScope: scope, + completion: $0 + ) + } + #elseif swift(>=5.5) self.graph = try self.workspace.loadPackageGraph(rootPath: root, diagnostics: self.diagnostics) let swiftCompiler = toolchain.swiftCompiler self.manifest = try tsc_await { @@ -165,7 +190,7 @@ struct PackageInfo { Invalid product/target name(s): \(invalidProducts.joined(separator: "\n ")) - Available \(self.manifest.name) products: + Available \(self.manifest.displayName) products: \(allLibraryProductNames.sorted().joined(separator: "\n ")) Additional available targets: @@ -184,7 +209,7 @@ struct PackageInfo { print ( """ - \nAvailable \(self.manifest.name) products: + \nAvailable \(self.manifest.displayName) products: \(allLibraryProductNames.sorted().joined(separator: "\n ")) Additional available targets: @@ -280,3 +305,11 @@ enum PackageValidationError: LocalizedError { } } } + +#if swift(<5.6) +extension Manifest { + var displayName: String { + name + } +} +#endif diff --git a/Sources/CreateXCFramework/ProjectGenerator.swift b/Sources/CreateXCFramework/ProjectGenerator.swift index b936e36..22caf23 100644 --- a/Sources/CreateXCFramework/ProjectGenerator.swift +++ b/Sources/CreateXCFramework/ProjectGenerator.swift @@ -23,7 +23,7 @@ struct ProjectGenerator { var projectPath: AbsolutePath { let dir = AbsolutePath(self.package.projectBuildDirectory.path) - return buildXcodeprojPath(outputDir: dir, projectName: self.package.manifest.name) + return buildXcodeprojPath(outputDir: dir, projectName: self.package.manifest.displayName) } @@ -72,6 +72,20 @@ struct ProjectGenerator { try makeDirectories(path) // Generate the contents of project.xcodeproj (inside the .xcodeproj). +#if swift(>=5.6) + let project = try pbxproj ( + xcodeprojPath: path, + graph: self.package.graph, + extraDirs: [], + extraFiles: [], + options: XcodeprojOptions ( + xcconfigOverrides: (self.package.overridesXcconfig?.path).flatMap { AbsolutePath($0) }, + useLegacySchemeGenerator: true + ), + fileSystem: localFileSystem, + observabilityScope: self.package.observabilitySystem.topScope + ) +#else let project = try pbxproj ( xcodeprojPath: path, graph: self.package.graph, @@ -83,6 +97,7 @@ struct ProjectGenerator { ), diagnostics: self.package.diagnostics ) +#endif return project } @@ -122,7 +137,11 @@ extension Xcode.Project { try open(path.appending(component: "project.pbxproj")) { stream in // Serialize the project model we created to a plist, and return // its string description. +#if swift(>=5.6) + let str = try "// !$*UTF8*$!\n" + self.generatePlist().description +#else let str = "// !$*UTF8*$!\n" + self.generatePlist().description +#endif stream(str) } diff --git a/Sources/CreateXCFramework/Zipper.swift b/Sources/CreateXCFramework/Zipper.swift index a588f7b..f5f1f56 100644 --- a/Sources/CreateXCFramework/Zipper.swift +++ b/Sources/CreateXCFramework/Zipper.swift @@ -6,6 +6,7 @@ // import Foundation +import PackageGraph import PackageModel import TSCBasic import Workspace @@ -51,7 +52,11 @@ struct Zipper { } func checksum (file: Foundation.URL) throws -> Foundation.URL { +#if swift(>=5.6) + let sum = try self.package.workspace.checksum(forBinaryArtifactAt: AbsolutePath(file.path)) +#else let sum = self.package.workspace.checksum(forBinaryArtifactAt: AbsolutePath(file.path), diagnostics: self.package.diagnostics) +#endif let checksumFile = file.deletingPathExtension().appendingPathExtension("sha256") try Data(sum.utf8).write(to: checksumFile) return checksumFile @@ -73,6 +78,14 @@ struct Zipper { // find the package that contains our target guard let packageRef = self.package.graph.packages.first(where: { $0.targets.contains(where: { $0.name == target }) }) else { return nil } +#if swift(>=5.6) + guard + let dependency = self.package.workspace.state.dependencies[packageRef.identity], + case let .custom(version, _) = dependency.state + else { + return fallback.flatMap { "-" + $0 } + } +#else guard let dependency = self.package.workspace.state.dependencies[forNameOrIdentity: packageRef.packageName], case let .checkout(checkout) = dependency.state, @@ -80,6 +93,7 @@ struct Zipper { else { return fallback.flatMap { "-" + $0 } } +#endif return "-" + version.description } @@ -92,7 +106,9 @@ struct Zipper { } } -#if swift(>=5.5) +#if swift(>=5.6) +// Intentionally left blank +#elseif swift(>=5.5) private extension ResolvedPackage { var packageName: String { self.manifestName From 02477571ecadbaa3b8210396c84b1026e9d4f609 Mon Sep 17 00:00:00 2001 From: Iskandar Safarov Date: Wed, 15 Jun 2022 17:37:17 +1000 Subject: [PATCH 12/26] ifdef'ed newly imported modules --- Sources/CreateXCFramework/PackageInfo.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Sources/CreateXCFramework/PackageInfo.swift b/Sources/CreateXCFramework/PackageInfo.swift index 35fefbf..6dc3357 100644 --- a/Sources/CreateXCFramework/PackageInfo.swift +++ b/Sources/CreateXCFramework/PackageInfo.swift @@ -6,14 +6,20 @@ // import ArgumentParser +#if swift(>=5.6) import Basics +#endif import Build import Foundation +#if swift(>=5.6) import PackageGraph +#endif import PackageLoading import PackageModel import SPMBuildCore +#if swift(>=5.6) import TSCBasic +#endif import Workspace import Xcodeproj From 9169ecfab6ead1040bb9ff82ec7426f12a29bf9f Mon Sep 17 00:00:00 2001 From: Iskandar Safarov Date: Wed, 15 Jun 2022 17:41:30 +1000 Subject: [PATCH 13/26] Another ifdef --- Sources/CreateXCFramework/Zipper.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Sources/CreateXCFramework/Zipper.swift b/Sources/CreateXCFramework/Zipper.swift index f5f1f56..6f41b1a 100644 --- a/Sources/CreateXCFramework/Zipper.swift +++ b/Sources/CreateXCFramework/Zipper.swift @@ -6,7 +6,9 @@ // import Foundation +#if swift(>=5.6) import PackageGraph +#endif import PackageModel import TSCBasic import Workspace From eb0b2558cbab8d5ce38a036954ad2d82ece9b775 Mon Sep 17 00:00:00 2001 From: Iskandar Safarov Date: Wed, 15 Jun 2022 19:43:41 +1000 Subject: [PATCH 14/26] Fixed swiftlint warnings --- Sources/CreateXCFramework/PackageInfo.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/CreateXCFramework/PackageInfo.swift b/Sources/CreateXCFramework/PackageInfo.swift index 6dc3357..ac37094 100644 --- a/Sources/CreateXCFramework/PackageInfo.swift +++ b/Sources/CreateXCFramework/PackageInfo.swift @@ -63,7 +63,7 @@ struct PackageInfo { // TODO: Map diagnostics to swift-log #if swift(>=5.6) - let observabilitySystem = ObservabilitySystem { scope, diagnostics in + let observabilitySystem = ObservabilitySystem { _, diagnostics in print("\(diagnostics.severity): \(diagnostics.message)") } #else @@ -79,7 +79,7 @@ struct PackageInfo { // MARK: - Initialisation - init (options: Command.Options) throws { + init (options: Command.Options) throws { // swiftlint:disable:this function_body_length self.options = options self.rootDirectory = Foundation.URL(fileURLWithPath: options.packagePath, isDirectory: true).absoluteURL self.buildDirectory = self.rootDirectory.appendingPathComponent(options.buildPath, isDirectory: true).absoluteURL From a3dd802a41416964205e0171a12b1131a785156d Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Fri, 17 Jun 2022 12:20:03 +1000 Subject: [PATCH 15/26] Added 13.4.1 --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 37bc374..ef958ad 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ jobs: runs-on: macos-12.0 strategy: matrix: - xcode: [ "13.1", "13.2.1", "13.3.1" ] + xcode: [ "13.1", "13.2.1", "13.3.1", "13.4.1" ] env: DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer From 1b5a89f4b12a999d5fd924e852fb7408a928512d Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Fri, 17 Jun 2022 12:59:09 +1000 Subject: [PATCH 16/26] Fixed macOS 12 image name --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ef958ad..e76adf0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,7 +15,7 @@ on: jobs: tests-macos12: name: Test Builds - macOS 12 - runs-on: macos-12.0 + runs-on: macos-12 strategy: matrix: xcode: [ "13.1", "13.2.1", "13.3.1", "13.4.1" ] From f0370db90e8d5c0e49271dc151dcac0088424a06 Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Fri, 17 Jun 2022 15:05:41 +1000 Subject: [PATCH 17/26] Update action.js --- action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.js b/action.js index 1fa823d..7bd21e1 100644 --- a/action.js +++ b/action.js @@ -4,7 +4,7 @@ const path = require('path') const artifact = require('././.action/artifact') const fs = require('fs') -const scxVersion = 'v2.1.0' +const scxVersion = 'v2.2.0' const outputPath = '.build/xcframework-zipfile.url' core.setCommandEcho(true) From 7127a0da9757a5552c67f195b5bb53e2c549b03b Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Fri, 17 Jun 2022 15:06:59 +1000 Subject: [PATCH 18/26] Update Command.swift --- Sources/CreateXCFramework/Command.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/CreateXCFramework/Command.swift b/Sources/CreateXCFramework/Command.swift index 82ba5fb..bdaf996 100644 --- a/Sources/CreateXCFramework/Command.swift +++ b/Sources/CreateXCFramework/Command.swift @@ -27,7 +27,7 @@ struct Command: ParsableCommand { Supported platforms: \(TargetPlatform.allCases.map({ $0.rawValue }).joined(separator: ", ")) """, - version: "1.4.0" + version: "2.2.0" ) From 7b118670b8f9a07bc6d6538243b112762f29f918 Mon Sep 17 00:00:00 2001 From: giginet Date: Thu, 18 Aug 2022 20:46:54 +0900 Subject: [PATCH 19/26] Update dependencies for Swift 5.7 --- Package.resolved | 34 ++++++++++++++----- Package.swift | 8 ++++- Sources/CreateXCFramework/PackageInfo.swift | 5 ++- .../CreateXCFramework/ProjectGenerator.swift | 2 +- Sources/CreateXCFramework/Zipper.swift | 27 ++++++++++++++- 5 files changed, 64 insertions(+), 12 deletions(-) diff --git a/Package.resolved b/Package.resolved index 7563169..836a1b4 100644 --- a/Package.resolved +++ b/Package.resolved @@ -10,6 +10,15 @@ "version": "1.0.3" } }, + { + "package": "swift-collections", + "repositoryURL": "https://github.com/apple/swift-collections.git", + "state": { + "branch": null, + "revision": "48254824bb4248676bf7ce56014ff57b142b77eb", + "version": "1.0.2" + } + }, { "package": "swift-crypto", "repositoryURL": "https://github.com/apple/swift-crypto.git", @@ -23,8 +32,8 @@ "package": "swift-driver", "repositoryURL": "https://github.com/apple/swift-driver.git", "state": { - "branch": "release/5.6", - "revision": "9982f32f96a2e0e597d1b4a0af4a7e997dc471be", + "branch": "release/5.7", + "revision": "3d1af45a920fb1a4c3a1a3ca416fdd49dc8d48b3", "version": null } }, @@ -32,8 +41,8 @@ "package": "llbuild", "repositoryURL": "https://github.com/apple/swift-llbuild.git", "state": { - "branch": "release/5.6", - "revision": "acd686530e56122d916acd49a166beb9198e9b87", + "branch": "release/5.7", + "revision": "e2c27ee7ae7bd82ba35e97bac3c453faa582afd9", "version": null } }, @@ -41,17 +50,26 @@ "package": "SwiftPM", "repositoryURL": "https://github.com/apple/swift-package-manager.git", "state": { - "branch": "release/5.6", - "revision": "286f6dc58e7211d925c3c8ef28593b45f8bfdd85", + "branch": "release/5.7", + "revision": "9f3157bfb7d5dc06cac36b4c86e441136067b7ce", "version": null } }, + { + "package": "swift-system", + "repositoryURL": "https://github.com/apple/swift-system.git", + "state": { + "branch": null, + "revision": "836bc4557b74fe6d2660218d56e3ce96aff76574", + "version": "1.1.1" + } + }, { "package": "swift-tools-support-core", "repositoryURL": "https://github.com/apple/swift-tools-support-core.git", "state": { - "branch": "release/5.6", - "revision": "f6c8048a76e280d0f14cc378b8b5c3cfb77c61fb", + "branch": "release/5.7", + "revision": "184eba382f6abbb362ffc02942d790ff35019ad4", "version": null } }, diff --git a/Package.swift b/Package.swift index 61325d0..3caea99 100644 --- a/Package.swift +++ b/Package.swift @@ -4,7 +4,13 @@ import PackageDescription let dependencies: [Package.Dependency] -#if swift(>=5.6) +#if swift(>=5.7) +dependencies = [ + .package(url: "https://github.com/apple/swift-argument-parser.git", .exact("1.0.3")), + .package(name: "SwiftPM", url: "https://github.com/apple/swift-package-manager.git", .branch("release/5.7")), + .package(url: "https://github.com/apple/swift-tools-support-core.git", .branch("release/5.7")), +] +#elseif swift(>=5.6) dependencies = [ .package(url: "https://github.com/apple/swift-argument-parser.git", .exact("1.0.3")), .package(name: "SwiftPM", url: "https://github.com/apple/swift-package-manager.git", .branch("release/5.6")), diff --git a/Sources/CreateXCFramework/PackageInfo.swift b/Sources/CreateXCFramework/PackageInfo.swift index ac37094..8366881 100644 --- a/Sources/CreateXCFramework/PackageInfo.swift +++ b/Sources/CreateXCFramework/PackageInfo.swift @@ -88,7 +88,10 @@ struct PackageInfo { self.toolchain = try UserToolchain(destination: try .hostDestination()) - #if swift(>=5.6) + #if swift(>=5.7) + let loader = ManifestLoader(toolchain: self.toolchain) + self.workspace = try Workspace(forRootPackage: root, customManifestLoader: loader) + #elseif swift(>=5.6) let resources = ToolchainConfiguration(swiftCompilerPath: self.toolchain.swiftCompilerPath) let loader = ManifestLoader(toolchain: resources) self.workspace = try Workspace(forRootPackage: root, customManifestLoader: loader) diff --git a/Sources/CreateXCFramework/ProjectGenerator.swift b/Sources/CreateXCFramework/ProjectGenerator.swift index 22caf23..aeff85a 100644 --- a/Sources/CreateXCFramework/ProjectGenerator.swift +++ b/Sources/CreateXCFramework/ProjectGenerator.swift @@ -23,7 +23,7 @@ struct ProjectGenerator { var projectPath: AbsolutePath { let dir = AbsolutePath(self.package.projectBuildDirectory.path) - return buildXcodeprojPath(outputDir: dir, projectName: self.package.manifest.displayName) + return XcodeProject.makePath(outputDir: dir, projectName: self.package.manifest.displayName) } diff --git a/Sources/CreateXCFramework/Zipper.swift b/Sources/CreateXCFramework/Zipper.swift index 6f41b1a..b72d5d2 100644 --- a/Sources/CreateXCFramework/Zipper.swift +++ b/Sources/CreateXCFramework/Zipper.swift @@ -12,6 +12,7 @@ import PackageGraph import PackageModel import TSCBasic import Workspace +import Basics struct Zipper { @@ -54,7 +55,9 @@ struct Zipper { } func checksum (file: Foundation.URL) throws -> Foundation.URL { -#if swift(>=5.6) +#if swift(>=5.7) + let sum = try checksum(forBinaryArtifactAt: AbsolutePath(file.path)) +#elseif swift(>=5.6) let sum = try self.package.workspace.checksum(forBinaryArtifactAt: AbsolutePath(file.path)) #else let sum = self.package.workspace.checksum(forBinaryArtifactAt: AbsolutePath(file.path), diagnostics: self.package.diagnostics) @@ -106,6 +109,28 @@ struct Zipper { func clean (file: Foundation.URL) throws { try FileManager.default.removeItem(at: file) } + + #if swift(>=5.7) + private func checksum(forBinaryArtifactAt path: AbsolutePath) throws -> String { + let fileSystem = localFileSystem + let checksumAlgorithm = SHA256() + let archiver = ZipArchiver(fileSystem: fileSystem) + + // Validate the path has a supported extension. + guard let pathExtension = path.extension, archiver.supportedExtensions.contains(pathExtension) else { + let supportedExtensionList = archiver.supportedExtensions.joined(separator: ", ") + throw StringError("unexpected file type; supported extensions are: \(supportedExtensionList)") + } + + // Ensure that the path with the accepted extension is a file. + guard fileSystem.isFile(path) else { + throw StringError("file not found at path: \(path.pathString)") + } + + let contents = try fileSystem.readFileContents(path) + return checksumAlgorithm.hash(contents).hexadecimalRepresentation + } + #endif } #if swift(>=5.6) From 09c1b6e610f6754c4d7d958927ed0c976eb9095b Mon Sep 17 00:00:00 2001 From: giginet Date: Thu, 18 Aug 2022 21:28:11 +0900 Subject: [PATCH 20/26] Fix backward compatibilities --- Sources/CreateXCFramework/ProjectGenerator.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/CreateXCFramework/ProjectGenerator.swift b/Sources/CreateXCFramework/ProjectGenerator.swift index aeff85a..3e7189c 100644 --- a/Sources/CreateXCFramework/ProjectGenerator.swift +++ b/Sources/CreateXCFramework/ProjectGenerator.swift @@ -23,7 +23,11 @@ struct ProjectGenerator { var projectPath: AbsolutePath { let dir = AbsolutePath(self.package.projectBuildDirectory.path) + #if swift(>=5.7) return XcodeProject.makePath(outputDir: dir, projectName: self.package.manifest.displayName) + #else + return buildXcodeprojPath(outputDir: dir, projectName: self.package.manifest.displayName) + #endif } From 25d3df1e3795d05d76dffd6df18dd2839f663e51 Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Thu, 18 Aug 2022 22:46:22 +1000 Subject: [PATCH 21/26] Removed deprecated virtual environments --- .github/workflows/tests.yml | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e76adf0..6bc4e55 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -66,30 +66,3 @@ jobs: - name: 📦 Package Vexil run: cd Vexil && ../.build/release/swift-create-xcframework --zip --zip-version 1.2.2 --platform ios --platform macos --platform tvos --platform watchos - - tests-xcode-macos10_15: - name: Test Builds - macOS 10.15 - runs-on: macos-10.15 - strategy: - matrix: - xcode: [ "12.2", "12.3", "12.4" ] - - env: - DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer - - steps: - - name: 🛒 Checkout - uses: actions/checkout@v2 - - - name: 🧱 Build - run: make build-release - - - name: 🚩 Checkout Vexil - uses: actions/checkout@v2 - with: - repository: unsignedapps/Vexil - ref: v1.2.2 - path: Vexil - - - name: 📦 Package Vexil - run: cd Vexil && ../.build/release/swift-create-xcframework --zip --zip-version 1.2.2 --platform ios --platform macos --platform tvos --platform watchos From 6628d3ecdb7ca15f9047938bb6efd6e6fb3abd29 Mon Sep 17 00:00:00 2001 From: giginet Date: Thu, 18 Aug 2022 22:22:18 +0900 Subject: [PATCH 22/26] Fix SwiftLint violations --- Sources/CreateXCFramework/Zipper.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/CreateXCFramework/Zipper.swift b/Sources/CreateXCFramework/Zipper.swift index b72d5d2..e17fec4 100644 --- a/Sources/CreateXCFramework/Zipper.swift +++ b/Sources/CreateXCFramework/Zipper.swift @@ -5,6 +5,7 @@ // Created by Rob Amos on 13/5/20. // +import Basics import Foundation #if swift(>=5.6) import PackageGraph @@ -12,7 +13,6 @@ import PackageGraph import PackageModel import TSCBasic import Workspace -import Basics struct Zipper { From f22ec5628ed8c4c21971eab29c101f2549c2e046 Mon Sep 17 00:00:00 2001 From: giginet Date: Thu, 18 Aug 2022 23:48:47 +0900 Subject: [PATCH 23/26] Add canImport --- Sources/CreateXCFramework/Zipper.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Sources/CreateXCFramework/Zipper.swift b/Sources/CreateXCFramework/Zipper.swift index e17fec4..676c593 100644 --- a/Sources/CreateXCFramework/Zipper.swift +++ b/Sources/CreateXCFramework/Zipper.swift @@ -5,7 +5,9 @@ // Created by Rob Amos on 13/5/20. // +#if canImport(Basics) import Basics +#endif import Foundation #if swift(>=5.6) import PackageGraph From 6dba0b0abb6c2157a51eba02acde9a5756849abc Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Fri, 19 Aug 2022 21:29:46 +1000 Subject: [PATCH 24/26] Bump action.js --- action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.js b/action.js index 7bd21e1..a03bc3e 100644 --- a/action.js +++ b/action.js @@ -4,7 +4,7 @@ const path = require('path') const artifact = require('././.action/artifact') const fs = require('fs') -const scxVersion = 'v2.2.0' +const scxVersion = 'v2.3.0' const outputPath = '.build/xcframework-zipfile.url' core.setCommandEcho(true) From 0be3a68c84987493a7d7298027274a0862bc5ccd Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Fri, 19 Aug 2022 21:31:05 +1000 Subject: [PATCH 25/26] Bump Command.swift --- Sources/CreateXCFramework/Command.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/CreateXCFramework/Command.swift b/Sources/CreateXCFramework/Command.swift index bdaf996..2805632 100644 --- a/Sources/CreateXCFramework/Command.swift +++ b/Sources/CreateXCFramework/Command.swift @@ -27,7 +27,7 @@ struct Command: ParsableCommand { Supported platforms: \(TargetPlatform.allCases.map({ $0.rawValue }).joined(separator: ", ")) """, - version: "2.2.0" + version: "2.3.0" ) From 88472e8e4f0227a47ca461fccd38c6d080ad92f2 Mon Sep 17 00:00:00 2001 From: Rob Amos Date: Thu, 11 Apr 2024 15:48:21 +1000 Subject: [PATCH 26/26] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 51ce9da..29b998a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # swift-create-xcframework +>[!IMPORTANT] +>This project is **unmaintained**. It is recommended that you use a fork like [segment-integrations/swift-create-xcframework](https://github.com/segment-integrations/swift-create-xcframework) that includes support for Xcode 15. + swift-create-xcframework is a very simple tool designed to wrap `xcodebuild` and the process of creating multiple frameworks for a Swift Package and merging them into a single XCFramework. On the 23rd of June 2020, Apple announced Xcode 12 and Swift 5.3 with support for Binary Targets. Though they provide a simplified way to [include Binary Frameworks in your packages][apple-docs], they did not provide a simple way to create your XCFrameworks, with only some [documentation for the long manual process][manual-docs]. swift-create-xcframework bridges that gap.