[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1118435: rocm-llvm: Dependency on clang-21 causes FTBFS in reverse dependencies



Hi Christian,

On 2025-10-19 14:27, Christian Kastner wrote:
The recent update of hipcc to 7.0.1+dfsg-1 in unstable made src:ggml
FTBFS because its d/rules contains

     export HIPCXX=clang-17

I looked at two other samples of `build-rdeps hipcc`, ectrans and spfft,
and they use the same pattern, so this will affect them, too.

Thank you for the report. The backing clang for hipcc will change regularly. If packages refer to a specific version of clang in their d/rules, they will need to add clang-<N> and rocm-device-libs-<N> to their B-D (where <N> is the version of clang that they are specifying).

I must apologize for not directing reverse dependencies to do that previously. When we'd begun using that pattern, I hadn't fully appreciated the effects that package updates would have or what mitigations we might have by the time we were moving to a new backing compiler.

rocm-hipamd 5.7.1 makes this same mistake in its autopkgtests as the build-rdeps that you list. Those failed autopkgtests are also blocking the migration of rocm-llvm to testing. I would prepare a rocm-hipamd 5.7.1-8 and fix the tests by adding clang-17 and rocm-device-libs-17 to d/t/control, but rocm-hipamd also FTBFS due to the libamd-comgr-dev transition. I will finish the libamd-comgr3 transition by updating rocm-hipamd to 6.4.4, and continuing the transition from libamdhip64-5 to libamdhip64-6 and then close this bug. The problem is not in rocm-llvm, but rather is a mistake in the reverse dependencies. Their packaging rules should not directly reference a transitive dependency; if they need to reference the clang compiler directly they should be adding it directly to their B-D.

Nothing about hipcc 7.0.1+dfsg-1 prevents users from building with clang-17 as their HIPCXX compiler. Users just need to be sure they've installed clang-17 and rocm-device-libs-17, as that won't happen automatically.

With the understanding that a decision has been made against a
/usr/bin/hipcxx, a workaround would be to ship this in some private
directory of hipcc, for example

    /usr/lib/hipcc/bin/clang -> /usr/bin/clang-xx

where xx is the version of clang that this particular hipcc needs.

That's a reasonable future convention to solve this problem more cleanly, albeit one of a few in discussion.

Sincerely,
Cory Bloor


Reply to: