-
Notifications
You must be signed in to change notification settings - Fork 99
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hints for how cmake chooses which version of LLVM to link with irony-server #590
Comments
irony-mode calls: irony-mode/server/src/CMakeLists.txt Line 4 in 40e0ce1
If you print the path of this Clang that is found, what do you get? If you can patch irony-server, i would try to add this line below the find_package: find_package(Clang)
+
+message(STATUS "Clang_FOUND=${Clang_FOUND} Clang_DIR=${Clang_DIR}") And see what irony-mode CMake generation step prints. What is the output of this:
It looks like irony-server links to the libclang found in the standard search paths.
|
Wow, thank you for such a fast reply!
Guillaume Papin ***@***.***> writes:
irony-mode calls:
https://github.com/Sarcasm/irony-mode/blob/40e0ce19eb850bdf1f77225f11713cc816250d95/server/src/CMakeLists.txt#L4
If you print the path of this Clang that is found, what do you get?
Clang_DIR:PATH=/usr/lib/cmake/clang-16
Are you sure the dev packages do not override the Clang-config.cmake?
I didn't see anything that looked like it could do this.
If you can patch irony-server, i would try to add this line below the find_package:
```diff
find_package(Clang)
+
+message(STATUS "Clang_FOUND=${Clang_FOUND} Clang_DIR=${Clang_DIR}")
```
-- Clang_FOUND=1 Clang_DIR=/usr/lib/cmake/clang-16
What is the output of this:
clang -print-resource-dir
bash: clang: command not found
Debian installs multiple supported LLVM/Clang versions as peers.
Currently there are:
$ clang-18 -print-resource-dir
/usr/lib/llvm-18/lib/clang/18
$ clang-17 -print-resource-dir
/usr/lib/llvm-17/lib/clang/17
$ clang-16 -print-resource-dir
/usr/lib/llvm-16/lib/clang/16
And see what irony-mode CMake generation step prints.
See just below your patch snippet.
It looks like irony-server links to the libclang found in the standard search paths.
What do you get if you type this?
ldd /usr/lib/libclang.so*
Ohhh, I think I see what's happening now. I'm not sure if it happens at
the filesystem or pkg-config level, but for {18,16,17}, "16" will
usually sort first, and clang-16 matches the package lookup for this
reason. Maybe cmake's default rule is "first match found" rather than
"highest version found"? I had assumed cmake would serialise and sort
the matches and then choose the highest by default, or else just match
the tail rather than the head.
$ ldd /usr/lib/x86_64-linux-gnu/libclang*
/usr/lib/x86_64-linux-gnu/libclang-16.so:
linux-vdso.so.1 (0x00007ffcddfd8000)
libLLVM-16.so.1 => /lib/x86_64-linux-gnu/libLLVM-16.so.1 (0x00007fe136a44000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe1367de000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe1365fa000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe1401c5000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fe1365ed000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007fe1365b3000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe1364d2000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007fe134dde000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe134dbf000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fe134cfe000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fe134cc9000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fe134b17000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe134ae8000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fe134ad3000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007fe1348ce000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe13489e000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007fe13488f000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007fe132abb000)
/usr/lib/x86_64-linux-gnu/libclang-16.so.1:
linux-vdso.so.1 (0x00007fffb6f95000)
libLLVM-16.so.1 => /lib/x86_64-linux-gnu/libLLVM-16.so.1 (0x00007f8e4de61000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8e4dbfb000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8e4da17000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8e575e2000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f8e4da0a000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007f8e4d9d0000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8e4d8ef000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007f8e4c1fb000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8e4c1dc000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f8e4c11b000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f8e4c0e6000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f8e4bf34000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8e4bf05000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f8e4bef0000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f8e4bceb000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f8e4bcbb000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f8e4bcac000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f8e49ed8000)
/usr/lib/x86_64-linux-gnu/libclang-16.so.16.0.6:
linux-vdso.so.1 (0x00007ffd7eda0000)
libLLVM-16.so.1 => /lib/x86_64-linux-gnu/libLLVM-16.so.1 (0x00007fc94df72000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc94dd0c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc94db28000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc9576f3000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fc94db1b000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007fc94dae1000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc94da00000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007fc94c30c000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc94c2ed000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fc94c22c000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fc94c1f7000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fc94c045000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc94c016000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fc94c001000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007fc94bdfc000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fc94bdcc000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007fc94bdbd000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007fc949fe9000)
/usr/lib/x86_64-linux-gnu/libclang-17.so:
linux-vdso.so.1 (0x00007ffe079d1000)
libLLVM-17.so.1 => /lib/x86_64-linux-gnu/libLLVM-17.so.1 (0x00007f8f27fbf000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8f27d59000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8f27b75000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8f3168b000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f8f27b68000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007f8f27b2e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8f27a4d000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007f8f26359000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8f2633a000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f8f26279000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f8f26244000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f8f26092000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8f26063000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f8f2604e000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f8f25e49000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f8f25e19000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f8f25e0a000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f8f24036000)
/usr/lib/x86_64-linux-gnu/libclang-17.so.1:
linux-vdso.so.1 (0x00007ffc467b1000)
libLLVM-17.so.1 => /lib/x86_64-linux-gnu/libLLVM-17.so.1 (0x00007fa9d5803000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa9d559d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa9d53b9000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa9deecf000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fa9d53ac000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007fa9d5372000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa9d5291000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007fa9d3b9d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa9d3b7e000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fa9d3abd000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fa9d3a88000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fa9d38d6000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa9d38a7000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fa9d3892000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007fa9d368d000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fa9d365d000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007fa9d364e000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007fa9d187a000)
/usr/lib/x86_64-linux-gnu/libclang-17.so.17:
linux-vdso.so.1 (0x00007ffe505c3000)
libLLVM-17.so.1 => /lib/x86_64-linux-gnu/libLLVM-17.so.1 (0x00007f49f4650000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f49f43ea000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f49f4206000)
/lib64/ld-linux-x86-64.so.2 (0x00007f49fdd1c000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f49f41f9000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007f49f41bf000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f49f40de000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007f49f29ea000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f49f29cb000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f49f290a000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f49f28d5000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f49f2723000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f49f26f4000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f49f26df000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f49f24da000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f49f24aa000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f49f249b000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f49f06c7000)
/usr/lib/x86_64-linux-gnu/libclang-18.so:
linux-vdso.so.1 (0x00007ffc931fe000)
libLLVM.so.18.1 => /lib/x86_64-linux-gnu/libLLVM.so.18.1 (0x00007ff6eb9bb000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff6eb755000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff6eb571000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff6f5221000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007ff6eb564000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007ff6eb52a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff6eb449000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007ff6e9d55000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff6e9d36000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007ff6e9c75000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007ff6e9c40000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007ff6e9a8e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff6e9a5f000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007ff6e9a4a000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007ff6e9845000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007ff6e9815000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007ff6e9806000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007ff6e7a32000)
/usr/lib/x86_64-linux-gnu/libclang-18.so.1:
linux-vdso.so.1 (0x00007ffd05a77000)
libLLVM.so.18.1 => /lib/x86_64-linux-gnu/libLLVM.so.18.1 (0x00007f16a3212000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f16a2fac000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f16a2dc8000)
/lib64/ld-linux-x86-64.so.2 (0x00007f16aca78000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f16a2dbb000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007f16a2d81000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f16a2ca0000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007f16a15ac000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f16a158d000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f16a14cc000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f16a1497000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f16a12e5000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f16a12b6000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f16a12a1000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f16a109c000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f16a106c000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f16a105d000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f169f289000)
/usr/lib/x86_64-linux-gnu/libclang-18.so.18:
linux-vdso.so.1 (0x00007ffd2c5fa000)
libLLVM.so.18.1 => /lib/x86_64-linux-gnu/libLLVM.so.18.1 (0x00007fb4a87de000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb4a8578000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb4a8394000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb4b2044000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fb4a8387000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007fb4a834d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb4a826c000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007fb4a6b78000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb4a6b59000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fb4a6a98000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fb4a6a63000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fb4a68b1000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb4a6882000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fb4a686d000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007fb4a6668000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fb4a6638000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007fb4a6629000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007fb4a4855000)
/usr/lib/x86_64-linux-gnu/libclang-cpp.so.16:
linux-vdso.so.1 (0x00007fff675df000)
libLLVM-16.so.1 => /lib/x86_64-linux-gnu/libLLVM-16.so.1 (0x00007f6c51e73000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f6c51c0d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6c51b2e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6c5194a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6c5d189000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f6c5193d000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007f6c51901000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007f6c5020d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f6c501ee000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f6c5012d000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f6c500f8000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f6c4ff46000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6c4ff17000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f6c4ff02000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f6c4fcfd000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f6c4fccd000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f6c4fcbe000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f6c4deea000)
/usr/lib/x86_64-linux-gnu/libclang-cpp.so.17:
linux-vdso.so.1 (0x00007fff2ebf8000)
libLLVM-17.so.1 => /lib/x86_64-linux-gnu/libLLVM-17.so.1 (0x00007f94cd91c000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f94cd6b6000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f94cd5d7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f94cd3f3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f94d8c9c000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f94cd3e6000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007f94cd3aa000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007f94cbcb6000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f94cbc97000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f94cbbd6000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f94cbba1000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f94cb9ef000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f94cb9c0000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f94cb9ab000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f94cb7a6000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f94cb776000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f94cb767000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f94c9993000)
/usr/lib/x86_64-linux-gnu/libclang-cpp.so.18:
linux-vdso.so.1 (0x00007fffa12df000)
libLLVM.so.18.1 => /lib/x86_64-linux-gnu/libLLVM.so.18.1 (0x00007f117986b000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1179605000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1179526000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1179342000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1184e88000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f1179335000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007f11792f9000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007f1177c05000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1177be6000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f1177b25000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f1177af0000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f117793e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f117790f000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f11778fa000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f11776f5000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f11776c5000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f11776b6000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f11758e2000)
/usr/lib/x86_64-linux-gnu/libclang-cpp.so.18.1:
linux-vdso.so.1 (0x00007ffd69c64000)
libLLVM.so.18.1 => /lib/x86_64-linux-gnu/libLLVM.so.18.1 (0x00007f9512587000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9512321000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9512242000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f951205e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f951dba4000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f9512051000)
libedit.so.2 => /lib/x86_64-linux-gnu/libedit.so.2 (0x00007f9512015000)
libz3.so.4 => /lib/x86_64-linux-gnu/libz3.so.4 (0x00007f9510921000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9510902000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f9510841000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f951080c000)
libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f951065a000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f951062b000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f9510616000)
libicuuc.so.72 => /lib/x86_64-linux-gnu/libicuuc.so.72 (0x00007f9510411000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f95103e1000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f95103d2000)
libicudata.so.72 => /lib/x86_64-linux-gnu/libicudata.so.72 (0x00007f950e5fe000)
|
I think I found the solution:
https://stackoverflow.com/questions/39292459/how-to-request-the-greatest-version-with-find-package-in-cmake
|
Nice find, I guess you can specify this on the command line?
|
Sorry for the delay; last week got away from me.
Nice find, I guess you can specify this on the command line?
cmake -DCMAKE_FIND_PACKAGE_SORT_ORDER NATURAL
-DCMAKE_FIND_PACKAGE_SORT_DIRECTION=DEC
Yes, this produces the expected result :) Can you think of any reason[s]
against activating this behaviour by default via CMakeLists.txt? I don't
think it does anything without cmake 3.7 (released in 2018).
And maybe mention `cmake -DCMAKE_FIND_PACKAGE_SORT_ORDER NATURAL
-DCMAKE_FIND_PACKAGE_SORT_DIRECTION=ASC` (to prefer oldest version) in the
README? No idea why someone would want to, and I'm just trying to resist
bias at this point.
I guess for [mis]feature completeness a emacs user-config key could set
this, but I don't see the value because an older LLVM/Clang is most likely
to be the upstream OS-blessed version, so the user could just uninstall the
manually installed (newer) LLVM/Clang to activate the behaviour "prefer
oldest version". Conversely, a user who has had to resort to installing to
$HOME/bin/clang-$RELEASE will not have the option to uninstall the
system-provided LLVM/Clang. This user will always need to hint LLVM/Clang
for cmake.
|
I'm not super confident adding it to irony-mode CMakeLists.txt just now. Since it can be set externally, that's the approach I would recommand for now. |
Hi @Sarcasm,
I've made progress with enabling "triggers" which will allow the Debian package to reconfigure itself as system LLVM versions are installed, upgraded, uninstalled, etc. This means that Debian (and its derivatives) users will be able to once again rely on the system-managed copy of irony-mode, so they won't have to worry about maintaining a user-specific copy. Eventually the hope is that some advanced CI on more rare architectures can be deployed to check the status of multiple LLVM versions.
I confess to some burnout on this project, hence the slow progress (ie: rubber duck a problem -> needs research -> go researching -> get tired or run out of time -> months go by). Right now, this is the problem I see:
|
|--> irony-server links with libLLVM-18.so.1
|
|--> irony-server links with libLLVM-17.so.1 !
|
|--> irony-server links with libLLVM-16.so.1 !
I wasn't able to identify an obvious cause, and at this point it's better to be humble and publicly ask for a hint then to let this slide for another few months/years.
Does this look like something on the irony-mode side to you (perhaps something in CMakelists.txt?), or in the Debian side of things?
The text was updated successfully, but these errors were encountered: