feat(circleci): use portable glibc ci-cross-influxdb3#26124
Conversation
3d179a3 to
bfe4298
Compare
71607ad to
a31f6cd
Compare
a31f6cd to
48b5e1a
Compare
TLDR> testing looks good x86_64 full testingDownloaded debug tarball from https://app.circleci.com/pipelines/github/influxdata/influxdb/44683/workflows/939d6723-dd8b-4a49-90d8-b7aa597f87bb/jobs/422875/artifacts, then extracted influxdb3 and performed I've tested wide portability for OSes with glibc 2.23 or later: Amazon Linux 2+, Debian 9+, Fedora 41, Oracle 8+, Rocky Linux 8+ (for RHEL/CentOS), Ubuntu 16.04 LTS+. At this time, we got a couple of unintended bonus OSes (Debian 8 and Ubuntu 14.04) since while we target glibc 2.23, the resulting binaries only link symbols as high as 2.18, so I listed them here. Bonus OS portability could change in the future (eg, if rust/pyo3/libpython links to later glibc symbol versions). Detailsaarch64 testingDownloaded debug tarball from https://app.circleci.com/pipelines/github/influxdata/influxdb/44683/workflows/939d6723-dd8b-4a49-90d8-b7aa597f87bb/jobs/422874/artifacts, then extracted influxdb3 and performed Unlike x86_64 testing, I only tested on aarch64 with a subset of the oldest (intended) supported releases (Amazon Linux 2, Rocky Linux 8 (for RHEL/CentOS 8 compatibility) and Ubuntu 16.14 LTS). Details |
hiltontj
left a comment
There was a problem hiding this comment.
LGTM - thanks for providing the detailed test output.
Closes #26010
This PR updates CircleCI to use an image of
ci-supportthat uses crosstool-ng built toolchain (glibc 2.23 (kernel 3.10.108), binutils 2.28.1 and gcc 5.5.0) for building the Linux x86_64 and aarch64 official binaries with a more portable glibc (no changes for osx and windows; no changes for local Linux builds). The details of the toolchain changes can be seen in ci-support (private repo).This PR also adds a pipeline parameter that allows persisting the debug builds from the
build-devjob (it defaults tofalseto retain current behavior). I set this totrueand examined the resulting Linux binaries and can see that we have good portability:Compare this to current builds:
I've only smoke tested these binaries built from CircleCI (but I did extensive testing of the crosstool-ng toolchains and vetted this solution (see internal slack)). While I don't expect there to be any issues, I plan to do a full round of testing on these Linux binaries and will add followup commits if there are any issues (I'll report back here either way).Testing outlined in #26124 (comment)Note: the
ci-supportrepo provides the tooling for thecheck_package_*jobs in this repo and I'll be making changes there to add more checks (ie, to make sure we don't regress the GLIBC portability). I'll do a follow-up PR to this repo to update theci-cross-influxdb3image to pull in the changes.References: