Skip to content

Build release binaries on EL8 so packages run on every supported distro - #128

Open
mscasso-scanoss wants to merge 2 commits into
mainfrom
build/el8-glibc-baseline
Open

mscasso-scanoss wants to merge 2 commits into
mainfrom
build/el8-glibc-baseline

Conversation

@mscasso-scanoss

Copy link
Copy Markdown
Contributor

Problem

Release binaries are built on ubuntu-22.04 (glibc 2.35), so the scanoss binary requires GLIBC_2.33/GLIBC_2.34:

  • the .rpm can't be installed on RHEL/Rocky/Alma 8 (glibc 2.28): scanoss-5.4.25-1.x86_64.rpm requires libc.so.6(GLIBC_2.33)(64bit) and libc.so.6(GLIBC_2.34)(64bit);
  • the .deb can't run on Debian 11 (glibc 2.31), and also declares libgcrypt20 (>= 1.9.0) while Debian 11 ships 1.8.x.

Changes

  • Build in a rockylinux:8 container (glibc 2.28 baseline). The same binaries, .tar.gz, .deb and .rpm then work on every supported distro. Packaging still runs on the Ubuntu runner.
  • Check the glibc baseline: the release fails if scanoss requires glibc > 2.28. ldb (latest release, as before) is built and installed in the same container, since the engine links against libldb.so.
  • Package with package.sh directly: make prepare_*_package depends on all and would rebuild on the runner, undoing the EL8 build.
  • .deb depends on libgcrypt20 (>= 1.8.0): built on EL8 (libgcrypt 1.8.5) the binaries only need 1.8 symbols (GCRYPT_1.6).
  • Manual runs (workflow_dispatch, added) upload the packages as workflow artifacts instead of creating a release, and the tarball name is file-safe for branch names.

Package file names are unchanged, so nothing changes for consumers (e.g. the on-premise installer).

Testing

  • workflow_dispatch is new here, so the workflow can't be run from this branch before merging. Its build and packaging steps were run locally with the same commands (rockylinux:8 build, ubuntu:22.04 packaging): scanoss requires glibc 2.22.
  • The engine packages, together with the ldb packages built by CI in Build release binaries on EL8 so packages run on every supported distro ldb#76, installed in clean containers; ldb -v and scanoss -v run and ldd resolves everything:
Distro glibc Result
debian:11 2.31 ✅
debian:12 2.36 ✅
debian:13 2.41 ✅
ubuntu:22.04 2.35 ✅
ubuntu:24.04 2.39 ✅
rockylinux:8 2.28 ✅ (fails today: requires GLIBC_2.33/2.34)
rockylinux:9 2.34 ✅
almalinux:10 2.39 ✅
fedora:latest 2.43 ✅

Related: scanoss/on-premise#31.

🤖 Generated with Claude Code

mscasso-scanoss and others added 2 commits October 29, 2026 16:57
Release binaries were built on Ubuntu 22.04 (glibc 2.35), so scanoss
required glibc 2.33/2.34: the .rpm could not be installed on
RHEL/Rocky/Alma 8 (glibc 2.28) and the .deb not on Debian 11 (2.31).

- Compile ldb and the engine in a rockylinux:8 container (glibc 2.28
  baseline) and fail the release if the binary requires a newer glibc.
- Package with package.sh directly: make prepare_*_package rebuilds on
  the runner.
- Depend on libgcrypt20 >= 1.8.0 (Debian 11 ships 1.8.x; EL8 builds
  only need 1.8 symbols).
- Allow manual runs (workflow_dispatch), which upload the packages as
  workflow artifacts instead of creating a release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…work

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant