From 970e9d8703023fb6d2de479fde2d0a7ecc775133 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 26 Feb 2026 23:37:29 +0800 Subject: [PATCH 1/5] Upgrade Compute to 0.1.0 and fix oagBinary build path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bump Compute binary/source dependency from 0.0.1/rev to 0.1.0 (upstream release) - Bump OAG binary default version to 0.5.0 - Add OpenAttributeGraph product in oagBinary path - Gate unit test targets behind !oagBinary - Move compatibility tests and swift-numerics out of Darwin-only gate - Remove SSH→HTTPS git config workaround from CI script --- Package.resolved | 2 +- Package.swift | 45 ++++++++++++++++--------------- README.md | 2 +- Scripts/CI/linux_compute_build.sh | 3 --- 4 files changed, 25 insertions(+), 27 deletions(-) diff --git a/Package.resolved b/Package.resolved index b50b5e5..d914971 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "83037cc9b10aa3ac767684b89c921b28273c84901f64f2f2b15ee513ee4b246e", + "originHash" : "e05ba0edab36c9f35cd90c065404e0f97fbadebaf22d46b0f1a4aebeb9c1fac3", "pins" : [ { "identity" : "swift-numerics", diff --git a/Package.swift b/Package.swift index 4591133..e9e3a5b 100644 --- a/Package.swift +++ b/Package.swift @@ -400,10 +400,9 @@ func setupDPFDependency() { if computeCondition { let computeBinary = envBoolValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY", default: false) if computeBinary { - let version = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_BINARY_VERSION", default: "0.0.1") - // TODO: Use upstream link when avaiable. Tracked on https://github.com/jcmosc/Compute/issues/20 - let url = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_BINARY_URL", default: "https://github.com/Kyle-Ye/Compute/releases/download/\(version)/Compute.xcframework.zip") - let checksum = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY_CHECKSUM", default: "95a256da2055d7c73184aeb9be088ba7019f7ea79b8a31e2dd930526c5ccbe8f") + let version = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_BINARY_VERSION", default: "0.1.0") + let url = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_BINARY_URL", default: "https://github.com/jcmosc/Compute/releases/download/\(version)/Compute.xcframework.zip") + let checksum = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY_CHECKSUM", default: "e32dd27fa4df4928be69d4171bcb3d47192bebb467f70bfd728cca56d44682d6") package.targets.append( .binaryTarget( name: "Compute", @@ -416,8 +415,7 @@ if computeCondition { if useLocalDeps { computeRepo = Package.Dependency.package(path: "../Compute") } else { - // TODO: No release tag or branch yet. - computeRepo = Package.Dependency.package(url: "https://github.com/jcmosc/Compute", revision: "34c5af92008a2db18e8b598fb426e3e2872e752c") + computeRepo = Package.Dependency.package(url: "https://github.com/jcmosc/Compute", exact: "0.1.0") } package.dependencies.append(computeRepo) } @@ -429,15 +427,18 @@ if computeCondition { } else { let oagBinary = envBoolValue("OPENATTRIBUTESHIMS_OAG_USE_BINARY", default: false) if oagBinary { - let version = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_VERSION", default: "0.4.0") + let version = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_VERSION", default: "0.5.0") let url = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_URL", default: "https://github.com/OpenSwiftUIProject/OpenAttributeGraph/releases/download/\(version)/OpenAttributeGraph.xcframework.zip") - let checksum = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY_CHECKSUM", default: "a539f876625288d4af7c7d1dccc80fd8e936058791b8071e0d534f5ec1a8a068") + let checksum = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_CHECKSUM", default: "a539f876625288d4af7c7d1dccc80fd8e936058791b8071e0d534f5ec1a8a068") let target = Target.binaryTarget( name: openAttributeGraphTarget.name, url: url, checksum: checksum ) package.targets.append(target) + package.products.append( + .library(name: "OpenAttributeGraph", type: .dynamic, targets: [openAttributeGraphTarget.name]) + ) } else { package.targets.append(contentsOf: [ platformTarget, @@ -445,19 +446,17 @@ if computeCondition { openAttributeGraphTarget, openAttributeGraphCxxTarget, ]) - } - openAttributeGraphShimsTarget.dependencies.append(.target(name: openAttributeGraphTarget.name)) - - if buildForDarwinPlatform { - package.targets.append(openAttributeGraphCompatibilityTestsTarget) - package.dependencies.append( - .package(url: "https://github.com/apple/swift-numerics", from: "1.1.1") + package.products.append( + .library(name: "OpenAttributeGraph", type: .dynamic, targets: [openAttributeGraphTarget.name, openAttributeGraphCxxTarget.name]) ) } + openAttributeGraphShimsTarget.dependencies.append(.target(name: openAttributeGraphTarget.name)) - package.products.append( - .library(name: "OpenAttributeGraph", type: .dynamic, targets: [openAttributeGraphTarget.name, openAttributeGraphCxxTarget.name]) + package.targets.append(openAttributeGraphCompatibilityTestsTarget) + package.dependencies.append( + .package(url: "https://github.com/apple/swift-numerics", from: "1.1.1") ) + if compatibilityTestCondition, buildForDarwinPlatform { setupDPFDependency() openAttributeGraphCompatibilityTestsTarget.addAGSettings() @@ -465,11 +464,13 @@ if computeCondition { openAttributeGraphCompatibilityTestsTarget.dependencies.append( .target(name: openAttributeGraphTarget.name) ) - package.targets += [ - utilitiesTestsTarget, - openAttributeGraphCxxTestsTarget, - openAttributeGraphShimsTestsTarget, - ] + if !oagBinary { + package.targets += [ + utilitiesTestsTarget, + openAttributeGraphCxxTestsTarget, + openAttributeGraphShimsTestsTarget, + ] + } package.platforms = [.iOS(.v13), .macOS(.v10_15), .macCatalyst(.v13), .tvOS(.v13), .watchOS(.v5)] } } diff --git a/README.md b/README.md index 6ba6f7c..08a5ec5 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Add OpenAttributeGraph as a dependency in your `Package.swift`: ```swift dependencies: [ - .package(url: "https://github.com/OpenSwiftUIProject/OpenAttributeGraph.git", from: "0.2.0") + .package(url: "https://github.com/OpenSwiftUIProject/OpenAttributeGraph.git", from: "0.5.0") ] ``` diff --git a/Scripts/CI/linux_compute_build.sh b/Scripts/CI/linux_compute_build.sh index faa5268..d6062e8 100755 --- a/Scripts/CI/linux_compute_build.sh +++ b/Scripts/CI/linux_compute_build.sh @@ -8,9 +8,6 @@ filepath() { REPO_ROOT="$(dirname $(dirname $(dirname $(filepath $0))))" cd $REPO_ROOT -# Fix SSH submodule checkout failure for git@github.com:jcmosc/swift-runtime-headers.git -git config --global url."https://github.com/".insteadOf "git@github.com:" - # Install Linux dependencies apt-get update apt-get install -y libssl-dev From 35f293aeb0b49e1277ee24101cecf41967e48a9f Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 26 Feb 2026 23:43:43 +0800 Subject: [PATCH 2/5] Add CI workflow for OAG binary build --- .github/workflows/oag_binary.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/oag_binary.yml diff --git a/.github/workflows/oag_binary.yml b/.github/workflows/oag_binary.yml new file mode 100644 index 0000000..5c0b985 --- /dev/null +++ b/.github/workflows/oag_binary.yml @@ -0,0 +1,30 @@ +name: OAG Binary + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + oag_binary_macos_build: + name: Build with OAG binary on macOS + strategy: + fail-fast: false + matrix: + os: [macos-15] + xcode-version: ["16.4"] + runs-on: ${{ matrix.os }} + env: + OPENATTRIBUTEGRAPH_WERROR: 1 + OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_OAG_USE_BINARY: 1 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Setup Xcode + uses: OpenSwiftUIProject/OpenSwiftUI/.github/actions/setup-xcode@main + with: + xcode-version: ${{ matrix.xcode-version }} + - name: Build in debug mode + run: swift build -c debug From 78c836ee70a27e9c1be42f45aa62a3e8f9f56af6 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 26 Feb 2026 23:56:13 +0800 Subject: [PATCH 3/5] Fix OAG binary product type to automatic library SPM requires products referencing only binary targets to be automatic library products, not explicit dynamic. --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index e9e3a5b..afd9d69 100644 --- a/Package.swift +++ b/Package.swift @@ -437,7 +437,7 @@ if computeCondition { ) package.targets.append(target) package.products.append( - .library(name: "OpenAttributeGraph", type: .dynamic, targets: [openAttributeGraphTarget.name]) + .library(name: "OpenAttributeGraph", targets: [openAttributeGraphTarget.name]) ) } else { package.targets.append(contentsOf: [ From f9949c132b73090615b92da3cb343ed0b3201686 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 26 Feb 2026 23:57:39 +0800 Subject: [PATCH 4/5] Remove explicit .dynamic library type from all products --- Package.resolved | 2 +- Package.swift | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Package.resolved b/Package.resolved index d914971..7596716 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "e05ba0edab36c9f35cd90c065404e0f97fbadebaf22d46b0f1a4aebeb9c1fac3", + "originHash" : "7c6f081da18fe9d445ae97a820054c61238992e042cfb818ddf69e4e36afe729", "pins" : [ { "identity" : "swift-numerics", diff --git a/Package.swift b/Package.swift index afd9d69..10c0e34 100644 --- a/Package.swift +++ b/Package.swift @@ -365,7 +365,6 @@ let package = Package( products: [ .library( name: "OpenAttributeGraphShims", - type: .dynamic, targets: [openAttributeGraphShimsTarget.name] ) ], @@ -447,7 +446,7 @@ if computeCondition { openAttributeGraphCxxTarget, ]) package.products.append( - .library(name: "OpenAttributeGraph", type: .dynamic, targets: [openAttributeGraphTarget.name, openAttributeGraphCxxTarget.name]) + .library(name: "OpenAttributeGraph", targets: [openAttributeGraphTarget.name, openAttributeGraphCxxTarget.name]) ) } openAttributeGraphShimsTarget.dependencies.append(.target(name: openAttributeGraphTarget.name)) From be6de465a28bf5dff65738f0b2dc0dcf66088067 Mon Sep 17 00:00:00 2001 From: Kyle Date: Fri, 27 Feb 2026 00:01:26 +0800 Subject: [PATCH 5/5] Remove explicit .dynamic library type and update OAG binary checksum --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 10c0e34..23b26e7 100644 --- a/Package.swift +++ b/Package.swift @@ -428,7 +428,7 @@ if computeCondition { if oagBinary { let version = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_VERSION", default: "0.5.0") let url = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_URL", default: "https://github.com/OpenSwiftUIProject/OpenAttributeGraph/releases/download/\(version)/OpenAttributeGraph.xcframework.zip") - let checksum = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_CHECKSUM", default: "a539f876625288d4af7c7d1dccc80fd8e936058791b8071e0d534f5ec1a8a068") + let checksum = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_CHECKSUM", default: "ac7d8cb7cfd917b9f1768dc18dfea74b1ed64ce96d2424ba8c557e70736674ff") let target = Target.binaryTarget( name: openAttributeGraphTarget.name, url: url,