Skip to content

fix: add openssl replace_requires to vfx Conan profiles#381

Draft
aloysbaillet wants to merge 5 commits intoAcademySoftwareFoundation:mainfrom
aloysbaillet:fix/openssl-conan-profile-replace-requires
Draft

fix: add openssl replace_requires to vfx Conan profiles#381
aloysbaillet wants to merge 5 commits intoAcademySoftwareFoundation:mainfrom
aloysbaillet:fix/openssl-conan-profile-replace-requires

Conversation

@aloysbaillet
Copy link
Copy Markdown
Contributor

@aloysbaillet aloysbaillet commented Apr 5, 2026

Summary

  • openssl replace_requires: Conan 2 replaces (not merges) [replace_requires] sections when a child profile defines its own. After openssl was moved to common-wrappers (99175a6) and removed from vfx profiles (d95cc87), the openssl mapping from parent ci_common* profiles was silently lost. Adds explicit openssl/* entries to vfx2024, vfx2025, and vfx2026 profiles.
  • ASWF_PYSIDE_CLANG_VERSION: The packages/common/Dockerfile was hardcoding ASWF_PYSIDE_CLANG_VERSION to ASWF_CLANG_VERSION, ignoring the ARG from versions.yaml. This caused PySide to use the wrong clang version.
  • Explicit cache mount IDs: Added id=aswf-conan-cache and id=aswf-ccache to BuildKit cache mounts in both the package builder and CI image Dockerfiles for more predictable cache sharing.
  • nss version: Corrected nss version from 3.112.0 to 3.101.0 in all vfx profiles and versions.yaml. The nss conanfile detects the version from the system, and the CUDA base image ships nss 3.101.0, not 3.112.0. This was causing Qt builds to fail in both CI and local builds.

Test plan

  • CI docker build passes the cpython package build step (openssl fix)
  • CI docker build passes the Qt package build step (nss version fix)
  • CI docker build passes the PySide package build step (clang version fix)
  • Full VFX 2026 pipeline completes without package resolution errors

🤖 Generated with Claude Code

@aloysbaillet aloysbaillet requested a review from jfpanisset as a code owner April 5, 2026 12:06
@aloysbaillet aloysbaillet force-pushed the fix/openssl-conan-profile-replace-requires branch from 78dbed7 to 1fc0ec3 Compare April 5, 2026 12:08
@aloysbaillet aloysbaillet self-assigned this Apr 5, 2026
Copy link
Copy Markdown
Contributor

@jfpanisset jfpanisset left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As per:

https://dl.rockylinux.org/pub/rocky/8.10/AppStream/x86_64/os/Packages/n/

Although the first release of Rocky 8.10 had nss-3.90.0-7 from 2024-05-23, since then there have been a number of updates:

  • 3.101.0-7 on 2024-09-16
  • 3.101.0-11 on 2024-12-21
  • 3.112.0-4 on 2025-09-10

For vfx2024-2025-2026 the base image as per ci-baseos-gl-conan/image.yaml is:

 ${ASWF_BASEOS_IMAGE}:${ASWF_CUDA_VERSION}-runtime-${ASWF_BASEOS_DISTRO}

which resolves to:

vfx2024: nvidia/cuda:12.6.3-runtime-rockylinux8
vfx2025: nvidia/cuda:12.6.3-runtime-rockylinux8
vfx2026: nvidia/cuda:12.9.1-runtime-rockylinux8

Those base images don't have nss-3 in them, that gets installed by scripts/common/install_yumpackages.sh, which will get you nss-3.112.0-4

Looking at the latest set of images which were refreshed a few weeks ago, they also seem to have nss-3.112.0-4 in them:

$ docker image pull aswf/ci-baseos-gl-conan:6.3
$ docker run --rm  aswf/ci-baseos-gl-conan:6.3 rpm -qa | grep nss-3
nss-3.112.0-4.el8_10.x86_64

Detecting that a base image needs to be refresh / rebuilt is not simple. Where did you run across a base image that still had nss-3.101 in it?

@jfpanisset
Copy link
Copy Markdown
Contributor

For the openssl issue, I believe the problem is caused by an obsolete version specified in versions.yaml, I just merged a fix here:

5815057

For the issue with nss, I saw this in a failed build:

ERROR: Package 'nss/3.112.0@aswftesting/vfx2026' not resolved: Unable to find 'nss/3.112.0@aswftesting/vfx2026' in remotes.

I'm investigating why this is, the code in packages/conan/recipes/nss/conanfile.py is supposed to get the version from /usr/lib64/pkgconfig/nss.pc should be setting the version to 3.112.0





Conan 2 replaces (not merges) [replace_requires] sections when a child
profile defines its own. Since the vfx profiles define their own
[replace_requires], the openssl mapping from the parent ci_common
profiles was lost after openssl was moved to common-wrappers in 99175a6
and removed from vfx profiles in d95cc87.

This caused builds of packages depending on openssl (e.g. cpython) to
fail with: "Package 'openssl/1.1.1k@aswftesting/ci_common6' not
resolved: Unable to find in remotes."

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Aloys Baillet <aloys.baillet+github@gmail.com>
@aloysbaillet aloysbaillet force-pushed the fix/openssl-conan-profile-replace-requires branch from 30a9f1b to c2bc3d5 Compare April 6, 2026 11:28
@aloysbaillet aloysbaillet marked this pull request as draft April 6, 2026 11:37
@aloysbaillet aloysbaillet force-pushed the fix/openssl-conan-profile-replace-requires branch 4 times, most recently from c7795a2 to b93f20b Compare April 7, 2026 13:44
The Dockerfile was hardcoding ASWF_PYSIDE_CLANG_VERSION to
ASWF_CLANG_VERSION, ignoring the ARG passed from versions.yaml.
This caused PySide to always use whatever clang version was inherited
via ASWF_CLANG_VERSION rather than the explicitly configured
ASWF_PYSIDE_CLANG_VERSION.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Aloys Baillet <aloys.baillet+github@gmail.com>
@aloysbaillet aloysbaillet force-pushed the fix/openssl-conan-profile-replace-requires branch from b93f20b to d4559bc Compare April 7, 2026 13:56
The nss conanfile uses set_version() to detect the system version from
/usr/lib64/pkgconfig/nss.pc. The CUDA base image (nvidia/cuda) used by
ci-baseos-gl-conan ships nss 3.101.0, but commit 5c0fe00 bumped the
profiles to 3.112.0 assuming the base image had been updated. This
caused Qt and other nss consumers to fail with "not resolved" errors
in both CI and local builds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Aloys Baillet <aloys.baillet+github@gmail.com>
@jfpanisset
Copy link
Copy Markdown
Contributor

I don't think any version of nss is included in the CUDA base images, either the 12.6.3 which is used for vfx2024 and vfx2025, or the 12.9.1 for vfx2026:

$ docker run -it --rm nvidia/cuda:12.6.3-runtime-rockylinux8 rpm -qa | grep nss-
$ docker run -it --rm nvidia/cuda:12.9.1-runtime-rockylinux8 rpm -qa | grep nss-

And unless different Rocky Linux mirrors have different contents (which is definitely not impossible), when scripts/common/install-yumpackages.sh does:

yum install --setopt=tsflags=nodocs -y \
...
nss \
nss-devel \
...

I end up with:

[root@8ebccabae70f /]# rpm -qa | grep nss-3
nss-3.112.0-4.el8_10.x86_64

We've seen similar issues before where unavailable Rocky Linux mirrors would cause build failures:

#299

Some discussion here:

https://forums.rockylinux.org/t/mirror-list-mirrors-rockylinux-org-is-serving-out-of-sync-repositories-for-both-rl9-and-rl8/19756

I wonder if you tried switch from mirrors.rockylinux.org to dl.rockylinux.org if you'd end up with nss-3.112.0?

@jfpanisset
Copy link
Copy Markdown
Contributor

I just tried:

curl 'https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=AppStream-8.10' > /tmp/repos.txt
for url in $(cat /tmp/repos.txt); do echo $url; curl -OL $url/Packages/n/nss-3.112.0-4.el8_10.x86_64.rpm; done

and all the repos seemed to have nss-3.112.0...

Perhaps worth trying to replace dnf clean all with dnf upgrade --refresh in install_yumpackages.sh ?

Docker BuildKit cache mounts don't persist between separate docker
buildx bake invocations. This means packages built in earlier steps
(e.g. openssl in common-wrappers) can't be found by later steps
(e.g. cpython in base1-2) because the Conan cache mount is empty.

Added export_profile_recipes.sh which parses the Conan profile's
[replace_requires] entries and pre-exports all referenced recipes
to the Conan cache before each conan create/install. Combined with
--build=missing, this allows Conan to build any missing dependency
from source even when the cache mount starts empty.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Aloys Baillet <aloys.baillet+github@gmail.com>
@aloysbaillet aloysbaillet force-pushed the fix/openssl-conan-profile-replace-requires branch from 600cdf8 to 88d4f75 Compare April 12, 2026 23:16
When building clang with shared=True, static .a libraries are removed
but LLVMExports-release.cmake and ClangTargets-release.cmake still
contain file-existence checks for them. The existing patches only
covered LLVMExports.cmake and ClangTargets.cmake, missing the
per-configuration -release.cmake variants. This caused PySide/shiboken
to fail during CMake configure when clang was built from source via
--build=missing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Aloys Baillet <aloys.baillet+github@gmail.com>
@aloysbaillet aloysbaillet force-pushed the fix/openssl-conan-profile-replace-requires branch from 88d4f75 to 4888b45 Compare April 16, 2026 11:05
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.

2 participants