feat(ci): build shared-OpenSSL binaries for ppc64le and s390x MONGOSH-1681 - #2779
Merged
Conversation
…-1681 Adds build_linux_ppc64le/s390x_openssl11/openssl3 build variants and matching e2e test tasks, mirroring the existing x64/arm64 setup. Also fixes two issues surfaced only on the ppc64le host: LD_LIBRARY_PATH leaking from the shared-OpenSSL build into the FLE addon's git-clone subprocess (breaking git's Kerberos auth), and OpenSSL 3.0.5's `make install` failing to build HTML docs due to a missing Perl module (fixed by using `install_sw` instead, which only installs the libs/headers we actually need).
ivandevp
commented
Jul 21, 2026
Comment on lines
+18
to
+24
| // LD_LIBRARY_PATH may point at a custom-built shared OpenSSL used for the | ||
| // Node.js compile step (see .evergreen/compile-artifact.sh); this script | ||
| // only clones a git repo and builds the FLE addon, and git subprocesses | ||
| // (git-remote-https) can fail to resolve symbols against that OpenSSL on | ||
| // some platforms, so we don't want it inherited here. | ||
| const envWithoutLdLibraryPath = { ...process.env }; | ||
| delete envWithoutLdLibraryPath.LD_LIBRARY_PATH; |
Collaborator
Author
There was a problem hiding this comment.
ivandevp
commented
Jul 21, 2026
Comment on lines
+62
to
+65
| # install_sw (not install) skips building/installing HTML man pages via | ||
| # mkpod2html.pl, which can fail if the host's Perl lacks required modules; | ||
| # we only need the libs/headers here. | ||
| make -j12 install_sw install_ssldirs |
Collaborator
Author
There was a problem hiding this comment.
|
Assigned |
addaleax
reviewed
Aug 24, 2026
Collaborator
There was a problem hiding this comment.
@ivandevp This file is automatically generated, so any changes to are also automatically undone unless they are accompanied by changes to the original source files. This PR also doesn't actually take care of publishing the generated packages, which would be a core part of the ticket in question.
I think for both of these you'll need to modify config/release-package-matrix.js and probably at least tests for the build package. I'll re-open the JIRA ticket
ivandevp
added a commit
that referenced
this pull request
Aug 24, 2026
…SH-1681 (#2826) PR #2779 added the ppc64le/s390x shared-OpenSSL build variants by editing .evergreen.yml directly. That file is generated by `npm run update-evergreen-config` from .evergreen/evergreen.yml.in and the generators in .evergreen/build-variants/, so the next automated regeneration on main reverted all of it. It also only made the binaries compile; nothing packaged, signed or published them, because that side is driven by config/release-package-matrix.js. This redoes the change at the source level: - compile-build-variants.js: openssl11/openssl3 compile variants for linux-ppc64le (rhel8-power-small) and linux-s390x (rhel7-zseries-large), mirroring the existing x64/arm64 entries. - e2e-tests-build-variants.js: matching e2e variants on rhel9-power-small and rhel9-zseries-small. - release-package-matrix.js: tgz + rpm entries for the four new executableOsIds, which is what generates the package_artifact_*, sign_artifact_*, verify_artifact_* and barque publishing tasks. Reuses the existing ppc64le/s390x descriptions and serverLikeTargetLists, and the same packageType spelling as x64/arm64 so the download centre groups them correctly. - evergreen.yml.in: attach the generated pkg_test_rpmextract_* smoke tests to the existing ppc64le/s390x smoke-test variants. OpenSSL 1.1 packages are tested on RHEL 8 and OpenSSL 3 on RHEL 9, matching the OpenSSL each release actually ships; RHEL 7 s390x keeps only the static build. Without this the tasks are generated but attached to no variant, so they never run. - Regenerated .evergreen.yml (44 new tasks, no existing task removed). ALL_PACKAGE_VARIANTS grows from 26 to 34, so the two hardcoded counts in the build package tests are updated; the build-variant assertion is broadened to loop over the OpenSSL tags instead of only the untagged names. The compile-artifact.sh and signable-compiler.ts fixes from #2779 are in source files and survived, so they are not repeated here.
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.
Adds build_linux_ppc64le/s390x_openssl11/openssl3 build variants and matching e2e test tasks, mirroring the existing x64/arm64 setup, so shared-OpenSSL mongosh binaries exist on these architectures too.
Also fixes two issues surfaced only when compiling on the ppc64le host:
LD_LIBRARY_PATHleaking from the shared-OpenSSL build into the FLE addon's git-clone subprocess (breaking git's Kerberos auth), and OpenSSL 3.0.5'smake installfailing to build HTML docs due to a missing Perl module (fixed by usinginstall_swinstead, which only installs the libs/headers we actually need).Verified with Evergreen patches covering the new variants individually, then the full build matrix (all existing + new variants) to confirm no regressions: https://spruce.corp.mongodb.com/version/6a5f83268ce8f70007bf1346