When using Carthage to pull in Sparkle as a project's dependency, the generate_appcast utility doesn't get built/exposed for use, so cannot be used as specified in the documentation.
With Carthage, the deliverables are:
Carthage/Checkouts containing Sparkle git checkout (clean)Carthage/Build containing Sparkle.framework[.dSYM] built from the Sparkle git checkoutI looked at the possible solution of specifying Sparkle as a binary project. However, unfortunately it looks like this don't give you any readily accessible directory containing the unpacked binary archive (which contains the generate_appcast binary). In addition to only supporting binary frameworks distributed as .zip files, and not .tar.bz2 that Sparkle is distributed as.
My current workaround is to do:
xcodebuild -project Carthage/Checkouts/Sparkle/Sparkle.xcodeproj -target generate_appcast
cp Carthage/Checkouts/Sparkle/build/Release/generate_appcast Carthage/Checkouts/Sparkle/bin
After this it can be used as documented.
If a better solution can't be found, then a subsection might need to be added in the documentation to deal with Carthage-specific issues (as there already is for CocoaPods).
I don't know Carthage. Is there something we can change in the project to make it better?
@pornel ,
Carthage is just a kind of Dependency Manager that will not make Sparkle better but it provide one more way for developer to integrate their projects with Sparkle.
For me, I don't like Cocoapods because it auto create a Workspace and modify my project file.
Carthage don't do that.
Hai,
I've meant is there something we can change in Sparkle, its Xcode project, directory layout or build scripts, to make it more Carthage-friendly?
I see there's a problem with generate_appcast, but I don't know what to do to fix it.
@pornel,
just mark Xcode Sparkle target to share schemes then it will can be build by Carthage
Carthage build log
Dependency "Sparkle" has no shared framework schemes for any of the platforms: iOS
Hopefully it's fixed now
Nope, this is still happening on master. Carthage won't build anything apart from frameworks – this is 💯 expected. Perhaps it would help to have a separate script for exclusively building the tools, so it can be invoked after updates?
It would be awesome to have first citizen support for Carthage – it already has more stars than CocoaPods and there's a good reason for that. With that said, I don't see how this can be done apart from including all tool binaries with the repo. Carthage supports prebuilds, but after a test this doesn't appear to be a solution – Carthage picks out only specific files out and doesn't copy the entire archive content, which could include the tools… Another option would be to include the tool as part of the framework. Not the best solution either, but can be explored further.
Maybe anyone can come up with a better approach?
Most helpful comment
Nope, this is still happening on master. Carthage won't build anything apart from frameworks – this is 💯 expected. Perhaps it would help to have a separate script for exclusively building the tools, so it can be invoked after updates?
It would be awesome to have first citizen support for Carthage – it already has more stars than CocoaPods and there's a good reason for that. With that said, I don't see how this can be done apart from including all tool binaries with the repo. Carthage supports prebuilds, but after a test this doesn't appear to be a solution – Carthage picks out only specific files out and doesn't copy the entire archive content, which could include the tools… Another option would be to include the tool as part of the framework. Not the best solution either, but can be explored further.
Maybe anyone can come up with a better approach?