Open simonLeary42 opened 1 month ago
The "canonical" LLVM version is the one present in the src/llvm-project
submodule that's used for (see the git-commit-hash
file for the rustc hash to find that), or, more easily accessible, the one output by rustc -vV
(which is LLVM 15.0.0 for 1.65.0) (the distributed LLVM in the tarball will be exactly the one from the submodule) (I don't know if spack wants to build the in-tree rustc LLVM version or whether it prefers taking its own global LLVM if that exists, I don't know how spack works). But we generally support up to 1 version back. So on master right now, rustc supports being compiled against LLVM 17 and LLVM 18 (see #122649 for the last bump).
As for the documented cmake version, yeah, those are not gonna be accurate. Feel free to PR fixes removing it from the dev guide and updating it in INSTALL.md
.
I'm trying to build rust with the Spack package manager, but it seems that Spack's recipe is out of date. It says that the minimum Cmake version required is 3.13.4, but then the build fails because actually version 3.20.0 is required.
INSTALL.md
says that it's 3.13.4, but the rustc-dev-guide says that the minimum version is 3.4.3.I'm not very familiar with the rust bootstrap process. Spack downloads a
rustc
binary with a url similar tohttps://static.rust-lang.org/dist/rust-1.65.0-aarch64-apple-darwin.tar.gz
, and then it runsx.py
.It seems that this Cmake requirement actually comes from LLVM. To fix the Spack recipe, I want to find out exactly which versions of rust require which versions of LLVM. I'm not sure when exactly LLVM is required at all, and I'm not sure if different LLVM versions are used depending on architecture/OS/ bootstrap toolchain. After quickly searching the source code, I wasn't able to find a very official looking definition of the LLVM version. I was able to find something in src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh, but just based on the file name I can't be so sure that the version number is used everywhere, or if it's even relevant to my Spack recipe.
Can someone point me to the location of the "canonical" LLVM version? From there I can use git blame to find which commit sets which version number, and github can tell me which release versions have which commits.