Bug 2332429

Summary: default installed OpenCL-ICD-Loader conflicts with mesa-libOpenCL
Product: [Fedora] Fedora Reporter: Janne Grunau <janne-fdr>
Component: OpenCL-ICD-LoaderAssignee: František Zatloukal <fzatlouk>
Status: CLOSED ERRATA QA Contact:
Severity: high Docs Contact:
Priority: unspecified    
Version: 41CC: fzatlouk, marcosfrm, ngompa13
Target Milestone: ---Keywords: Regression
Target Release: ---   
Hardware: aarch64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-04-21 16:48:58 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Janne Grunau 2024-12-14 21:57:11 UTC
`OpenCL-ICD-Loader` seems to be the preferred provider for /usr/lib64/libOpenCL.so.1 and is thus conflicting with `mesa-libOpenCL`.

OpenCL-ICD-Loader conflicts with ocl-icd but mesa-libOpenCL requires "ocl-icd(aarch-64)".

This was observed with the daily Fedora Asahi Remix build for Fedora 41 but Fedora composes should behave the same way if I interpret

https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20241214.n.0/logs/x86_64/buildinstall-Everything-logs/pkglists/

correctly. Note that OpenCL-ICD-Loader but ocl-icd is absent.

Reproducible: Always

Steps to Reproduce:
1. install Fedora Asahi Remix Fedora 41 / Rawhide build from https://fedora-asahi-remix.org/builds.html (upstream Fedora composes should behave the same)
2. dnf install mesa-libOpenCL
Actual Results:  
Failed to resolve the transaction:
Problem: conflicting requests
...
  - package mesa-libOpenCL-24.2.4-1.fc41.aarch64 from fedora requires ocl-icd(aarch-64), but none of the providers can be installed
  - package mesa-libOpenCL-24.2.8-1.fc41.aarch64 from updates requires ocl-icd(aarch-64), but none of the providers can be installed
  - problem with installed package
  - installed package OpenCL-ICD-Loader-3.0.6-1.20241023git5907ac1.fc41.aarch64 conflicts with ocl-icd provided by ocl-icd-2.3.2-7.fc41.aarch64 from fedora
  - package OpenCL-ICD-Loader-3.0.6-1.20241023git5907ac1.fc41.aarch64 from updates conflicts with ocl-icd provided by ocl-icd-2.3.2-7.fc41.aarch64 from fedora

Expected Results:  
mesa-libOpenCL is installed

Comment 1 František Zatloukal 2024-12-15 00:09:31 UTC
Hmm, I wonder how this happened. OpenCL-ICD-Loader is just a plain new package, not mentioned in any of the comps, I certainly didn't expect this :/

One thing we can do (imo) is a mesa change:

- Requires:       ocl-icd%{?_isa}
+ Requires:       ocl-icd%{?_isa} or OpenCL-ICD-Loader%{?_isa}

but I'd say OpenCL-ICD-Loader just shouldn't be pulled in by default by anything, it almost seems like somethings is requiring libOpenCL.so.1 instead of ocl-icd somewhere...

Does anybody have any ideas? I have very limited availability till years end.

Comment 2 Neal Gompa 2024-12-15 02:43:45 UTC
(In reply to František Zatloukal from comment #1)
>
> but I'd say OpenCL-ICD-Loader just shouldn't be pulled in by default by
> anything, it almost seems like somethings is requiring libOpenCL.so.1
> instead of ocl-icd somewhere...
> 
> Does anybody have any ideas? I have very limited availability till years end.

It wouldn't surprise me if this is the case, as that's how our dependency generation works.

As I said in the review bug, we need to switch over to a virtual provider system for this, like so in both ocl-icd and this package:

Provides: opencl-icd-loader-impl%{?_isa}
Provides: opencl-icd-loader-impl
Conflicts: opencl-icd-loader-impl

Then Mesa can be adjusted to the following:

Requires: opencl-icd-loader-impl%{?_isa}
Suggests: ocl-icd

Comment 3 Neal Gompa 2024-12-15 02:44:26 UTC
(In reply to Neal Gompa from comment #2)
>
> Then Mesa can be adjusted to the following:
> 
> Requires: opencl-icd-loader-impl%{?_isa}
> Suggests: ocl-icd

Err, the Suggests needs to be arched, so "Suggests: ocl-icd%{?_isa}"

Comment 4 Janne Grunau 2024-12-15 09:29:31 UTC
The virtual provider would fix the conflict but I think `OpenCL-ICD-Loader` will still be pulled in as the provider for "libOpenCL.so.1*" (most likely via libavfilter-free). This should work but my understanding from https://bugzilla.redhat.com/show_bug.cgi?id=2330385 is that it's unintended.

"Suggests: ocl-icd%{?_isa}" in mesa-libOpenCL might resolve the issue for the Fedora Asahi Remix kiwi image generation as it explicitly installs "mesa-libOpenCL". This won't work for Fedora composes as nothing pulls mesa-libOpenCL in.

I don't see how this can be resolved unless rpm provides priorities for the "libOpenCL.so.1*" dependency. I suspect it prefers "OpenCL-ICD-Loader" over "ocl-icd" based on case sensitive alphabetical sorting.

Comment 5 Fedora Update System 2025-04-08 10:45:34 UTC
FEDORA-2025-1d2ba9671c (mesa-25.0.3-1.fc43) has been submitted as an update to Fedora 43.
https://bodhi.fedoraproject.org/updates/FEDORA-2025-1d2ba9671c

Comment 6 Fedora Update System 2025-04-21 15:14:16 UTC
FEDORA-2025-52471ac786 (mesa-25.0.4-1.fc43) has been submitted as an update to Fedora 43.
https://bodhi.fedoraproject.org/updates/FEDORA-2025-52471ac786

Comment 7 Fedora Update System 2025-04-21 16:48:58 UTC
FEDORA-2025-52471ac786 (mesa-25.0.4-1.fc43) has been pushed to the Fedora 43 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 8 Marcos Mello 2025-09-30 09:52:14 UTC
(In reply to František Zatloukal from comment #1)
> Hmm, I wonder how this happened. OpenCL-ICD-Loader is just a plain new
> package, not mentioned in any of the comps, I certainly didn't expect this :/
> 
> One thing we can do (imo) is a mesa change:
> 
> - Requires:       ocl-icd%{?_isa}
> + Requires:       ocl-icd%{?_isa} or OpenCL-ICD-Loader%{?_isa}
> 
> but I'd say OpenCL-ICD-Loader just shouldn't be pulled in by default by
> anything, it almost seems like somethings is requiring libOpenCL.so.1
> instead of ocl-icd somewhere...
> 
> Does anybody have any ideas? I have very limited availability till years end.

Well, the Fedora rocm-opencl package recommends OpenCL-ICD-Loader (https://src.fedoraproject.org/rpms/rocclr/blob/f42/f/rocclr.spec#_126). If I use the RHEL9 repository from https://repo.radeon.com/rocm/ on Fedora 42 and install rocm-opencl-runtime, it pulls in ocl-icd as a dependency instead.

Why is OpenCL-ICD-Loader preferred by the Fedora rocm-opencl package? Shouldn't *all* packages that require or recommend the Loader be adapted to follow what was done in Mesa and use a flexible dependency like (ocl-icd%{?_isa} or OpenCL-ICD-Loader%{?_isa})?