From e81346b2fd65ea86bc8260e72ff453d87260964f Mon Sep 17 00:00:00 2001 From: Wolfgang Walther Date: Sun, 20 Jul 2025 13:55:08 +0200 Subject: [PATCH] {clang,gcc}_multi: remove manual throws This avoids hacky workarounds in CI when generating attrpaths for non-x86_64-linux platforms. Evaluation for these two attributes will not succeed on platforms other than Linux anyway, because: - The unsupported system error from `glibc-nolibgcc` is propagated. - `pkgsi686Linux.gcc` triggers an assert anyway. (cherry picked from commit 63e69e434e9fccff69667d71d66abbfe7cdaba27) --- pkgs/top-level/all-packages.nix | 58 +++++++++++++++------------------ 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3c27a643d53e0..98497d95fac26 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5164,42 +5164,36 @@ with pkgs; wrapCCMulti = cc: - if stdenv.targetPlatform.system == "x86_64-linux" then - let - # Binutils with glibc multi - bintools = cc.bintools.override { - libc = glibc_multi; - }; - in - lowPrio (wrapCCWith { - cc = cc.cc.override { - stdenv = overrideCC stdenv (wrapCCWith { - cc = cc.cc; - inherit bintools; - libc = glibc_multi; - }); - profiledCompiler = false; - enableMultilib = true; - }; + let + # Binutils with glibc multi + bintools = cc.bintools.override { libc = glibc_multi; - inherit bintools; - extraBuildCommands = '' - echo "dontMoveLib64=1" >> $out/nix-support/setup-hook - ''; - }) - else - throw "Multilib ${cc.name} not supported for ‘${stdenv.targetPlatform.system}’"; + }; + in + lowPrio (wrapCCWith { + cc = cc.cc.override { + stdenv = overrideCC stdenv (wrapCCWith { + cc = cc.cc; + inherit bintools; + libc = glibc_multi; + }); + profiledCompiler = false; + enableMultilib = true; + }; + libc = glibc_multi; + inherit bintools; + extraBuildCommands = '' + echo "dontMoveLib64=1" >> $out/nix-support/setup-hook + ''; + }); wrapClangMulti = clang: - if stdenv.targetPlatform.system == "x86_64-linux" then - callPackage ../development/compilers/llvm/multi.nix { - inherit clang; - gcc32 = pkgsi686Linux.gcc; - gcc64 = pkgs.gcc; - } - else - throw "Multilib ${clang.cc.name} not supported for '${stdenv.targetPlatform.system}'"; + callPackage ../development/compilers/llvm/multi.nix { + inherit clang; + gcc32 = pkgsi686Linux.gcc; + gcc64 = pkgs.gcc; + }; gcc_multi = wrapCCMulti gcc; clang_multi = wrapClangMulti clang;