[Bug 264783] graphics/mesa-dri pulls in the entire llvm package
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 264783] graphics/mesa-dri pulls in the entire llvm package"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 21 Jun 2022 03:34:43 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264783 --- Comment #4 from Charlie Li <vishwin@freebsd.org> --- (In reply to Bill Blake from comment #3) It's not that simple. Especially not without subpackage support in the ports framework, ie packaging separate portions of the staging section as separate packages. The work to get there is another story altogether and depends on everyone's collective cycles availability. I don't think many folks, myself included, are happy with the situation that LLVM consumes significant storage, but LLVM is a rather dense software. It is further complicated by how there is no guarantee of API/ABI stability between major versions. For mesa specifically, the part that requires LLVM specifically is the swrast driver, better known as LLVMpipe, a software graphics renderer. swrast is dynamically linked to libLLVM (example taken from my somewhat-off-the-beaten-path copy of mesa): % readelf -d /usr/local/lib/dri/swrast_dri.so Dynamic section at offset 0x19242f0 contains 37 entries: Tag Type Name/Value 0x0000000000000001 NEEDED Shared library: [libglapi.so.0] 0x0000000000000001 NEEDED Shared library: [libdrm.so.2] 0x0000000000000001 NEEDED Shared library: [libLLVM-14.so] 0x0000000000000001 NEEDED Shared library: [libexpat.so.1] 0x0000000000000001 NEEDED Shared library: [libz.so.6] 0x0000000000000001 NEEDED Shared library: [libm.so.5] 0x0000000000000001 NEEDED Shared library: [libdrm_radeon.so.1] 0x0000000000000001 NEEDED Shared library: [libelf.so.2] 0x0000000000000001 NEEDED Shared library: [libdrm_amdgpu.so.1] 0x0000000000000001 NEEDED Shared library: [libc++.so.1] 0x0000000000000001 NEEDED Shared library: [libcxxrt.so.1] 0x0000000000000001 NEEDED Shared library: [libgcc_s.so.1] 0x0000000000000001 NEEDED Shared library: [libthr.so.3] 0x0000000000000001 NEEDED Shared library: [libc.so.7] 0x000000000000000e SONAME Library soname: [libgallium_dri.so] 0x0000000000000007 RELA 0xa480 0x0000000000000008 RELASZ 500760 (bytes) 0x0000000000000009 RELAENT 24 (bytes) 0x000000006ffffff9 RELACOUNT 20420 0x0000000000000017 JMPREL 0x84898 0x0000000000000002 PLTRELSZ 16104 (bytes) 0x0000000000000003 PLTGOT 0x192a6d8 0x0000000000000014 PLTREL RELA 0x0000000000000006 SYMTAB 0x2d0 0x000000000000000b SYMENT 24 (bytes) 0x0000000000000005 STRTAB 0x6684 0x000000000000000a STRSZ 15868 (bytes) 0x000000006ffffef5 GNU_HASH 0x4f18 0x0000000000000004 HASH 0x4f84 0x0000000000000019 INIT_ARRAY 0x000000000000001b INIT_ARRAYSZ 112 (bytes) 0x000000000000000c INIT 0x6427f4 0x000000000000000d FINI 0x642804 0x000000006ffffff0 VERSYM 0x47b8 0x000000006ffffffe VERNEED 0x4d78 0x000000006fffffff VERNEEDNUM 8 0x0000000000000000 NULL 0x0 But libLLVM-${LLVM_SUFFIX}.so lives in ${PREFIX}/llvm${LLVM_SUFFIX}/lib, not ${PREFIX}/lib, so as to keep much of the LLVM distribution together in one spot (because remember, LLVM is dense), which has us invoking ldconfig(8) to add the LLVM hierarchy into the dynamic linker search path. It is a bad idea to have multiple copies of the same exact shared object floating around, especially with the same SONAME, as they have the chance to cause collisions. Additionally, this and many other programs in and outside the ports tree rely on other components of LLVM to build or run, often using llvm-config to feed the build system LLVM configuration information, interfacing with shared or static objects or a combination of both. So no, we cannot simply give the library a new name and copy it in. -- You are receiving this mail because: You are the assignee for the bug.