MONGOCRYPT-841 add signed binaries for Github release#1145
MONGOCRYPT-841 add signed binaries for Github release#1145kevinAlbs wants to merge 9 commits intomongodb:masterfrom
Conversation
|
So, I haven't reviewed the code itself yet, but I wanted to comment on the use of Which means that even when built on RHEL 8.x, the library only uses symbols from version 2.17 of glibc. Glibc 2.17 is the same glibc version shipped in RHEL 7.x builds. So, in reality, it is not necessary to create both @kevinAlbs the main drawback of taking the approach I am suggesting here (i.e., to inspect the actual symbol references and determine the dependency/naming from that) is that it results in multiple platforms producing potentially identically named artifacts (as is the case with RHEL 8.x and 7.x). That means that the individual upload tasks would need to upload to a staging location and then a task which depends on the completion of all individual upload tasks would need to sort through the uploads and deduplicate. This has the additional drawback of potentially preventing the upload of any artifacts if even one individual upload task happens to fail. |
|
|
||
| set -eu | ||
|
|
||
| if command -v ldd &> /dev/null; then |
There was a problem hiding this comment.
I'm pretty sure that we don't the & here, as it will background the invocation. It probably happens that the invocation returns quickly enough that the & has no visible effect, but it still seems like it shouldn't be there.
There was a problem hiding this comment.
The ldd check is now removed in favor of an objdump check.
Remove tasks with the same glibc dependency as another task. Prefer newer distros.
kevinAlbs
left a comment
There was a problem hiding this comment.
Thank you very much for the tip.
I used objdump to fail the task if the glibc version used did not match the version specified in the file name. This confirmed (as you found) mismatches:
glibc version check failed: release_os_arch requires glibc 2.17 but library uses glibc 2.7
results in multiple platforms producing potentially identically named artifacts
That is actually OK. The S3 paths in the uploads are prefixed with the build variant. But regardless, redundant artifacts with the same architecture+glibc requirement are removed.
RHEL 6.2 builds will be dropped, but consumers can migrate to nocrypto builds with equivalent glibc requirements
Summary
Add an
upload_releasetask to upload smaller signed tarballs.Evergreen patch: https://spruce.corp.mongodb.com/version/69d8dca860bf2400076c5dc4. This patch was run by temporarily removing the
patchable: falseoption.Background & Motivation
This PR is intended to help migrate drivers from direct S3 URLs to GitHub releases (DRIVERS-3441).
The set of platforms for
upload_releasetasks are added to match existing driver download scripts (referenced in "How binaries are obtained?" of Which drivers package libmongocrypt?).The naming scheme follows some ideas of: https://packaging.python.org/en/latest/specifications/platform-compatibility-tags/, and follows this form:
Examples:
libmongocrypt on Linux has an OpenSSL dependency by default, unless building with
nocrypto. Users must set crypto callbacks (e.g. callmongocrypt_setopt_crypto_hooks) to do operations requiring crypto to avoid an error.Version numbers for glibc were determined by running
objdumpon thebuild_and_test_and_uploadtasks.