From 5512e18f9c72e3681669c260033b1c661b422e31 Mon Sep 17 00:00:00 2001 From: Markus Kowalewski Date: Mon, 28 Sep 2026 13:53:25 +0200 Subject: [PATCH 1/2] elpa: fix CUDA build --- pkgs/by-name/el/elpa/package.nix | 47 ++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/pkgs/by-name/el/elpa/package.nix b/pkgs/by-name/el/elpa/package.nix index 0a8e5366a971..d356b01a75de 100644 --- a/pkgs/by-name/el/elpa/package.nix +++ b/pkgs/by-name/el/elpa/package.nix @@ -5,6 +5,7 @@ autoreconfHook, mpiCheckPhaseHook, perl, + python3, mpi, blas, lapack, @@ -48,6 +49,9 @@ stdenv.mkDerivation (finalAttrs: { # Fix the test script generator substituteInPlace Makefile.am --replace '#!/bin/bash' '#!${stdenv.shell}' + '' + + lib.optionalString enableCuda '' + patchShebangs --build ./nvcc_wrap ./manual_cpp ''; outputs = [ @@ -61,7 +65,11 @@ stdenv.mkDerivation (finalAttrs: { autoreconfHook perl ] - ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ]; + ++ lib.optionals enableCuda [ + cudaPackages.cuda_nvcc + cudaPackages.libcusolver + python3 + ]; buildInputs = [ mpi @@ -74,26 +82,28 @@ stdenv.mkDerivation (finalAttrs: { cudaPackages.libcublas ]; - preConfigure = '' - export FC="mpifort" - export CC="mpicc" - export CXX="mpicxx" - export CPP="cpp" - - # These need to be set for configure to succeed - export FCFLAGS="${ - lib.optionalString stdenv.hostPlatform.isx86_64 "-msse3 " - + lib.optionalString avxSupport "-mavx " - + lib.optionalString avx2Support "-mavx2 -mfma " - + lib.optionalString avx512Support "-mavx512" - }" - - export CFLAGS=$FCFLAGS - ''; + env = + let + optFlags = + lib.optionalString stdenv.hostPlatform.isx86_64 "-msse3 " + + lib.optionalString avxSupport "-mavx " + + lib.optionalString avx2Support "-mavx2 -mfma " + + lib.optionalString avx512Support "-mavx512"; + in + { + FC = "mpifort"; + CC = "mpicc"; + CXX = "mpicxx"; + CPP = "cpp"; + FCFLAGS = optFlags; + CFLAGS = optFlags; + } + # elpa's CUDA support pulls in a custom compiler wrapper + # that does not distinguish gcc/g++ + // lib.optionalAttrs enableCuda { LDFLAGS = "-lstdc++"; }; configureFlags = [ "--with-mpi" - "--enable-openmp" "--without-threading-support-check-during-build" ] ++ lib.optional blas.isILP64 "--enable-64bit-integer-math-support" @@ -103,6 +113,7 @@ stdenv.mkDerivation (finalAttrs: { ++ lib.optional (!stdenv.hostPlatform.isx86_64) "--disable-sse" ++ lib.optional (!stdenv.hostPlatform.isx86_64) "--disable-sse-assembly" ++ lib.optional stdenv.hostPlatform.isx86_64 "--enable-sse-assembly" + ++ lib.optional (!enableCuda) "--enable-openmp" ++ lib.optionals enableCuda [ "--enable-nvidia-gpu" "--with-NVIDIA-GPU-compute-capability=${nvidiaArch}" From d4a3701004c50b0aae506a50a1d1c62f52d2a97e Mon Sep 17 00:00:00 2001 From: Markus Kowalewski Date: Mon, 28 Sep 2026 14:52:22 +0200 Subject: [PATCH 2/2] elpa: cleanup --- pkgs/by-name/el/elpa/package.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkgs/by-name/el/elpa/package.nix b/pkgs/by-name/el/elpa/package.nix index d356b01a75de..442a21b28b19 100644 --- a/pkgs/by-name/el/elpa/package.nix +++ b/pkgs/by-name/el/elpa/package.nix @@ -44,8 +44,7 @@ stdenv.mkDerivation (finalAttrs: { ]; postPatch = '' - patchShebangs ./fdep/fortran_dependencies.pl - patchShebangs ./test-driver + patchShebangs --build ./fdep/fortran_dependencies.pl # Fix the test script generator substituteInPlace Makefile.am --replace '#!/bin/bash' '#!${stdenv.shell}' @@ -125,8 +124,6 @@ stdenv.mkDerivation (finalAttrs: { nativeCheckInputs = [ mpiCheckPhaseHook ]; preCheck = '' - #patchShebangs ./ - # Reduce test problem sizes export TEST_FLAGS="1500 50 16" '';