From 128b83a7c6422382b68c655642618acd627ea3f2 Mon Sep 17 00:00:00 2001 From: chn Date: Tue, 20 Feb 2024 18:54:51 +0800 Subject: [PATCH] localPackages.nvhpc: allow multiple versions --- local/pkgs/default.nix | 2 +- local/pkgs/nvhpc/default.nix | 78 ++++++++++++++++++++---------------- 2 files changed, 44 insertions(+), 36 deletions(-) diff --git a/local/pkgs/default.nix b/local/pkgs/default.nix index d0b34fdf..c85556b3 100644 --- a/local/pkgs/default.nix +++ b/local/pkgs/default.nix @@ -51,5 +51,5 @@ slate = callPackage ./slate { src = topInputs.slate; }; nvhpc = callPackage ./nvhpc {}; lmod = callPackage ./lmod { src = topInputs.lmod; }; - vasp-gpu = callPackage ./vasp-gpu { inherit nvhpc lmod;}; + vasp-gpu = callPackage ./vasp-gpu { inherit lmod; nvhpc = nvhpc."24.1"; }; } diff --git a/local/pkgs/nvhpc/default.nix b/local/pkgs/nvhpc/default.nix index e26ec1ff..50da6fef 100644 --- a/local/pkgs/nvhpc/default.nix +++ b/local/pkgs/nvhpc/default.nix @@ -3,40 +3,48 @@ gcc, gfortran, autoPatchelfHook, flock, glibc, coreutils, util-linux, iconv }: -stdenvNoCC.mkDerivation rec -{ - pname = "nvhpc"; - version = "24.1"; - src = let versions = builtins.splitVersion version; in fetchurl +let + versions = { - url = "https://developer.download.nvidia.com/hpc-sdk/${version}/" - + "nvhpc_20${builtins.elemAt versions 0}_${builtins.concatStringsSep "" versions}" - + "_Linux_x86_64_cuda_multi.tar.gz"; - sha256 = "1n0x1x7ywvr3623ylvrjagayn44mbvfas3c3062p7y3asmgjx697"; + "24.1" = "1n0x1x7ywvr3623ylvrjagayn44mbvfas3c3062p7y3asmgjx697"; + "23.1" = "1xg933f4n1bw39y1x1vrjrbzpx36sbmjgvi332hfck3dbx0n982m"; }; - BuildInputs = [ gfortran gfortran.cc gcc ]; - propagatedBuildInputs = BuildInputs; - nativeBuildInputs = - [ - autoPatchelfHook flock - glibc.bin # ldconfig - coreutils # chmod - util-linux # rev - ]; - postUnpack = ''patchShebangs .''; - dontBuild = true; - dontStrip = true; - NVHPC_SILENT = "true"; - NVHPC_INSTALL_TYPE = "single"; - installPhase = - '' - export NVHPC_INSTALL_DIR=$out/share/nvhpc - ldconfig -C $NIX_BUILD_TOP/ld.so.cache - sed -i 's|/bin/chmod|chmod|g' install_components/install - sed -i 's|/sbin/ldconfig|ldconfig -C $NIX_BUILD_TOP/ld.so.cache|g' install_components/install - sed -i 's|/usr/lib/x86_64-linux-gnu|${iconv.out}/lib|g' \ - install_components/Linux_x86_64/${version}/compilers/bin/makelocalrc - ./install - ''; - autoPatchelfIgnoreMissingDeps = [ "*" ]; -} + mkNvhpc = { version, sha256 }: stdenvNoCC.mkDerivation rec + { + pname = "nvhpc"; + inherit version; + src = let versions = builtins.splitVersion version; in fetchurl + { + url = "https://developer.download.nvidia.com/hpc-sdk/${version}/" + + "nvhpc_20${builtins.elemAt versions 0}_${builtins.concatStringsSep "" versions}" + + "_Linux_x86_64_cuda_multi.tar.gz"; + inherit sha256; + }; + BuildInputs = [ gfortran gfortran.cc gcc ]; + propagatedBuildInputs = BuildInputs; + nativeBuildInputs = + [ + autoPatchelfHook flock + glibc.bin # ldconfig + coreutils # chmod + util-linux # rev + ]; + postUnpack = ''patchShebangs .''; + dontBuild = true; + dontStrip = true; + NVHPC_SILENT = "true"; + NVHPC_INSTALL_TYPE = "single"; + installPhase = + '' + export NVHPC_INSTALL_DIR=$out/share/nvhpc + ldconfig -C $NIX_BUILD_TOP/ld.so.cache + sed -i 's|/bin/chmod|chmod|g' install_components/install + sed -i 's|/sbin/ldconfig|ldconfig -C $NIX_BUILD_TOP/ld.so.cache|g' install_components/install + sed -i 's|/usr/lib/x86_64-linux-gnu|${iconv.out}/lib|g' \ + install_components/Linux_x86_64/${version}/compilers/bin/makelocalrc + ./install + ''; + autoPatchelfIgnoreMissingDeps = [ "*" ]; + }; +in + builtins.mapAttrs (version: sha256: mkNvhpc { inherit version sha256; }) versions