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 diff --git a/Package.resolved b/Package.resolved index b50b5e5..7596716 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "83037cc9b10aa3ac767684b89c921b28273c84901f64f2f2b15ee513ee4b246e", + "originHash" : "7c6f081da18fe9d445ae97a820054c61238992e042cfb818ddf69e4e36afe729", "pins" : [ { "identity" : "swift-numerics", diff --git a/Package.swift b/Package.swift index 4591133..23b26e7 100644 --- a/Package.swift +++ b/Package.swift @@ -365,7 +365,6 @@ let package = Package( products: [ .library( name: "OpenAttributeGraphShims", - type: .dynamic, targets: [openAttributeGraphShimsTarget.name] ) ], @@ -400,10 +399,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 +414,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 +426,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: "ac7d8cb7cfd917b9f1768dc18dfea74b1ed64ce96d2424ba8c557e70736674ff") let target = Target.binaryTarget( name: openAttributeGraphTarget.name, url: url, checksum: checksum ) package.targets.append(target) + package.products.append( + .library(name: "OpenAttributeGraph", targets: [openAttributeGraphTarget.name]) + ) } else { package.targets.append(contentsOf: [ platformTarget, @@ -445,19 +445,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", 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 +463,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