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:
- 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.)
- 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.
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:utvio,utvls,utvpush,utvshelland the libraries inlib/requireGLIBC_2.38. RHEL 9 has glibc 2.34, RHEL 8 has 2.28. (Measured withobjdump -Ton thedev-buildtarball.)/home/linuxbrew/.linuxbrew(orUTV_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.ymlhas abuild-linux-rheljob (Rocky 9 container,continue-on-error, uploads no artifact). It fails in its first step and has never built anything: it installsninja-buildbefore enabling the CRB repository that provides it.Fixing that step exposes a larger gap.
build.sh --install-depsuses distribution packages on RHEL, and Rocky 9 + EPEL + RPM Fusion provide a much older stack than the one UTV is developed against:gcc-toolset-14)The
rocky-9RPM release thatbuild.shtries to download fromutv-dependenciesdoes 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-dependenciesvcpkg 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 inutv-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