Skip to content

Linux release does not run on RHEL 8/9: needs glibc 2.38 and Homebrew-provided dependencies #83

Description

@mcoliver

Problem

Render farms mostly run RHEL-family distributions (RHEL / Rocky / Alma 8 and 9). The Linux release tarball (UTV-<version>-linux-x64.tar.gz) cannot run there:

  1. glibc. It is built on Ubuntu 24.04, and utvio, utvls, utvpush, utvshell and the libraries in lib/ require GLIBC_2.38. RHEL 9 has glibc 2.34, RHEL 8 has 2.28. (Measured with objdump -T on the dev-build tarball.)
  2. Dependencies are not in the tarball. Qt, FFmpeg, OpenImageIO, OpenColorIO, Boost and the rest come from Homebrew on Linux at /home/linuxbrew/.linuxbrew (or UTV_DEPS_ROOT). A farm node would need that same prefix.

The rendering side is not the obstacle: headless EGL rendering (#82) was verified on Rocky Linux 9 and 8.

Current state of the RHEL build

release.yml has a build-linux-rhel job (Rocky 9 container, continue-on-error, uploads no artifact). It fails in its first step and has never built anything: it installs ninja-build before enabling the CRB repository that provides it.

Fixing that step exposes a larger gap. build.sh --install-deps uses distribution packages on RHEL, and Rocky 9 + EPEL + RPM Fusion provide a much older stack than the one UTV is developed against:

Dependency Rocky 9 (EPEL / RPM Fusion) UTV (Homebrew)
Qt 6.6.2 6.11
PySide6 not packaged required
OpenImageIO 2.4.17 3.x
OpenColorIO 2.1.2 2.4+
OpenEXR / Imath 3.1 3.3+
Boost 1.75 current
OpenJPH not packaged required
GCC 11.5 (14 via gcc-toolset-14)
FFmpeg 7.1.5 7/8

The rocky-9 RPM release that build.sh tries to download from utv-dependencies does not exist.

Options

A. One portable Linux build (recommended). Build on an old-glibc base (Rocky 8, glibc 2.28, as the VFX Reference Platform does) with dependencies built from source by the utv-dependencies vcpkg manifest, and bundle those libraries in the tarball. One artifact runs on RHEL 8/9, Ubuntu 22.04/24.04 and newer, with no Homebrew on the target machine. Cost: a Linux dependency build in utv-dependencies (Qt and PySide6 are the heavy parts), and the no-x265 policy (AGENTS.md §1.4) has to be applied to that build as it is on Windows.

B. Native RHEL build against distribution packages. Port UTV back to Qt 6.6, OIIO 2.4, OCIO 2.1 and build PySide6 and OpenJPH ourselves. A second, older stack to keep working, and the result differs in behaviour from the other platforms.

C. Homebrew on the RHEL node, started through Homebrew's glibc. Keep the Ubuntu build, require Homebrew on the farm, and have the launch wrapper start the binaries with Homebrew's own ld.so (glibc 2.39). Least build work, but it needs Homebrew on every node and mixes Homebrew's glibc with the system's GPU driver libraries. Untested.

Acceptance

  • A release artifact that starts on stock Rocky/Alma 9 (and ideally 8) with only system packages installed.
  • CI runs the CLI smoke and image round-trip tests inside a Rocky container, headless.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions