Skip to content

feat(ci): build shared-OpenSSL binaries for ppc64le and s390x MONGOSH-1681 - #2779

Merged
ivandevp merged 2 commits into
mainfrom
MONGOSH-1681-shared-openssl-ppc64le-s390x
Jul 28, 2026
Merged

feat(ci): build shared-OpenSSL binaries for ppc64le and s390x MONGOSH-1681#2779
ivandevp merged 2 commits into
mainfrom
MONGOSH-1681-shared-openssl-ppc64le-s390x

Conversation

@ivandevp

@ivandevp ivandevp commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

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_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).

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

…-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
ivandevp requested a review from a team as a code owner July 21, 2026 19:08
@ivandevp
ivandevp requested a review from paula-stacho July 21, 2026 19:08
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;

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codeowners-service-app

Copy link
Copy Markdown

Assigned bsradcliffe for team mongosh-developers because paula-stacho is out of office.

@paula-stacho paula-stacho left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ivandevp
ivandevp merged commit 1ab2e53 into main Jul 28, 2026
163 checks passed
@ivandevp
ivandevp deleted the MONGOSH-1681-shared-openssl-ppc64le-s390x branch July 28, 2026 11:07
Comment thread .evergreen.yml

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants