-
Notifications
You must be signed in to change notification settings - Fork 32
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
ci: build binary artifacts for pushes/PRs #506
base: main
Are you sure you want to change the base?
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
ac86835
to
e001e8c
Compare
* Windows (x86_64 MSVC) * Linux (x86_64 GNU glibc) * Apple (MacOS 14 ARM64 and MacOS 13 x86_64) Binary artifacts are built in release mode using stable rust, with the default crypto provider (aws-lc-rs) and cert compression enabled. Linux binaries are built on ubuntu-20.04 for greatest compatibility. Users will need glibc 2.31 or greater. For now I've opted not to include a statically linked musl build. For FIPS, no cert-compression, the ring crypto provider, debug builds, or other customization you will need to build from source. Users of the `.pc` files will need to override the `prefix` to wherever they extract the archive, or use `cargo cinstall` from src. Package config files in an archive aren't relocatable.
e001e8c
to
ae38c18
Compare
This shook out some useful findings:
In the end I was able to get a repo working with a simple C application that spits out One place for improvement: I had to lift some of the
This seems to be unrelated but still needs to be debugged:
|
Uses a small script (`debian/build.sh`) to massage the output of cargo-c's build into a `.deb` that can be installed on Debian/Ubuntu systems.
91efb3e
to
f5e0234
Compare
Oh! I think that has also been happening for rustls-libssl. |
Looks like it 😓 Here's a fix PR: rustls/rustls-openssl-compat#45 |
This branch adds a CI job for all pushes & PRs that builds binary artifacts for
rustls-ffi
for:Binary artifacts are built in release mode using stable rust, with the default crypto provider (aws-lc-rs) and cert compression enabled.
Linux binaries are built on ubuntu-20.04 for greatest compatibility. Users will need glibc 2.31 or greater. For now I've opted not to include a statically linked musl build.
For FIPS, no cert-compression, the ring crypto provider, debug builds, or other customization you will need to build from source.
Users of the
.pc
files from the bare archive will need to override theprefix
to wherever they extract the archive, or usecargo cinstall
from src. Package config files in an archive aren't relocatable. The.deb
for Debian/Ubuntu has the correct.pc
prefix already.The build library zips are automatically added to the CI run as artifacts. This has the advantage that we don't need any special write permissions and can manually attach binary artifacts to the releases we publish as appropriate. For now I'd like to avoid automating the release process. Artifact links associated with a branch are valid for ~90d.
You can see the artifacts produced for this PR here, under the annotations.
See an example of a simple C test application built using
cmake
andpkg-config
from the distributed binary releases here: https://github.com/cpu/rustls-ffi-test I also separately tested this project'sCMakeLists.txt
on a Ubuntu server 24.04 VM where I installed the.deb
and it worked as expected without needing anyPKG_CONFIG_DIR
customization.Unpacking the archives gives structure like:
The
.deb
displays the following:Resolves #218