From 9745611ed6464998f56b6fb25fdf7216b29a38c2 Mon Sep 17 00:00:00 2001 From: Chris Ostrouchov Date: Wed, 8 Aug 2018 00:40:23 -0400 Subject: lammps: 16Feb16 -> patch_2Aug2018 Major changes and update to lammps build - using fetchFromGitHub to get source instead of lammps mirror - configurable lammps packages included and includes for compilation - cleaner build script - preserving the executable, shared library names, and include headers --- .../science/molecular-dynamics/lammps/default.nix | 45 +++++++++++++++------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'pkgs/applications/science') diff --git a/pkgs/applications/science/molecular-dynamics/lammps/default.nix b/pkgs/applications/science/molecular-dynamics/lammps/default.nix index 9a89b88d7a52..03e37ad9d935 100644 --- a/pkgs/applications/science/molecular-dynamics/lammps/default.nix +++ b/pkgs/applications/science/molecular-dynamics/lammps/default.nix @@ -1,25 +1,37 @@ -{ stdenv, writeText, fetchurl, - libpng, fftw, - mpiSupport ? false, mpi ? null +{ lib +, bash +, stdenv +, writeText +, fetchFromGitHub +, libpng +, gzip +, fftw +, openblas +, mpiSupport ? false, mpi ? null }: assert mpiSupport -> mpi != null; stdenv.mkDerivation rec { # LAMMPS has weird versioning converted to ISO 8601 format - version = "2016-02-16"; + version = "patch_2Aug2018"; name = "lammps-${version}"; - src = fetchurl { - url = "mirror://sourceforge/lammps/lammps-16Feb16.tar.gz"; - sha256 = "1yzfbkxma3xa1288rnn66h4w0smbmjkwq1fx1y60pjiw0prmk105"; + lammps_packages = "asphere body class2 colloid compress coreshell dipole granular kspace manybody mc misc molecule opt peri qeq replica rigid shock snap srd user-reaxc"; + lammps_includes = "-DLAMMPS_EXCEPTIONS -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64"; + + src = fetchFromGitHub { + owner = "lammps"; + repo = "lammps"; + rev = "${version}"; + sha256 = "1ph9pr7s11wgmspmnhxa55bh1pq2cyl8iimfi62lbpbpl9pr1ilc"; }; passthru = { inherit mpi; }; - buildInputs = [ fftw libpng ] + buildInputs = [ fftw libpng openblas gzip bash ] ++ (stdenv.lib.optionals mpiSupport [ mpi ]); # Must do manual build due to LAMMPS requiring a seperate build for @@ -27,13 +39,19 @@ stdenv.mkDerivation rec { builder = writeText "builder.sh" '' source $stdenv/setup - tar xzf $src - cd lammps-*/src - make mode=exe ${if mpiSupport then "mpi" else "serial"} SHELL=$SHELL LMP_INC="-DLAMMPS_GZIP -DLAMMPS_PNG" FFT_PATH=-DFFT_FFTW3 FFT_LIB=-lfftw3 JPG_LIB=-lpng - make mode=shlib ${if mpiSupport then "mpi" else "serial"} SHELL=$SHELL LMP_INC="-DLAMMPS_GZIP -DLAMMPS_PNG" FFT_PATH=-DFFT_FFTW3 FFT_LIB=-lfftw3 JPG_LIB=-lpng + mkdir lammps + cp -r $src/lib $src/src lammps + chmod -R 755 lammps/src/ + cd lammps/src + for pack in ${lammps_packages}; do make "yes-$pack" SHELL=$SHELL; done + make mode=exe ${if mpiSupport then "mpi" else "serial"} SHELL=$SHELL LMP_INC="${lammps_includes}" FFT_PATH=-DFFT_FFTW3 FFT_LIB=-lfftw3 JPG_LIB=-lpng + make mode=shlib ${if mpiSupport then "mpi" else "serial"} SHELL=$SHELL LMP_INC="${lammps_includes}" FFT_PATH=-DFFT_FFTW3 FFT_LIB=-lfftw3 JPG_LIB=-lpng mkdir -p $out/bin - cp -v lmp_* $out/bin/lammps + cp -v lmp_* $out/bin/ + + mkdir -p $out/include + cp -v *.h $out/include/ mkdir -p $out/lib cp -v liblammps* $out/lib/ @@ -51,5 +69,6 @@ stdenv.mkDerivation rec { homepage = http://lammps.sandia.gov; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.linux; + maintainers = with lib.maintainers; [ costrouc ]; }; } -- cgit 1.4.1 From 26d5d030fe498b64a307af35ff96ff215ccd967a Mon Sep 17 00:00:00 2001 From: Timo Kaufmann Date: Fri, 17 Aug 2018 14:49:52 +0200 Subject: openblas: add pkg-config aliases --- pkgs/applications/science/math/sage/default.nix | 10 +++------- pkgs/applications/science/math/sage/openblas-pc.nix | 17 ----------------- pkgs/applications/science/math/sage/sage-env.nix | 6 +++--- pkgs/applications/science/math/sage/sage-with-env.nix | 6 ------ pkgs/applications/science/math/sage/sagelib.nix | 7 +------ .../libraries/science/math/openblas/default.nix | 14 ++++++++++++++ 6 files changed, 21 insertions(+), 39 deletions(-) delete mode 100644 pkgs/applications/science/math/sage/openblas-pc.nix (limited to 'pkgs/applications/science') diff --git a/pkgs/applications/science/math/sage/default.nix b/pkgs/applications/science/math/sage/default.nix index 7e62f0cf75ee..08e3a752b8b6 100644 --- a/pkgs/applications/science/math/sage/default.nix +++ b/pkgs/applications/science/math/sage/default.nix @@ -21,7 +21,7 @@ let sagelib = self.callPackage ./sagelib.nix { inherit flint ecl arb; - inherit sage-src openblas-blas-pc openblas-cblas-pc openblas-lapack-pc pynac singular; + inherit sage-src pynac singular; linbox = nixpkgs.linbox.override { withSage = true; }; }; @@ -41,13 +41,13 @@ let }; sage-env = self.callPackage ./sage-env.nix { - inherit sage-src python rWrapper openblas-cblas-pc ecl singular palp flint pynac pythonEnv; + inherit sage-src python rWrapper ecl singular palp flint pynac pythonEnv; pkg-config = nixpkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig }; sage-with-env = self.callPackage ./sage-with-env.nix { inherit pythonEnv; - inherit sage-src openblas-blas-pc openblas-cblas-pc openblas-lapack-pc pynac singular; + inherit sage-src pynac singular; pkg-config = nixpkgs.pkgconfig; # not to confuse with pythonPackages.pkgconfig three = nodePackages_8_x.three; }; @@ -60,10 +60,6 @@ let }; }; - openblas-blas-pc = callPackage ./openblas-pc.nix { name = "blas"; }; - openblas-cblas-pc = callPackage ./openblas-pc.nix { name = "cblas"; }; - openblas-lapack-pc = callPackage ./openblas-pc.nix { name = "lapack"; }; - sage-src = callPackage ./sage-src.nix {}; pythonRuntimeDeps = with python.pkgs; [ diff --git a/pkgs/applications/science/math/sage/openblas-pc.nix b/pkgs/applications/science/math/sage/openblas-pc.nix deleted file mode 100644 index f4669a6557e9..000000000000 --- a/pkgs/applications/science/math/sage/openblas-pc.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ openblasCompat -, writeTextFile -, name -}: - -writeTextFile { - name = "openblas-${name}-pc-${openblasCompat.version}"; - destination = "/lib/pkgconfig/${name}.pc"; - text = '' - Name: ${name} - Version: ${openblasCompat.version} - - Description: ${name} for SageMath, provided by the OpenBLAS package. - Cflags: -I${openblasCompat}/include - Libs: -L${openblasCompat}/lib -lopenblas - ''; -} diff --git a/pkgs/applications/science/math/sage/sage-env.nix b/pkgs/applications/science/math/sage/sage-env.nix index 317eb6e16c49..74c2e0aa0360 100644 --- a/pkgs/applications/science/math/sage/sage-env.nix +++ b/pkgs/applications/science/math/sage/sage-env.nix @@ -37,7 +37,7 @@ , lcalc , rubiks , flintqs -, openblas-cblas-pc +, openblasCompat , flint , gmp , mpfr @@ -98,9 +98,9 @@ writeTextFile rec { export PKG_CONFIG_PATH='${lib.concatStringsSep ":" (map (pkg: "${pkg}/lib/pkgconfig") [ # This is only needed in the src/sage/misc/cython.py test and I'm not sure if there's really a use-case # for it outside of the tests. However since singular and openblas are runtime dependencies anyways - # and openblas-cblas-pc is tiny, it doesn't really hurt to include. + # it doesn't really hurt to include. singular - openblas-cblas-pc + openblasCompat ]) }' export SAGE_ROOT='${sage-src}' diff --git a/pkgs/applications/science/math/sage/sage-with-env.nix b/pkgs/applications/science/math/sage/sage-with-env.nix index 63b9772b8231..8ccf8b5a4938 100644 --- a/pkgs/applications/science/math/sage/sage-with-env.nix +++ b/pkgs/applications/science/math/sage/sage-with-env.nix @@ -4,9 +4,6 @@ , sage-env , sage-src , openblasCompat -, openblas-blas-pc -, openblas-cblas-pc -, openblas-lapack-pc , pkg-config , three , singular @@ -32,9 +29,6 @@ let makeWrapper pkg-config openblasCompat # lots of segfaults with regular (64 bit) openblas - openblas-blas-pc - openblas-cblas-pc - openblas-lapack-pc singular three pynac diff --git a/pkgs/applications/science/math/sage/sagelib.nix b/pkgs/applications/science/math/sage/sagelib.nix index abcefba5e260..c1dbcf38304e 100644 --- a/pkgs/applications/science/math/sage/sagelib.nix +++ b/pkgs/applications/science/math/sage/sagelib.nix @@ -3,9 +3,6 @@ , buildPythonPackage , arb , openblasCompat -, openblas-blas-pc -, openblas-cblas-pc -, openblas-lapack-pc , brial , cliquer , cypari2 @@ -59,9 +56,7 @@ buildPythonPackage rec { nativeBuildInputs = [ iml perl - openblas-blas-pc - openblas-cblas-pc - openblas-lapack-pc + openblasCompat jupyter_core ]; diff --git a/pkgs/development/libraries/science/math/openblas/default.nix b/pkgs/development/libraries/science/math/openblas/default.nix index e00a5ca9f8d9..ced200f905c9 100644 --- a/pkgs/development/libraries/science/math/openblas/default.nix +++ b/pkgs/development/libraries/science/math/openblas/default.nix @@ -136,6 +136,20 @@ stdenv.mkDerivation rec { doCheck = true; checkTarget = "tests"; + postInstall = '' + # Write pkgconfig aliases. Upstream report: + # https://github.com/xianyi/OpenBLAS/issues/1740 + for alias in blas cblas lapack; do + cat < $out/lib/pkgconfig/openblas-$alias.pc +Name: $alias +Version: ${version} +Description: $alias provided by the OpenBLAS package. +Cflags: -I$out/include +Libs: -L$out/lib -lopenblas +EOF + done + ''; + meta = with stdenv.lib; { description = "Basic Linear Algebra Subprograms"; license = licenses.bsd3; -- cgit 1.4.1