SPM cannot resolve dependency graph

Hello,

I have an issue where, in one package I forked, I modified Package.swift so that one dependency points to the master branch of another package I forked.

.package(url: "https://github.com/adtrevor/http.git", .branch("master")),

Unfortunately, the package resolution errors with an unclear message:

websocket$ swift package show-dependencies

Fetching GitHub - PopFlamingo/http: 🚀 Non-blocking, event-driven HTTP built on Swift NIO.

Updating GitHub - apple/swift-nio-ssl: TLS Support for SwiftNIO, based on BoringSSL.

Updating GitHub - vapor/core: 🌎 Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging.

Updating GitHub - apple/swift-nio: Event-driven network application framework for high performance protocol servers & clients, non-blocking.

Updating GitHub - vapor/open-crypto: 🔑 Hashing (BCrypt, SHA2, HMAC), encryption (AES), public-key (RSA), and random data generation.

Updating GitHub - apple/swift-nio-zlib-support

Updating GitHub - apple/swift-nio-ssl-support

Updating GitHub - apple/swift-nio-http2: HTTP/2 support for SwiftNIO

Updating GitHub - apple/swift-nio-extras: Useful code around SwiftNIO.

Updating GitHub - apple/swift-log: A Logging API for Swift

error: dependency graph is unresolvable; found these conflicting requirements:

Dependencies:

GitHub - PopFlamingo/http: 🚀 Non-blocking, event-driven HTTP built on Swift NIO. @ master

I don't understand at all what is happening. Is this a bug or am I doing something wrong?

Thank you

cc: @Aciid Is this something that will get better error messages similar to SwiftPM: what's the conflict? ? I can't find at all the cause with the current error :confused:

There is work going on in SwiftPM that will dramatically improve the dependency resolution error messages. It's not all there yet but I just ran the new resolver on your package and got this:

because http @master depends on swift-nio-ssl ^2.0.0 and websocket depends on http @master, websocket requires swift-nio-ssl.
And because websocket depends on swift-nio-ssl ^1.3.1 and root depends on websocket, version solving failed.

To pin point, here are the conflicts:

https://github.com/adtrevor/websocket/blob/master/Package.swift#L23

2 Likes

Thanks a lot! Nice to see the improvement for the messages! :)

@kiliankoe might be encouraged to see that his work already came in useful. (You too Ankit, but you already know.)

2 Likes

This also not working properly on my iOS device. It is showing iTunes has an invalid signature. Please help me to fix this properly.