Skip to content
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

Dynamic linkage for CocoaPods #750

Merged
merged 6 commits into from
Nov 23, 2020

Conversation

ilammy
Copy link
Collaborator

@ilammy ilammy commented Nov 23, 2020

Update to latest CLOpenSSL 1.1.10802 which uses dynamic linkage (and removes some architecture slices for that).

Now that CLOpenSSL is using dynamic linkage, we can switch Themis back to using dynamic linkage too (as it was before). The themis pod will have to continue being a dynamic framework Pod to avoid breaking existing builds.

arm64e slice in binary dynamic frameworks causes issues with CocoaPods so it has been removed from CLOpenSSL starting with 1.1.10802. However, Carthage builds use Xcode project which still requires arm64e. Remove arm64e from the architectures list as it is not available now.

Checklist

  • Change is covered by automated tests
  • Changelog is updated (in case of notable or breaking changes)

Use the latest 1.1.10802 which has arm64e removed, uses proper framework
install names, and dynamic linkage for CocoaPods.
Now that CLOpenSSL is using dynamic linkage, we can switch Themis back
to using dynamic linkage too (as it was before). The "themis" pod will
have to continue being a dynamic framework Pod to avoid breaking
existing builds.
arm64e slice in binary dynamic frameworks causes issues with CocoaPods
so it has been removed from CLOpenSSL starting with 1.1.10802. However,
Carthage builds use Xcode project which still requires arm64e. Remove
arm64e from the architectures list as it is not available now.
@ilammy ilammy added O-iOS 📱 Operating system: iOS O-macOS 💻 Operating system: macOS W-SwiftThemis 🔶 Wrapper: SwiftThemis, Swift API W-ObjCThemis 🎨 Wrapper: ObjCThemis, Objective-C API M-CocoaPods Package manager: CocoaPods, Objective-C and Swift, iOS and macOS M-Carthage Package manager: Carthage, Objective-C and Swift, iOS and macOS dependencies Pull requests that update a dependency file labels Nov 23, 2020
@ilammy ilammy requested a review from Lagovas as a code owner November 23, 2020 00:36
Cartfile.resolved Show resolved Hide resolved
themis.podspec Outdated Show resolved Hide resolved
@ilammy
Copy link
Collaborator Author

ilammy commented Nov 23, 2020

The builds is currently broken, should fixed once #751 is merged (and the build restarted).

Cartfile Outdated Show resolved Hide resolved
Co-authored-by: vixentael <[email protected]>

Co-authored-by: vixentael <[email protected]>
@ilammy
Copy link
Collaborator Author

ilammy commented Nov 23, 2020

I don't really like to pin OpenSSL versions, but @vixentael is being extra paranoid, and I'm honestly tired of this madness, so whatever floats your boat.

@vixentael
Copy link
Contributor

yeah, sorry, i'm tired of being pushed to update our own libraries urgently because they suddenly introduce breaking changes.

@ilammy ilammy merged commit 56e0921 into cossacklabs:release/0.13 Nov 23, 2020
@ilammy
Copy link
Collaborator Author

ilammy commented Nov 23, 2020

As it turns out, code examples are broken with Themis 0.13.5 once CLOpenSSL 1.1.10802 has been released. Given that CI is broken, we're currently ignoring it (again, and again).

@ilammy ilammy deleted the clopenssl-dynamic branch November 23, 2020 00:57
@ilammy
Copy link
Collaborator Author

ilammy commented Nov 23, 2020

As it turned out in #752, the proper way to pin Carthage binary dependency is to use == in Cartfile:

binary "https://example.com/spec.json" == 1.2.3

which will then result in the following Cartfile.resolved

binary "https://example.com/spec.json" "1.2.3"

One cannot use "1.2.3" – tag-like spec – for binary dependencies since they are only versioned (by the JSON spec), they have no associated repository.

:rage1: :rage2: :rage3: :rage4:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file M-Carthage Package manager: Carthage, Objective-C and Swift, iOS and macOS M-CocoaPods Package manager: CocoaPods, Objective-C and Swift, iOS and macOS O-iOS 📱 Operating system: iOS O-macOS 💻 Operating system: macOS W-ObjCThemis 🎨 Wrapper: ObjCThemis, Objective-C API W-SwiftThemis 🔶 Wrapper: SwiftThemis, Swift API
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants