Unverified Commit 9affd374 authored by markuskowa's avatar markuskowa Committed by GitHub
Browse files

Merge pull request #233842 from sheepforce/dbcsr

dbcsr: init at 2.5.0
parents 0e3c31e0 4f2313dd
Loading
Loading
Loading
Loading
+81 −0
Original line number Diff line number Diff line
{ stdenv
, lib
, fetchFromGitHub
, cmake
, pkg-config
, fypp
, gfortran
, blas
, lapack
, python3
, libxsmm
, mpi
, openssh
}:

stdenv.mkDerivation rec {
  pname = "dbcsr";
  version = "2.5.0";

  src = fetchFromGitHub {
    owner = "cp2k";
    repo = "dbcsr";
    rev = "v${version}";
    hash = "sha256-GGClK3heGE3zUM0R+u58vRdAK+xWzaqdCHaMIDerHSI=";
  };

  postPatch = ''
    patchShebangs .

    # Force build of shared library, otherwise just static.
    substituteInPlace src/CMakeLists.txt \
      --replace 'add_library(dbcsr ''${DBCSR_SRCS})' 'add_library(dbcsr SHARED ''${DBCSR_SRCS})' \
      --replace 'add_library(dbcsr_c ''${DBCSR_C_SRCS})' 'add_library(dbcsr_c SHARED ''${DBCSR_C_SRCS})'

    # Avoid calling the fypp wrapper script with python again. The nix wrapper took care of that.
    substituteInPlace cmake/fypp-sources.cmake \
      --replace 'COMMAND ''${Python_EXECUTABLE} ''${FYPP_EXECUTABLE}' 'COMMAND ''${FYPP_EXECUTABLE}'
  '';

  nativeBuildInputs = [
    gfortran
    python3
    cmake
    pkg-config
    fypp
  ];

  buildInputs = [ blas lapack libxsmm ];

  propagatedBuildInputs = [ mpi ];

  preConfigure = ''
    export PKG_CONFIG_PATH=${libxsmm}/lib
  '';

  cmakeFlags = [
    "-DUSE_OPENMP=ON"
    "-DUSE_SMM=libxsmm"
    "-DWITH_C_API=ON"
    "-DBUILD_TESTING=ON"
    "-DTEST_OMP_THREADS=2"
    "-DTEST_MPI_RANKS=2"
    "-DENABLE_SHARED=ON"
    "-DUSE_MPI=ON"
  ];

  checkInputs = [ openssh ];

  doCheck = true;
  preCheck = ''
    export HYDRA_IFACE=lo  # Fix to make mpich run in a sandbox
    export OMPI_MCA_rmaps_base_oversubscribe=1
  '';

  meta = with lib; {
    description = "Distributed Block Compressed Sparse Row matrix library";
    license = licenses.gpl2Only;
    homepage = "https://github.com/cp2k/dbcsr";
    maintainers = [ maintainers.sheepforce ];
  };
}
+20 −0
Original line number Diff line number Diff line
{ lib, stdenv, fetchFromGitHub, buildPythonApplication }:

buildPythonApplication rec {
  pname = "fypp";
  version = "3.1";

  src = fetchFromGitHub {
    owner = "aradi";
    repo = pname;
    rev = version;
    hash = "sha256-iog5Gdcd1F230Nl4JDrKoyYr8JualVgNZQzHLzd4xe8=";
  };

  meta = with lib; {
    description = "Python powered Fortran preprocessor";
    homepage = "https://github.com/aradi/fypp";
    license = licenses.gpl3Only;
    maintainers = [ maintainers.sheepforce ];
  };
}
+4 −0
Original line number Diff line number Diff line
@@ -22944,6 +22944,10 @@ with pkgs;
  toml-f = callPackage ../development/libraries/toml-f { };
  fypp = python3Packages.callPackage ../development/python-modules/fypp { };
  dbcsr = callPackage ../development/libraries/science/math/dbcsr { };
  ## libGL/libGLU/Mesa stuff
  # Default libGL implementation, should provide headers and