-
Star
(139)
You must be signed in to star a gist -
Fork
(44)
You must be signed in to fork a gist
-
-
Save junkdog/70231d6953592cd6f27def59fe19e50d to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash | |
# --slave /usr/bin/$1 $1 /usr/bin/$1-\${version} \\ | |
function register_clang_version { | |
local version=$1 | |
local priority=$2 | |
update-alternatives \ | |
--install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-${version} ${priority} \ | |
--slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-${version} \ | |
--slave /usr/bin/llvm-as llvm-as /usr/bin/llvm-as-${version} \ | |
--slave /usr/bin/llvm-bcanalyzer llvm-bcanalyzer /usr/bin/llvm-bcanalyzer-${version} \ | |
--slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${version} \ | |
--slave /usr/bin/llvm-diff llvm-diff /usr/bin/llvm-diff-${version} \ | |
--slave /usr/bin/llvm-dis llvm-dis /usr/bin/llvm-dis-${version} \ | |
--slave /usr/bin/llvm-dwarfdump llvm-dwarfdump /usr/bin/llvm-dwarfdump-${version} \ | |
--slave /usr/bin/llvm-extract llvm-extract /usr/bin/llvm-extract-${version} \ | |
--slave /usr/bin/llvm-link llvm-link /usr/bin/llvm-link-${version} \ | |
--slave /usr/bin/llvm-mc llvm-mc /usr/bin/llvm-mc-${version} \ | |
--slave /usr/bin/llvm-mcmarkup llvm-mcmarkup /usr/bin/llvm-mcmarkup-${version} \ | |
--slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-${version} \ | |
--slave /usr/bin/llvm-objdump llvm-objdump /usr/bin/llvm-objdump-${version} \ | |
--slave /usr/bin/llvm-ranlib llvm-ranlib /usr/bin/llvm-ranlib-${version} \ | |
--slave /usr/bin/llvm-readobj llvm-readobj /usr/bin/llvm-readobj-${version} \ | |
--slave /usr/bin/llvm-rtdyld llvm-rtdyld /usr/bin/llvm-rtdyld-${version} \ | |
--slave /usr/bin/llvm-size llvm-size /usr/bin/llvm-size-${version} \ | |
--slave /usr/bin/llvm-stress llvm-stress /usr/bin/llvm-stress-${version} \ | |
--slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-${version} \ | |
--slave /usr/bin/llvm-tblgen llvm-tblgen /usr/bin/llvm-tblgen-${version} | |
update-alternatives \ | |
--install /usr/bin/clang clang /usr/bin/clang-${version} ${priority} \ | |
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${version} \ | |
--slave /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-${version} \ | |
--slave /usr/bin/c-index-test c-index-test /usr/bin/c-index-test-${version} \ | |
--slave /usr/bin/clang-check clang-check /usr/bin/clang-check-${version} \ | |
--slave /usr/bin/clang-cl clang-cl /usr/bin/clang-cl-${version} \ | |
--slave /usr/bin/clang-cpp clang-cpp /usr/bin/clang-cpp-${version} \ | |
--slave /usr/bin/clang-format clang-format /usr/bin/clang-format-${version} \ | |
--slave /usr/bin/clang-format-diff clang-format-diff /usr/bin/clang-format-diff-${version} \ | |
--slave /usr/bin/clang-import-test clang-import-test /usr/bin/clang-import-test-${version} \ | |
--slave /usr/bin/clang-include-fixer clang-include-fixer /usr/bin/clang-include-fixer-${version} \ | |
--slave /usr/bin/clang-offload-bundler clang-offload-bundler /usr/bin/clang-offload-bundler-${version} \ | |
--slave /usr/bin/clang-query clang-query /usr/bin/clang-query-${version} \ | |
--slave /usr/bin/clang-rename clang-rename /usr/bin/clang-rename-${version} \ | |
--slave /usr/bin/clang-reorder-fields clang-reorder-fields /usr/bin/clang-reorder-fields-${version} \ | |
--slave /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${version} \ | |
--slave /usr/bin/lldb lldb /usr/bin/lldb-${version} \ | |
--slave /usr/bin/lldb-server lldb-server /usr/bin/lldb-server-${version} | |
} | |
register_clang_version $1 $2 |
This is the only correct one. The others are all missing opt, llc etc. Not sure how those users got their toolchain working without it.
To be honest the original script is 5 years old, but still a great reference. I wrote my version two months ago checking the differences on a clean Ubuntu before and after installing clang-15 llvm-15.
Yeah I've had to update my script as well over the years, this is what I'm using now a days with LLVM 15.0.7.
This is on Ubuntu 22.04+ Builds Linux kernel with LTO.
#!/usr/bin/env bash
# --slave /usr/bin/$1 $1 /usr/bin/$1-\${version} \\
function register_clang_version {
local version=$1
local priority=$2
update-alternatives \
--verbose \
--install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-${version} ${priority} \
--slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-${version} \
--slave /usr/bin/llvm-as llvm-as /usr/bin/llvm-as-${version} \
--slave /usr/bin/llvm-bcanalyzer llvm-bcanalyzer /usr/bin/llvm-bcanalyzer-${version} \
--slave /usr/bin/llvm-c-test llvm-c-test /usr/bin/llvm-c-test-${version} \
--slave /usr/bin/llvm-cat llvm-cat /usr/bin/llvm-cat-${version} \
--slave /usr/bin/llvm-cfi-verify llvm-cfi-verify /usr/bin/llvm-cfi-verify-${version} \
--slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${version} \
--slave /usr/bin/llvm-cvtres llvm-cvtres /usr/bin/llvm-cvtres-${version} \
--slave /usr/bin/llvm-cxxdump llvm-cxxdump /usr/bin/llvm-cxxdump-${version} \
--slave /usr/bin/llvm-cxxfilt llvm-cxxfilt /usr/bin/llvm-cxxfilt-${version} \
--slave /usr/bin/llvm-diff llvm-diff /usr/bin/llvm-diff-${version} \
--slave /usr/bin/llvm-dis llvm-dis /usr/bin/llvm-dis-${version} \
--slave /usr/bin/llvm-dlltool llvm-dlltool /usr/bin/llvm-dlltool-${version} \
--slave /usr/bin/llvm-dwarfdump llvm-dwarfdump /usr/bin/llvm-dwarfdump-${version} \
--slave /usr/bin/llvm-dwp llvm-dwp /usr/bin/llvm-dwp-${version} \
--slave /usr/bin/llvm-exegesis llvm-exegesis /usr/bin/llvm-exegesis-${version} \
--slave /usr/bin/llvm-extract llvm-extract /usr/bin/llvm-extract-${version} \
--slave /usr/bin/llvm-lib llvm-lib /usr/bin/llvm-lib-${version} \
--slave /usr/bin/llvm-link llvm-link /usr/bin/llvm-link-${version} \
--slave /usr/bin/llvm-lto llvm-lto /usr/bin/llvm-lto-${version} \
--slave /usr/bin/llvm-lto2 llvm-lto2 /usr/bin/llvm-lto2-${version} \
--slave /usr/bin/llvm-mc llvm-mc /usr/bin/llvm-mc-${version} \
--slave /usr/bin/llvm-mca llvm-mca /usr/bin/llvm-mca-${version} \
--slave /usr/bin/llvm-modextract llvm-modextract /usr/bin/llvm-modextract-${version} \
--slave /usr/bin/llvm-mt llvm-mt /usr/bin/llvm-mt-${version} \
--slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-${version} \
--slave /usr/bin/llvm-objcopy llvm-objcopy /usr/bin/llvm-objcopy-${version} \
--slave /usr/bin/llvm-objdump llvm-objdump /usr/bin/llvm-objdump-${version} \
--slave /usr/bin/llvm-opt-report llvm-opt-report /usr/bin/llvm-opt-report-${version} \
--slave /usr/bin/llvm-pdbutil llvm-pdbutil /usr/bin/llvm-pdbutil-${version} \
--slave /usr/bin/llvm-PerfectShuffle llvm-PerfectShuffle /usr/bin/llvm-PerfectShuffle-${version} \
--slave /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-${version} \
--slave /usr/bin/llvm-ranlib llvm-ranlib /usr/bin/llvm-ranlib-${version} \
--slave /usr/bin/llvm-rc llvm-rc /usr/bin/llvm-rc-${version} \
--slave /usr/bin/llvm-readelf llvm-readelf /usr/bin/llvm-readelf-${version} \
--slave /usr/bin/llvm-readobj llvm-readobj /usr/bin/llvm-readobj-${version} \
--slave /usr/bin/llvm-rtdyld llvm-rtdyld /usr/bin/llvm-rtdyld-${version} \
--slave /usr/bin/llvm-size llvm-size /usr/bin/llvm-size-${version} \
--slave /usr/bin/llvm-split llvm-split /usr/bin/llvm-split-${version} \
--slave /usr/bin/llvm-stress llvm-stress /usr/bin/llvm-stress-${version} \
--slave /usr/bin/llvm-strings llvm-strings /usr/bin/llvm-strings-${version} \
--slave /usr/bin/llvm-strip llvm-strip /usr/bin/llvm-strip-${version} \
--slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-${version} \
--slave /usr/bin/llvm-tblgen llvm-tblgen /usr/bin/llvm-tblgen-${version} \
--slave /usr/bin/llvm-undname llvm-undname /usr/bin/llvm-undname-${version} \
--slave /usr/bin/llvm-xray llvm-xray /usr/bin/llvm-xray-${version}
update-alternatives \
--verbose \
--install /usr/bin/clang clang /usr/bin/clang-${version} ${priority} \
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${version} \
--slave /usr/bin/clang-format clang-format /usr/bin/clang-format-${version} \
--slave /usr/bin/clang-cpp clang-cpp /usr/bin/clang-cpp-${version} \
--slave /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-${version} \
--slave /usr/bin/bugpoint bugpoint /usr/bin/bugpoint-${version} \
--slave /usr/bin/dsymutil dsymutil /usr/bin/dsymutil-${version} \
--slave /usr/bin/lld lld /usr/bin/lld-${version} \
--slave /usr/bin/ld.lld ld.lld /usr/bin/ld.lld-${version} \
--slave /usr/bin/lld-link lld-link /usr/bin/lld-link-${version} \
--slave /usr/bin/llc llc /usr/bin/llc-${version} \
--slave /usr/bin/lli lli /usr/bin/lli-${version} \
--slave /usr/bin/obj2yaml obj2yaml /usr/bin/obj2yaml-${version} \
--slave /usr/bin/opt opt /usr/bin/opt-${version} \
--slave /usr/bin/sanstats sanstats /usr/bin/sanstats-${version} \
--slave /usr/bin/verify-uselistorder verify-uselistorder /usr/bin/verify-uselistorder-${version} \
--slave /usr/bin/wasm-ld wasm-ld /usr/bin/wasm-ld-${version} \
--slave /usr/bin/yaml2obj yaml2obj /usr/bin/yaml2obj-${version}
}
register_clang_version $1 $2
There are plenty llvm related tools (more than 100).
I‘ve wrote a script to glob all llvm tools instead of manually specify them , tested on Ubuntu 22.04 x86_64.
It would automatically glob all the tools in /lib/llvm-${VERSION}
as slave commands of /usr/bin/clang-{VERSION}
To use it (requires sudo permission):
wget https://raw.githubusercontent.com/ShangjinTang/dotfiles/05ef87daae29475244c276db5d406b58c52be445/linux/ubuntu/22.04/bin/update-alternatives-clang
sudo bash ./update-alternatives-clang
Result:
[Adding alternative /usr/bin/clang-17 ...]
Master command: clang-17
Slave commands: amdgpu-arch-17 analyze-build-17 bugpoint-17 c-index-test-17 clang++-17 clang-apply-replacements-17 clang-change-namespace-17 clang-check-17 clang-cl-17 clang-cpp-17 clangd-17 clang-doc-17 clang-extdef-mapping-17 clang-format-17 clang-include-cleaner-17 clang-include-fixer-17 clang-linker-wrapper-17 clang-move-17 clang-offload-bundler-17 clang-offload-packager-17 clang-pseudo-17 clang-query-17 clang-refactor-17 clang-rename-17 clang-reorder-fields-17 clang-repl-17 clang-scan-deps-17 clang-tblgen-17 clang-tidy-17 count-17 diagtool-17 dsymutil-17 FileCheck-17 find-all-symbols-17 git-clang-format-17 hmaptool-17 intercept-build-17 ld64.lld-17 ld.lld-17 llc-17 lld-17 lldb-17 lldb-argdumper-17 lldb-instr-17 lldb-server-17 lldb-vscode-17 lld-link-17 lli-17 lli-child-target-17 llvm-addr2line-17 llvm-ar-17 llvm-as-17 llvm-bcanalyzer-17 llvm-bitcode-strip-17 llvm-cat-17 llvm-cfi-verify-17 llvm-config-17 llvm-cov-17 llvm-c-test-17 llvm-cvtres-17 llvm-cxxdump-17 llvm-cxxfilt-17 llvm-cxxmap-17 llvm-debuginfo-analyzer-17 llvm-debuginfod-17 llvm-debuginfod-find-17 llvm-diff-17 llvm-dis-17 llvm-dlltool-17 llvm-dwarfdump-17 llvm-dwarfutil-17 llvm-dwp-17 llvm-exegesis-17 llvm-extract-17 llvm-gsymutil-17 llvm-ifs-17 llvm-install-name-tool-17 llvm-jitlink-17 llvm-jitlink-executor-17 llvm-lib-17 llvm-libtool-darwin-17 llvm-link-17 llvm-lipo-17 llvm-lto-17 llvm-lto2-17 llvm-mc-17 llvm-mca-17 llvm-ml-17 llvm-modextract-17 llvm-mt-17 llvm-nm-17 llvm-objcopy-17 llvm-objdump-17 llvm-omp-device-info-17 llvm-omp-kernel-replay-17 llvm-opt-report-17 llvm-otool-17 llvm-pdbutil-17 llvm-PerfectShuffle-17 llvm-profdata-17 llvm-profgen-17 llvm-ranlib-17 llvm-rc-17 llvm-readelf-17 llvm-readobj-17 llvm-reduce-17 llvm-remark-size-diff-17 llvm-remarkutil-17 llvm-rtdyld-17 llvm-sim-17 llvm-size-17 llvm-split-17 llvm-stress-17 llvm-strings-17 llvm-strip-17 llvm-symbolizer-17 llvm-tapi-diff-17 llvm-tblgen-17 llvm-tli-checker-17 llvm-undname-17 llvm-windres-17 llvm-xray-17 modularize-17 not-17 nvptx-arch-17 obj2yaml-17 opt-17 pp-trace-17 run-clang-tidy-17 sancov-17 sanstats-17 scan-build-17 scan-build-py-17 scan-view-17 split-file-17 UnicodeNameMappingGenerator-17 verify-uselistorder-17 wasm-ld-17 yaml2obj-17 yaml-bench-17
[Adding alternative /usr/bin/clang-17: succeeded]
[Adding alternative /usr/bin/clang-18 ...]
Master command: clang-18
Slave commands: amdgpu-arch-18 analyze-build-18 bugpoint-18 c-index-test-18 clang++-18 clang-apply-replacements-18 clang-change-namespace-18 clang-check-18 clang-cl-18 clang-cpp-18 clangd-18 clang-doc-18 clang-extdef-mapping-18 clang-format-18 clang-include-cleaner-18 clang-include-fixer-18 clang-linker-wrapper-18 clang-move-18 clang-offload-bundler-18 clang-offload-packager-18 clang-pseudo-18 clang-query-18 clang-refactor-18 clang-rename-18 clang-reorder-fields-18 clang-repl-18 clang-scan-deps-18 clang-tblgen-18 clang-tidy-18 count-18 diagtool-18 dsymutil-18 FileCheck-18 find-all-symbols-18 git-clang-format-18 hmaptool-18 intercept-build-18 ld64.lld-18 ld.lld-18 llc-18 lld-18 lld-link-18 lli-18 lli-child-target-18 llvm-addr2line-18 llvm-ar-18 llvm-as-18 llvm-bcanalyzer-18 llvm-bitcode-strip-18 llvm-cat-18 llvm-cfi-verify-18 llvm-config-18 llvm-cov-18 llvm-c-test-18 llvm-cvtres-18 llvm-cxxdump-18 llvm-cxxfilt-18 llvm-cxxmap-18 llvm-debuginfo-analyzer-18 llvm-debuginfod-18 llvm-debuginfod-find-18 llvm-diff-18 llvm-dis-18 llvm-dlltool-18 llvm-dwarfdump-18 llvm-dwarfutil-18 llvm-dwp-18 llvm-exegesis-18 llvm-extract-18 llvm-gsymutil-18 llvm-ifs-18 llvm-install-name-tool-18 llvm-jitlink-18 llvm-jitlink-executor-18 llvm-lib-18 llvm-libtool-darwin-18 llvm-link-18 llvm-lipo-18 llvm-lto-18 llvm-lto2-18 llvm-mc-18 llvm-mca-18 llvm-ml-18 llvm-modextract-18 llvm-mt-18 llvm-nm-18 llvm-objcopy-18 llvm-objdump-18 llvm-opt-report-18 llvm-otool-18 llvm-pdbutil-18 llvm-PerfectShuffle-18 llvm-profdata-18 llvm-profgen-18 llvm-ranlib-18 llvm-rc-18 llvm-readelf-18 llvm-readobj-18 llvm-readtapi-18 llvm-reduce-18 llvm-remarkutil-18 llvm-rtdyld-18 llvm-sim-18 llvm-size-18 llvm-split-18 llvm-stress-18 llvm-strings-18 llvm-strip-18 llvm-symbolizer-18 llvm-tblgen-18 llvm-tli-checker-18 llvm-undname-18 llvm-windres-18 llvm-xray-18 modularize-18 not-18 nvptx-arch-18 obj2yaml-18 opt-18 pp-trace-18 run-clang-tidy-18 sancov-18 sanstats-18 scan-build-18 scan-build-py-18 scan-view-18 split-file-18 UnicodeNameMappingGenerator-18 verify-uselistorder-18 wasm-ld-18 yaml2obj-18 yaml-bench-18
[Adding alternative /usr/bin/clang-18: succeeded]
======================================================================
clang alternative is set to: /usr/bin/clang-18
======================================================================
Info:
use 'sudo update-alternatives --config clang' to change default clang alternative
use 'sudo update-alternatives --remove clang /usr/bin/clang-*' to delete a clang alternative
use 'sudo update-alternatives --remove-all clang' to delete all clang alternatives
I had to add a bunch of other slaves to clang config, including clangd, clang-tidy, etc.
#!/usr/bin/env bash
# --slave /usr/bin/$1 $1 /usr/bin/$1-\${version} \\
function register_clang_version {
local version=$1
local priority=$2
update-alternatives \
--verbose \
--install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-${version} ${priority} \
--slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-${version} \
--slave /usr/bin/llvm-as llvm-as /usr/bin/llvm-as-${version} \
--slave /usr/bin/llvm-bcanalyzer llvm-bcanalyzer /usr/bin/llvm-bcanalyzer-${version} \
--slave /usr/bin/llvm-c-test llvm-c-test /usr/bin/llvm-c-test-${version} \
--slave /usr/bin/llvm-cat llvm-cat /usr/bin/llvm-cat-${version} \
--slave /usr/bin/llvm-cfi-verify llvm-cfi-verify /usr/bin/llvm-cfi-verify-${version} \
--slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${version} \
--slave /usr/bin/llvm-cvtres llvm-cvtres /usr/bin/llvm-cvtres-${version} \
--slave /usr/bin/llvm-cxxdump llvm-cxxdump /usr/bin/llvm-cxxdump-${version} \
--slave /usr/bin/llvm-cxxfilt llvm-cxxfilt /usr/bin/llvm-cxxfilt-${version} \
--slave /usr/bin/llvm-diff llvm-diff /usr/bin/llvm-diff-${version} \
--slave /usr/bin/llvm-dis llvm-dis /usr/bin/llvm-dis-${version} \
--slave /usr/bin/llvm-dlltool llvm-dlltool /usr/bin/llvm-dlltool-${version} \
--slave /usr/bin/llvm-dwarfdump llvm-dwarfdump /usr/bin/llvm-dwarfdump-${version} \
--slave /usr/bin/llvm-dwp llvm-dwp /usr/bin/llvm-dwp-${version} \
--slave /usr/bin/llvm-exegesis llvm-exegesis /usr/bin/llvm-exegesis-${version} \
--slave /usr/bin/llvm-extract llvm-extract /usr/bin/llvm-extract-${version} \
--slave /usr/bin/llvm-lib llvm-lib /usr/bin/llvm-lib-${version} \
--slave /usr/bin/llvm-link llvm-link /usr/bin/llvm-link-${version} \
--slave /usr/bin/llvm-lto llvm-lto /usr/bin/llvm-lto-${version} \
--slave /usr/bin/llvm-lto2 llvm-lto2 /usr/bin/llvm-lto2-${version} \
--slave /usr/bin/llvm-mc llvm-mc /usr/bin/llvm-mc-${version} \
--slave /usr/bin/llvm-mca llvm-mca /usr/bin/llvm-mca-${version} \
--slave /usr/bin/llvm-modextract llvm-modextract /usr/bin/llvm-modextract-${version} \
--slave /usr/bin/llvm-mt llvm-mt /usr/bin/llvm-mt-${version} \
--slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-${version} \
--slave /usr/bin/llvm-objcopy llvm-objcopy /usr/bin/llvm-objcopy-${version} \
--slave /usr/bin/llvm-objdump llvm-objdump /usr/bin/llvm-objdump-${version} \
--slave /usr/bin/llvm-opt-report llvm-opt-report /usr/bin/llvm-opt-report-${version} \
--slave /usr/bin/llvm-pdbutil llvm-pdbutil /usr/bin/llvm-pdbutil-${version} \
--slave /usr/bin/llvm-PerfectShuffle llvm-PerfectShuffle /usr/bin/llvm-PerfectShuffle-${version} \
--slave /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-${version} \
--slave /usr/bin/llvm-ranlib llvm-ranlib /usr/bin/llvm-ranlib-${version} \
--slave /usr/bin/llvm-rc llvm-rc /usr/bin/llvm-rc-${version} \
--slave /usr/bin/llvm-readelf llvm-readelf /usr/bin/llvm-readelf-${version} \
--slave /usr/bin/llvm-readobj llvm-readobj /usr/bin/llvm-readobj-${version} \
--slave /usr/bin/llvm-rtdyld llvm-rtdyld /usr/bin/llvm-rtdyld-${version} \
--slave /usr/bin/llvm-size llvm-size /usr/bin/llvm-size-${version} \
--slave /usr/bin/llvm-split llvm-split /usr/bin/llvm-split-${version} \
--slave /usr/bin/llvm-stress llvm-stress /usr/bin/llvm-stress-${version} \
--slave /usr/bin/llvm-strings llvm-strings /usr/bin/llvm-strings-${version} \
--slave /usr/bin/llvm-strip llvm-strip /usr/bin/llvm-strip-${version} \
--slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-${version} \
--slave /usr/bin/llvm-tblgen llvm-tblgen /usr/bin/llvm-tblgen-${version} \
--slave /usr/bin/llvm-undname llvm-undname /usr/bin/llvm-undname-${version} \
--slave /usr/bin/llvm-xray llvm-xray /usr/bin/llvm-xray-${version}
update-alternatives \
--verbose \
--install /usr/bin/clang clang /usr/bin/clang-${version} ${priority} \
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${version} \
--slave /usr/bin/clang-format clang-format /usr/bin/clang-format-${version} \
--slave /usr/bin/clang-cpp clang-cpp /usr/bin/clang-cpp-${version} \
--slave /usr/bin/clang-cl clang-cl /usr/bin/clang-cl-${version} \
--slave /usr/bin/clangd clangd /usr/bin/clangd-${version} \
--slave /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${version} \
--slave /usr/bin/clang-check clang-check /usr/bin/clang-check-${version} \
--slave /usr/bin/clang-query clang-query /usr/bin/clang-query-${version} \
--slave /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-${version} \
--slave /usr/bin/bugpoint bugpoint /usr/bin/bugpoint-${version} \
--slave /usr/bin/dsymutil dsymutil /usr/bin/dsymutil-${version} \
--slave /usr/bin/lld lld /usr/bin/lld-${version} \
--slave /usr/bin/ld.lld ld.lld /usr/bin/ld.lld-${version} \
--slave /usr/bin/lld-link lld-link /usr/bin/lld-link-${version} \
--slave /usr/bin/llc llc /usr/bin/llc-${version} \
--slave /usr/bin/lli lli /usr/bin/lli-${version} \
--slave /usr/bin/obj2yaml obj2yaml /usr/bin/obj2yaml-${version} \
--slave /usr/bin/opt opt /usr/bin/opt-${version} \
--slave /usr/bin/sanstats sanstats /usr/bin/sanstats-${version} \
--slave /usr/bin/verify-uselistorder verify-uselistorder /usr/bin/verify-uselistorder-${version} \
--slave /usr/bin/wasm-ld wasm-ld /usr/bin/wasm-ld-${version} \
--slave /usr/bin/yaml2obj yaml2obj /usr/bin/yaml2obj-${version}
}
register_clang_version $1 $2
Thanks @ppigazzini. Your script at https://gist.github.com/junkdog/70231d6953592cd6f27def59fe19e50d?permalink_comment_id=4336074#gistcomment-4336074 seems to work out-of-the-box on Debian 12, too.