< Project:LLVM

Project:LLVM/LLVM slotting

Starting with 4.0.0, the LLVM packages are once more slotted. This means it is now possible to have multiple versions of LLVM/clang installed simultaneously.

Why slot?

Slotting serves three goals:

  1. Making it possible to upgrade split clang package without intermediate breakage. In particular, when upgrading from clang-X to clang-Y, the package manager must not uninstall llvm-X before clang-Y is installed.
  2. Making it possible to use multiple versions of clang simultaneously, e.g. to test your programs against multiple versions of the compiler.
  3. Making it possible to at least partially upgrade to a newer version of LLVM before all software supports it. Previously, a single package not supporting a newer LLVM version prevented the system from upgrading to a newer one.

Which packages are slotted?

There are degrees of slotting applied to various LLVM packages:

  • packages that are not slotted -- only one version can be installed,
  • packages that are slotted by major version -- one release of every major version can be installed (i.e. LLVM x),
  • packages that are slotted by full version -- one revision of every full version can be installed (i.e. LLVM x.y.z).

The use of slotting is summarized in the table following.

Package Slotting Dep type Required LLVM version Notes
Toolchain packages
sys-devel/llvmby major--
sys-devel/clangby majorrevdep of LLVMexact match
dev-util/lldbnorevdep of LLVM+clangexact match
sys-devel/lldnorevdep of LLVMexact match
Auxiliary packages
dev-ml/llvm-ocamlnorevdep of LLVMexact match
dev-python/clang-pythonnorevdep of clangany?dlopen()s clang libraries without SONAME, probably dangerous
dev-python/litnodep of most pkgsexact matchrequired for tests only, can cause conflict when trying to install multiple LLVM versions simultaneously
sys-devel/clang-commonnodep of clangany
sys-devel/llvm-commonnodep of LLVMany
sys-devel/llvmgoldnocirc pdep of LLVManyjust a symlink to the newest version for binutils' ar & nm
Runtime packages
sys-devel/clang-runtimeby fullverpdep of LLVMexact match
sys-libs/compiler-rtby fullverdep of clang-runtimeexact matchstrictly speaking, does not require exact match to clang version but needs to be installed in path containing fullver
sys-libs/compiler-rt-sanitizers
sys-libs/libcxxnodep of clang-runtimeany
sys-libs/libcxxabinodep of clang-runtimeany
sys-libs/libompnodep of clang-runtimeany
sys-libs/llvm-libunwindnodep of clang-runtimeany
This article is issued from Gentoo. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.