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