rocmPackages.llvm: use same LLVM version for bootstrap and override

mixing and matching these doesn't work because LLVM bitcode isn't backwards compatible
When default llvmPackages moved to llvmPackages_21 rocm-device-libraries started
to fail with errors like
Not a constant range list attribute (Producer: 'LLVM21.1.1' Reader: 'LLVM 19.0.0')
This commit is contained in:
Luna Nova
2025-09-17 20:58:56 -07:00
parent 62082a4eff
commit 4cdc231898
@@ -1,10 +1,8 @@
{
lib,
stdenv,
# default LLVM version is used as stdenv to build our toolchain
llvmPackages,
# LLVM version closest to ROCm fork to override
llvmPackages_20,
llvmPackages_19,
overrideCC,
rocm-device-libs,
fetchFromGitHub,
@@ -39,11 +37,10 @@ let
version = "6.4.3";
# major version of this should be the clang version ROCm forked from
rocmLlvmVersion = "19.0.0-rocm";
# llvmPackages_base version should be close to rocmLlvmVersion,
# may be one off because AMD backports a lot and the +1 patches
# may be easier to get to build
llvmPackages_base = llvmPackages_20;
llvmPackagesNoBintools = llvmPackages.override {
# llvmPackages_base version should match rocmLlvmVersion
# so libllvm's bitcode is compatible with the built toolchain
llvmPackages_base = llvmPackages_19;
llvmPackagesNoBintools = llvmPackages_base.override {
bootBintools = null;
bootBintoolsNoLibc = null;
};
@@ -55,7 +52,7 @@ let
# oddly fuse-ld=lld fails without this override
overrideCC llvmPackagesNoBintools.stdenv (
llvmPackagesNoBintools.libstdcxxClang.override {
inherit (llvmPackages) bintools;
inherit (llvmPackages_base) bintools;
}
);
@@ -131,7 +128,6 @@ let
};
llvmMajorVersion = lib.versions.major rocmLlvmVersion;
# An llvmPackages (pkgs/development/compilers/llvm/) built from ROCm LLVM's source tree
# optionally using LLVM libcxx
llvmPackagesRocm = llvmPackages_base.override (_old: {
stdenv = stdenvToBuildRocmLlvm;
@@ -139,6 +135,7 @@ let
# ROCm LLVM is closer to 20 official
# gitRelease = {}; officialRelease = null;
officialRelease = { }; # Set but empty because we're overriding everything from it.
# this version determines which patches are applied
version = rocmLlvmVersion;
src = llvmSrc;
monorepoSrc = llvmSrc;