diff --git a/.github/workflows/compatibility_tests.yml b/.github/workflows/compatibility_tests.yml index 3cddb45..828d12a 100644 --- a/.github/workflows/compatibility_tests.yml +++ b/.github/workflows/compatibility_tests.yml @@ -18,7 +18,6 @@ jobs: runs-on: ${{ matrix.os }} env: OPENATTRIBUTEGRAPH_WERROR: 1 - OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1 OPENATTRIBUTEGRAPH_COMPATIBILITY_TEST: 1 OPENATTRIBUTEGRAPH_USE_LOCAL_DEPS: 1 OPENATTRIBUTEGRAPH_TARGET_RELEASE: 2024 diff --git a/.github/workflows/compute.yml b/.github/workflows/compute.yml index a91ff78..ee834c7 100644 --- a/.github/workflows/compute.yml +++ b/.github/workflows/compute.yml @@ -15,13 +15,10 @@ jobs: swift_version: ["6.2"] runs-on: ubuntu-22.04 env: - # -Wno-elaborated-enum-base is not working for Compute dependency. Disable warnings-as-errors for now to unblock CI. We should fix the underlying issue and re-enable warnings-as-errors in the future. - # OPENATTRIBUTEGRAPH_WERROR: 1 - OPENATTRIBUTEGRAPH_WERROR: 0 + OPENATTRIBUTEGRAPH_WERROR: 1 OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_COMPUTE: 1 OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY: 0 OPENATTRIBUTEGRAPH_USE_LOCAL_DEPS: 1 - OPENATTRIBUTEGRAPH_COMPATIBILITY_TEST: 0 container: swift:${{ matrix.swift_version }}-jammy steps: - uses: actions/checkout@v4 @@ -45,7 +42,6 @@ jobs: OPENATTRIBUTEGRAPH_WERROR: 1 OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_COMPUTE: 1 OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY: 1 - OPENATTRIBUTEGRAPH_COMPATIBILITY_TEST: 0 steps: - uses: actions/checkout@v4 - name: Setup Xcode @@ -73,7 +69,6 @@ jobs: OPENATTRIBUTEGRAPH_WERROR: 1 OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_COMPUTE: 1 OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY: 1 - OPENATTRIBUTEGRAPH_COMPATIBILITY_TEST: 0 steps: - uses: actions/checkout@v4 - name: Setup Xcode @@ -86,7 +81,7 @@ jobs: run: | xcodebuild build \ -workspace .swiftpm/xcode/package.xcworkspace \ - -scheme OpenAttributeGraph-Package \ + -scheme OpenAttributeGraph \ -configuration Debug \ -destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }}" \ -derivedDataPath .build-debug \ diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 28711e0..dc38346 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -21,8 +21,6 @@ jobs: runs-on: ${{ matrix.os }} env: OPENATTRIBUTEGRAPH_WERROR: 1 - OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 0 - OPENATTRIBUTEGRAPH_COMPATIBILITY_TEST: 0 OPENATTRIBUTEGRAPH_USE_LOCAL_DEPS: 1 OPENATTRIBUTEGRAPH_TARGET_RELEASE: 2024 DARWINPRIVATEFRAMEWORKS_TARGET_RELEASE: 2024 diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 073d128..2b9230f 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -17,8 +17,6 @@ jobs: runs-on: ${{ matrix.os }} env: OPENATTRIBUTEGRAPH_WERROR: 1 - OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 0 - OPENATTRIBUTEGRAPH_COMPATIBILITY_TEST: 0 OPENATTRIBUTEGRAPH_USE_LOCAL_DEPS: 1 OPENATTRIBUTEGRAPH_TARGET_RELEASE: 2024 DARWINPRIVATEFRAMEWORKS_TARGET_RELEASE: 2024 diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index b2b2ee0..b0f1b02 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -16,8 +16,6 @@ jobs: runs-on: ubuntu-22.04 env: OPENATTRIBUTEGRAPH_WERROR: 1 - OPENATTRIBUTEGRAPH_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 0 - OPENATTRIBUTEGRAPH_COMPATIBILITY_TEST: 0 container: swift:${{ matrix.swift_version }}-jammy steps: - uses: actions/checkout@v4 diff --git a/Package.resolved b/Package.resolved index 30e3922..d2c7289 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,15 +1,6 @@ { - "originHash" : "55d8d91d8066a1fb489ac9e0a78c6722915b2e81496637b03caf00b8047b7d1c", + "originHash" : "4c5beea729cad442a7b3ce4f6a65ebaf9550c006d5740ae2c3eccc8835547d65", "pins" : [ - { - "identity" : "darwinprivateframeworks", - "kind" : "remoteSourceControl", - "location" : "https://github.com/OpenSwiftUIProject/DarwinPrivateFrameworks.git", - "state" : { - "branch" : "main", - "revision" : "18d26f5dcc334468fad0904697233faeb41a1805" - } - }, { "identity" : "swift-numerics", "kind" : "remoteSourceControl", diff --git a/Package.swift b/Package.swift index 5d46086..ccc9322 100644 --- a/Package.swift +++ b/Package.swift @@ -146,7 +146,7 @@ let compatibilityTestCondition = envBoolValue("COMPATIBILITY_TEST", default: fal let useLocalDeps = envBoolValue("USE_LOCAL_DEPS") let computeCondition = envBoolValue("OPENATTRIBUTESHIMS_COMPUTE", default: false) -let attributeGraphCondition = envBoolValue("OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH", default: buildForDarwinPlatform && !isSPIBuild) +let attributeGraphCondition = envBoolValue("OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH", default: false) // MARK: - Shared Settings @@ -276,16 +276,14 @@ let swiftClonePlugin = Target.plugin( // MARK: - Targets let platformTarget = Target.target( - // Avoid target collision with Compute package - name: "OpenAttributeGraphPlatform", + name: "Platform", path: "Sources/Platform", cSettings: sharedCSettings + [ .define("_GNU_SOURCE", .when(platforms: [.linux])), ] ) let utilitiesTarget = Target.target( - // Avoid target collision with Compute package - name: "OpenAttributeGraphUtilities", + name: "Utilities", dependencies: [ .target(name: platformTarget.name), ], @@ -372,20 +370,13 @@ let openAttributeGraphCompatibilityTestsTarget = Target.testTarget( let package = Package( name: "OpenAttributeGraph", products: [ - .library(name: "OpenAttributeGraph", type: .dynamic, targets: [openAttributeGraphTarget.name, openAttributeGraphCxxTarget.name]), - .library(name: "OpenAttributeGraphShims", type: .dynamic, targets: [openAttributeGraphShimsTarget.name]), - ], - dependencies: [ - .package(url: "https://github.com/apple/swift-numerics", from: "1.0.2"), - ], - targets: [ - swiftClonePlugin, - platformTarget, - utilitiesTarget, - openAttributeGraphTarget, - openAttributeGraphCxxTarget, - openAttributeGraphShimsTarget, + .library( + name: "OpenAttributeGraphShims", + type: .dynamic, + targets: [openAttributeGraphShimsTarget.name] + ) ], + targets: [openAttributeGraphShimsTarget], cxxLanguageStandard: .cxx20 ) @@ -413,33 +404,18 @@ func setupDPFDependency() { } } -if compatibilityTestCondition { - setupDPFDependency() - openAttributeGraphCompatibilityTestsTarget.addAGSettings() -} else { - package.targets += [ - utilitiesTestsTarget, - openAttributeGraphCxxTestsTarget, - openAttributeGraphShimsTestsTarget, - ] -} - -if buildForDarwinPlatform { - package.targets.append(openAttributeGraphCompatibilityTestsTarget) -} - if computeCondition { let computeBinary = envBoolValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY", default: false) if computeBinary { - let computeVersion = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY_VERSION", default: "0.0.1") + 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 computeURL = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY_URL", default: "https://github.com/Kyle-Ye/Compute/releases/download/\(computeVersion)/Compute.xcframework.zip") - let computeChecksum = envStringValue("OPENATTRIBUTESHIMS_COMPUTE_USE_BINARY_CHECKSUM", default: "95a256da2055d7c73184aeb9be088ba7019f7ea79b8a31e2dd930526c5ccbe8f") + 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") package.targets.append( .binaryTarget( name: "Compute", - url: computeURL, - checksum: computeChecksum + url: url, + checksum: checksum ) ) } else { @@ -454,10 +430,51 @@ if computeCondition { } openAttributeGraphShimsTarget.addComputeSettings() package.platforms = [.iOS(.v18), .macOS(.v15), .macCatalyst(.v18), .tvOS(.v18), .watchOS(.v10), .visionOS(.v2)] -} else if attributeGraphCondition { +} else if attributeGraphCondition, buildForDarwinPlatform { setupDPFDependency() openAttributeGraphShimsTarget.addAGSettings() } else { + let oagBinary = envBoolValue("OPENATTRIBUTESHIMS_OAG_USE_BINARY", default: false) + if oagBinary { + let version = envStringValue("OPENATTRIBUTESHIMS_OAG_BINARY_VERSION", default: "0.4.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 target = Target.binaryTarget( + name: openAttributeGraphTarget.name, + url: url, + checksum: checksum + ) + package.targets.append(target) + } else { + package.targets.append(contentsOf: [ + swiftClonePlugin, + platformTarget, + utilitiesTarget, + openAttributeGraphTarget, + openAttributeGraphCxxTarget, + ]) + } openAttributeGraphShimsTarget.dependencies.append(.target(name: openAttributeGraphTarget.name)) - package.platforms = [.iOS(.v13), .macOS(.v10_15), .macCatalyst(.v13), .tvOS(.v13), .watchOS(.v5)] + + 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]) + ) + if compatibilityTestCondition, buildForDarwinPlatform { + setupDPFDependency() + openAttributeGraphCompatibilityTestsTarget.addAGSettings() + } else { + package.targets += [ + utilitiesTestsTarget, + openAttributeGraphCxxTestsTarget, + openAttributeGraphShimsTestsTarget, + ] + package.platforms = [.iOS(.v13), .macOS(.v10_15), .macCatalyst(.v13), .tvOS(.v13), .watchOS(.v5)] + } }