Moya: Prebuilt Carthage frameworks

Created on 25 Feb 2017  ·  15Comments  ·  Source: Moya/Moya

I would like to set up CircleCI to automatically deploy prebuilt frameworks for Carthage on tagged released. I haven't done so for CircleCI yet, but I'm quite familiar with the process on Travis. I believe Circle build tagged releases, correct? Do any @Moya/contributors think this is a bad idea?

In order to execute this I believe I will need a OAuth token with permissions to modify releases. @Moya/owners or @ashfurrow do you think you could assist with this?

carthage enhancement

Most helpful comment

I've been burned by prebuilt binaries as the swift version changes in the past. I've resorted to not use prebuilt binaries since it makes things easier. I'd advise against using them until stable ABI. For a library as small as this one I don't think the gain is that worth it.

All 15 comments

I'm okay with automating things, that's a bit distinct from releasing prebuilt libraries. I've avoided them until Swift has ABI stability but it's definitely up for discussion. @scottrhoyt I've added you as an owner of the Moya org so you should be set to handling setup yourself. Let me know if I can help – I've been stepping back gradually but I'm happy to help where I can!

Thanks @ashfurrow! I share your concerns for Swift ABI compatibility, which is why I introduced a PR for Carthage to only use prebuilt binaries when they are compatible with your local version of Swift (https://github.com/Carthage/Carthage/pull/1755). This is has been merged and will deploy soon with the next Carthage release. With this feature, a Carthage consumer of Moya will at worst have the same behavior as current (building Moya), but may also benefit further from a prebuilt binary.

@sunshinejr @BasThomas I think it would be really cool to do this, maybe add prebuilt binaries to our next release automatically?

Carthage has some nice instructions on how to do this now https://github.com/Carthage/Carthage#use-travis-ci-to-upload-your-tagged-prebuild-frameworks

Yes, I think this would be awesome! Would you mind looking into that @AndrewSB? Let me know if I can help out.

This would be cool, @AndrewSB! Even better if we could automate it not only for CI, but also for our development process.

I don't think I have enough time to work on something like this. I don't think it would help to drag it along for a few months. I'd be really excited to look at someone else's PR though! We can track this at https://github.com/Moya/Moya/projects/1 as well

I've been burned by prebuilt binaries as the swift version changes in the past. I've resorted to not use prebuilt binaries since it makes things easier. I'd advise against using them until stable ABI. For a library as small as this one I don't think the gain is that worth it.

But think about this, this small library has to build both reactiveswift
and rxswift, alamofire, and result.

Carthage has added
https://github.com/Carthage/Carthage/blob/master/README.md#swift-binary-framework-download-compatibility
though, so it should be much better, and the binaries will be ignored if
one has a different swift version
On Fri, Oct 27, 2017 at 5:07 PM Pierre-Marc Airoldi <
[email protected]> wrote:

I've been burned by prebuilt binaries as the swift version changes in the
past. I've resorted to not use prebuilt binaries since it makes things
easier. I'd advise against using them until stable ABI. For a library as
small as this one I don't think the gain is that worth it.


You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub
https://github.com/Moya/Moya/issues/983#issuecomment-340124342, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADo1dLldsRwRmP3UmrSyX0UIn--KGGnQks5swnAlgaJpZM4ML80R
.

Even with prebuilt binaries the user would have to build all the dependencies. As far as I know Carthage would only output Moya as a prebuilt binary without all the dependices.

I’m not against using prebuilt binaries, I’m just concerned that it will be more effort for little gain until ABI stability.

Currently, Moya 10.0.1 is prebuilt with Swift version 4.0.2. But latest Swift version is 4.0.3. So it won't be compatible.

Should we re-build with the latest Swift and replace the current prebuilt framework attached to the release ?
Side effect is, all the current users will see "incompatible" when they bootstrap Carthage until they update their Swift version even though they didn't change anything on their side.

Or, We can also leave it like this and build the frameworks with the latest Swift version available at the time we do the release.

By the way, I think we should add a line in the release notes like "Prebuilt frameworks are now included for Swift X.X.X". Like some projects does. I saw some tickets related to incompatible versions. This short line in the release note may help them to understand the problem.

This is why I advised against going with prebuilt versions. The release notes thing sounds good to me.

Maybe just outright remove them all, it's only going to cause confusion and break backwards compatibility again and again. It's not a bad idea, but should only really happen post ABI compatibility.

I agree on removing them all, lots of people can still ignore release notes and be confused about this one.

Let’s maybe create another ticket for that? 👍

Sent with GitHawk

Was this page helpful?
0 / 5 - 0 ratings

Related issues

JoeFerrucci picture JoeFerrucci  ·  3Comments

geraldeersteling picture geraldeersteling  ·  3Comments

kamwysoc picture kamwysoc  ·  3Comments

mwawrusch picture mwawrusch  ·  3Comments

fenixsolorzano picture fenixsolorzano  ·  3Comments