You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our team is producing a set of open source libraries using Swift which target iOS and Mac (although in theory they could be used with Swift on Linux also). Our libraries taken together form an SDK that developers can use to access Azure (Microsoft's cloud platform).
Each library provides access to some aspect of the Azure service, e.g. storage, identity, AI etc. In addition to libraries which map to particular Azure services, we also have some common "core" libraries which provide common functionality used across the libraries.
Our team is working out of a mono-repository and we are trying to work out the best path forward for structuring our code and release process. We work in a mono-repo to make it easier for our developers to co-evolve parts of the core library and the library that they are working on in addition to making it easier for our customers to file issues against the SDK as a whole (without having to hunt for a repo in which to file the issue).
We want to support Swift PM but unfortunately it doesn't really seem to support publishing multiple libraries out of a single repository very easily. We want to be able to publish independent versions of our libraries from the same mono-repo and manage the interdependencies between them.
For example, we might publish 1.0.0 of core, then 1.0.0 of storage. Then "service X" comes along which requires us to make some enhancements to our core library, so we end up with core 1.1.0 being published.
A developer might want to depend on "service X" 1.0.0 and storage "1.0.0". We assert that version 1.1.0 of core is backwards compatible so storage should be able to use 1.1.0 of core to resolve the resulting diamond dependency problem.
From the reading that I've done it appears that Swift PM can't support this model because you can only have one Package.swift file in the repository.
Am I missing something? What is the recommended model for shipping multiple Swift PM packages out of a mono repo at staggered cadences?
The text was updated successfully, but these errors were encountered:
And the PR to the swift-package-packager repository which implements most of the functionality. On the surface this would appear to help. However its not clear how dependencies are treated. Are they bundled in the xcframework file?
Binary dependencies feature is unrelated. That's for distributing pre-built code (generally closed-source). Better support for mono-repo style development is desirable but we haven't had formal design discussions around it on swift-evolution. I'll mark this bug a dupe of SR-3951.
Additional Detail from JIRA
md5: 91f3e93f3be2d494d297e23476a519cf
duplicates:
Issue Description:
Our team is producing a set of open source libraries using Swift which target iOS and Mac (although in theory they could be used with Swift on Linux also). Our libraries taken together form an SDK that developers can use to access Azure (Microsoft's cloud platform).
Each library provides access to some aspect of the Azure service, e.g. storage, identity, AI etc. In addition to libraries which map to particular Azure services, we also have some common "core" libraries which provide common functionality used across the libraries.
Our team is working out of a mono-repository and we are trying to work out the best path forward for structuring our code and release process. We work in a mono-repo to make it easier for our developers to co-evolve parts of the core library and the library that they are working on in addition to making it easier for our customers to file issues against the SDK as a whole (without having to hunt for a repo in which to file the issue).
We want to support Swift PM but unfortunately it doesn't really seem to support publishing multiple libraries out of a single repository very easily. We want to be able to publish independent versions of our libraries from the same mono-repo and manage the interdependencies between them.
For example, we might publish 1.0.0 of core, then 1.0.0 of storage. Then "service X" comes along which requires us to make some enhancements to our core library, so we end up with core 1.1.0 being published.
A developer might want to depend on "service X" 1.0.0 and storage "1.0.0". We assert that version 1.1.0 of core is backwards compatible so storage should be able to use 1.1.0 of core to resolve the resulting diamond dependency problem.
From the reading that I've done it appears that Swift PM can't support this model because you can only have one Package.swift file in the repository.
Am I missing something? What is the recommended model for shipping multiple Swift PM packages out of a mono repo at staggered cadences?
The text was updated successfully, but these errors were encountered: