CI: also build cryptography against the system OpenSSL for the glibc243 Linux binaries - #10347
Merged
ThomasWaldmann merged 1 commit intoSep 9, 2026
Conversation
…43 Linux binaries borgbackup#10346 did this only in the oldglibc_binary job (glibc239 binaries). The Linux binaries from native_tests (ubuntu-26.04, glibc243) still bundled two OpenSSLs: the system's libcrypto, which borg's crypto extension uses and PyInstaller bundles, and the copy statically linked into the manylinux wheel of cryptography (a paramiko dependency, sftp extra). Build cryptography from source against the system OpenSSL there, too, for the Linux "binary" matrix entries - the runner image has the Rust toolchain. The step checks that the extension links libcrypto dynamically and loads the same OpenSSL version as the system's openssl program; the smoke test of the built binary checks that the bundled extension links the bundled libcrypto, and prints the bundle sizes. The stripping of the debug symbols and the trimming of the botocore models from borgbackup#10346 live in the shared PyInstaller spec, so they already apply to these binaries. See borgbackup#10345. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #10347 +/- ##
=======================================
Coverage 87.88% 87.88%
=======================================
Files 103 103
Lines 18878 18878
Branches 2916 2916
=======================================
Hits 16590 16590
Misses 1586 1586
Partials 702 702 ☔ View full report in Codecov by Harness. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #10346 for #10345.
#10346 built cryptography against the bundled OpenSSL only in the
oldglibc_binaryjob (glibc239 binaries). The Linux binaries fromnative_tests(ubuntu-26.04, glibc243) still bundle two OpenSSLs: the system's libcrypto (Ubuntu 26.04 ships OpenSSL 3.5.5), which borg's crypto extension uses and PyInstaller bundles, and the copy statically linked into the manylinux wheel of cryptography (a paramiko dependency, sftp extra).This builds cryptography from source against the system OpenSSL there, too, for the Linux
binarymatrix entries (the runner image has the Rust toolchain; the build takes about a minute). The step checks that the extension links libcrypto dynamically and loads the same OpenSSL version as the system'sopensslprogram; the smoke test of the built binary checks that the bundled extension links the bundled libcrypto, and prints the bundle sizes.For scale, from the glibc239 build of #10346: the from-source, stripped cryptography extension is 4.6 MiB, the stripped wheel would be 11 MiB, so this saves about 6 MiB unpacked and about 2 MiB compressed per binary, on top of the roughly 40 MiB the stripping and the botocore trimming already save.
The stripping of the debug symbols and the trimming of the botocore models from #10346 live in the shared PyInstaller spec, so they already apply to the glibc243 binaries (and to macOS, FreeBSD and Windows for the botocore part); the first release build will show it.
Note for review: the new step is tied to the
binarymatrix entries, which the reduced pull request matrix does not have, so it first runs on the master push after merging, and the bundle check runs on the next tag.🤖 Generated with Claude Code