[Bug 283128] devel/spirv-llvm-translator: add libLLVMSPIRVLib.so.${MAJOR} symlink for llvm >= 18 ?

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 04 Dec 2024 16:16:09 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=283128

            Bug ID: 283128
           Summary: devel/spirv-llvm-translator: add
                    libLLVMSPIRVLib.so.${MAJOR} symlink for llvm >= 18 ?
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: jbeich@FreeBSD.org
          Reporter: dim@FreeBSD.org
          Assignee: jbeich@FreeBSD.org
             Flags: maintainer-feedback?(jbeich@FreeBSD.org)

During the exp-run for bug 283013 ("update LLVM_DEFAULT to 18") it
turned out that lang/clover fails to build, with an error similar
to:

[133amd64-default-foo-job-09] Extracting spirv-llvm-translator-llvm18-18.1.6:
.......... done
===>   clover-24.1.7 depends on shared library: libLLVMSPIRVLib.so.18 - not
found
*** Error code 1

This is because after llvm 18, the .so filename has become
libLLVMSPIRVLib.so.18.1, libLLVMSPIRVLib.so.19.1, and so on.

The Makefile for devel/spirv-llvm-translator takes this into account by doing:

SOVERSION=      ${${FLAVOR:S/llvm//}<18:?${DISTVERSION:R:R}:${DISTVERSION:R}}

which is nice, but it is rather annoying that all consumers will have to be
updated similarly too. I found the following consumers, which directly refer to
the .so filename:

devel/intel-graphics-compiler/Makefile:                
libLLVMSPIRVLib.so.${FLAVOR:S/llvm//}:devel/spirv-llvm-translator@${FLAVOR}
devel/ispc/Makefile:                   
libLLVMSPIRVLib.so.${LLVM_VERSION}:devel/spirv-llvm-translator@llvm${LLVM_VERSION}
devel/opencl-clang/Makefile:           
libLLVMSPIRVLib.so.${FLAVOR:S/llvm//}:devel/spirv-llvm-translator@${FLAVOR}
graphics/mesa-devel/Makefile: OPENCL_LIB_DEPENDS=      
libLLVMSPIRVLib.so.${OPENCL_SOVERSION}:devel/spirv-llvm-translator@${LLVM_PORT:T}
lang/clover/Makefile:          
libLLVMSPIRVLib.so.${LLVM_VERSION}:devel/spirv-llvm-translator@${LLVM_PORT:T} \

If it is not too much trouble, should the devel/spirv-llvm-translator add a
compat symlink libLLVMSPIRVLib.so.18, libLLVMSPIRVLib.so.19 etc, to make it
easier on consumers? 

Note that the devel/llvm18 and higher ports do something slightly different:

libLLVM-18.so@ -> libLLVM.so.18.1
libLLVM.so@ -> libLLVM.so.18.1
libLLVM.so.18.1*

and:

libLLVM-19.so@ -> libLLVM.so.19.1
libLLVM.so@ -> libLLVM.so.19.1
libLLVM.so.19.1*

-- 
You are receiving this mail because:
You are the assignee for the bug.