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
Drop Carthage and build using Swift Package Manager (close #735) #737
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Great to get rid of that carthage-workaround script
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!! Just a note about the dropping of Carthage support. I wonder if we should pre-announce it on Discourse (remarking the alpha version is out to be tested). Other frameworks that dropped Carthage received some criticism on GitHub so I think we should be prepared to similar requests or questions and be able to provide answers and eventually identify in advance anything that can change our mind in the process of dropping Carthage.
with: | ||
repository: snowplow-incubator/snowplow-swift-ios-tracker-examples | ||
repository: snowplow-incubator/snowplow-objc-tracker-examples | ||
ref: ${{ steps.example_branch.outputs.name }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not related to this diff but something that we should consider. I managed the relation between the examples repository and the tracker repository using the "demo_apps_branch_name" file in the scripts folder. Despite it was a huge step forward I'm not really proud of the final results. I wonder if using the submodules would have been more useful and easier to maintain. So something to consider for future improvements, also because a similar approach can be used to test we don't break anything in the wrapper trackers (React Native, Flutter).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, I think submodules would be a good option to make the mapping between the repo and examples more explicit. Will have to investigate how Swift Package Manager handles submodules when including in users apps though.
.tvOS("12.0"), | ||
.watchOS("6.0") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think bumping them up makes sense. I wonder whether you identified any specific reason for that or it's just to drop too old versions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had to bump them because of the Mocker dependency used in tests which required these minimum deployment versions.
Thanks @AlexBenny! As we already discussed, I will post on Discourse a question along with alpha 2 to ask which package managers people use and whether they will miss Carthage. Reintroducing Carthage would mean adding back the XCode project file and maintaining that which is a bit annoying but not such a big deal. |
Issue #735
Dropped Carthage for build
Development and test dependencies are handled using Swift Package Manager instead of Carthage. Carthage is removed altogether, so it's not even possible to install in other apps using Carthage.
In order to do that, I had to deal with the test dependencies that were previously installed using Carthage:
Removed XCode project files
Since SPM projects don't require an XCode project file, I removed it from the repository to clean up. XCode can work with the project just by opening the folder. If there is a need, one can regenerate the XCode project file using (but this is not recommended):
Also cleaned up and removed a bunch of other boilerplate files that are no longer necessary.
Improved CI
Previously the CI only ran tests on iOS and built for watchOS. Now it runs tests for iOS, macOS, watchOS and tvOS. Additionally, it runs lint using CocoaPods.