-
Notifications
You must be signed in to change notification settings - Fork 116
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
Add soname #1098
Comments
Thanks for reaching out @bkmgit , I'm interested in learning more about your use case and packaging plan for Fedora. The AWS-LC API is not considered stable, and we have made breaking API changes that wouldn't be considered SemVer compliant. This obviously poses challenges for packaging for OS package managers like Fedora. Are you looking to package AWS-LC for your own consumption, or is this something you were planning to contribute directly to Fedora? As indicated in #804, long-term we want to support packaging AWS-LC for operating systems (particularly Amazon Linux), but we don't have anything more specific that we can share in terms of timelines or a public roadmap. As for the question of setting the |
It is a dependency of Apache Arrow https://bugzilla.redhat.com/show_bug.cgi?id=2223664 Different names for the libraries would aso be great to prevent conflicts with those from OpenSSL and allow installation of both libraries. |
S2N-tls did something similar for inclusion in AL2023 (fc35)- if you don't include minor and patch versions, it's a much more manageable change. But fair point, BoringSSL is not a semver project. |
It looks like Arrow doesn't actually expect AWS-LC to be linked as a shared object, but instead is linked in statically to support the AWS SDK for C++ for the S3 functionality. Additionally, it looks like libarrow would already be building with this default build behavior if my understanding is correct. Is upstream working to try to pull these all out into shared object dependencies? Another challenge that would need to be overcome outside the boundaries of our library ABI stability is that AWS SDK for C++. It has traditionally not provided in OS package managers for similar issues with trying to provide ABI stability guarantees on API interfaces that are controlled by AWS Service teams, and can be breaking at times (think preview APIs etc).
@andrewhop provided an interesting fact that quictls intentionally prefixes their major version with the ASCII value for |
In Fedora, preference is to have shared libraries, even if a static library is also provided. In many cses, one can change the builds to use shared libraries. As there are not too many consumers of AWS-LC, breaking changes can be managed at this point. Arrow has 4 releases per year and Fedora 2 releases per year, so having these work with recent AWS SDK and AWS LC seems feasible. It is possible to have more than one version of AWS-LC packaged if needed, though in this case the packager manages the name changes usually to provide a preview version or an older version used as a dependency. It would be great to prevent conflicts with other widely used software in the mainline version of AWS-LC. |
Note that this is 100% a blocker to including So are static libraries. Therein lies pain and suffering, and we like to avoid that. |
Problem:
Would like to package this for Fedora. For shared libraries, it is helpful to have a soname. Would a pull request to add a soname be required.
Solution:
Add soname in CMake configuration for shared library builds
Does this change any public APIs?* If yes, explain.
Does not change any APIs, though when using shared library, linking to an explicit version will be made easier.
Which algorithm(s) will this impact?
Does not change any algorithms.
Requirements / Acceptance Criteria:
What must a solution address in order to solve the problem? How do we know the solution is complete?
Shared libraries should have sonames, should generate .so, .so.x and .so.x.x.x - may want to use the sonames used for libssl and libcrypto used by the associated boringssl library if expect to keep compatibility, otherwise use sonames based on aws-lc releases
Out of scope:
Is there anything the solution will intentionally NOT address?
The text was updated successfully, but these errors were encountered: