Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SR-15589] Conditional target dependencies not working as expected in Package.swift #4370

Open
swift-ci opened this issue Dec 13, 2021 · 5 comments
Labels

Comments

@swift-ci
Copy link
Contributor

Previous ID SR-15589
Radar None
Original Reporter Cameron (JIRA User)
Type Bug
Environment

macOS 12.0.1, Xcode 13.2 (13C90)

macOS 12.3, Xcode 13.3 (13E113)

Additional Detail from JIRA
Votes 1
Component/s Package Manager
Labels Bug
Assignee None
Priority Medium

md5: 1d817448ccceb0cac34d0ba118636b94

Issue Description:

I am working on a library for iOS and macOS platforms. When on iOS, I'd like to include a specific, iOS only, dependency. I am using conditional target dependencies to achieve this:

import PackageDescription

let package = Package(
    name: "MyLibrary",
    products: [
        .library(name: "MyLibrary", targets: ["MyLibrary"])
    ],
    dependencies: [
        .package(name: "Embrace", url: "https://github.com/embrace-io/embrace-spm", from: "5.7.0")
    ],
    targets: [
        .target(
            name: "MyLibrary",
            dependencies: [
                .product(name: "Embrace", package: "Embrace", condition: .when(platforms: [.iOS]))
            ]
        )
    ]
)

However, when I compile on a macOS target, I get the following error which feels incorrect to me:

/Users/cbp/Library/Developer/Xcode/DerivedData/MyLibrary-hbfrabjxsrphnbbioeeyckityvdv/SourcePackages/checkouts/embrace-spm/Embrace.xcframework:1:1: While building for macOS, no library for this platform was found in '/Users/cbp/Library/Developer/Xcode/DerivedData/MyLibrary-hbfrabjxsrphnbbioeeyckityvdv/SourcePackages/checkouts/embrace-spm/Embrace.xcframework'.

It's true that the Embrace library does not have a macOS version, but I had figured my condition: .when(platforms: [.iOS]) would work around that.

@swift-ci
Copy link
Contributor Author

Comment by Cameron (JIRA)

I am still seeing this issue in Xcode 13.3 (13E113).

@swift-ci
Copy link
Contributor Author

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
@shahmishal shahmishal transferred this issue from apple/swift May 4, 2022
@loganblevins
Copy link

Bumping this. Running Xcode 13.3 toolchain with Swift 5.5 and still an issue. Conditional product dependencies not respected if said dependencies also depend on their own binary targets (e.g. xcframework).

@jadelizardsoftware
Copy link

This still seems to be an issue with Version 14.2 (14C18) :(

@STREGA
Copy link

STREGA commented Jun 25, 2023

I have dug into this issue and determined that Xcode completely ignores target conditionals, while swift-build mostly works as expected.
#6554 (comment)

Please take the time to make some noise by filing an issue with apple through Feedback Assistant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants