openfoam: Initial packaging

This commit is contained in:
Tyson Whitehead
2016-10-07 15:38:44 -04:00
parent 49e7640246
commit ac43be430a

77
openfoam.nix Normal file
View File

@@ -0,0 +1,77 @@
with import <nixpkgs> {};
stdenv.mkDerivation rec {
version = "4.0";
name = "openfoam-${version}";
src = fetchurl {
url = "https://github.com/OpenFOAM/OpenFOAM-4.x/archive/version-${version}.tar.gz";
sha256 = "0mslymq1szprzlp18j92zl30zfz9bj9r4psxa6ys99qw0ff85vx8";
};
# a lot of assumptions about being under a directory named OpenFOAM-${version}
postUnpack = ''
echo "resettting sourceRoot to ''${sourceRoot/-4.x-version/}"
mv "$sourceRoot" "''${sourceRoot/-4.x-version/}"
sourceRoot="''${sourceRoot/-4.x-version/}"
'';
# one of the following would bake in the rpath, but sourcing etc/bashrc file updates LD_LIBRARY_PATH
# NIX_LDFLAGS="-rpath $out/platform/$WM_OPTIONS/lib $NIX_LDFLAGS"
# NIX_LDFLAGS="${NIX_LDFLAGS/"$out/lib$WM_ARCH_OPTION"/"$out/platform/$WM_OPTIONS/lib"}"
configurePhase = ''
sed -ie 's|FOAM_INST_DIR=$HOME/$WM_PROJECT.*|FOAM_INST_DIR='"$out"/lib/OpenFOAM-${version}'|' etc/bashrc
sed -ie 's|BOOST_ARCH_PATH=.*$|BOOST_ARCH_PATH=${boost}|' etc/config.sh/CGAL
sed -ie 's|CGAL_ARCH_PATH=.*$|CGAL_ARCH_PATH=${cgal}|' etc/config.sh/CGAL
sed -ie 's|METIS_ARCH_PATH=.*$|METIS_ARCH_PATH=${metis}|' etc/config.sh/metis
sed -ie 's|SCOTCH_ARCH_PATH=.*$|SCOTCH_ARCH_PATH=${scotch}|' etc/config.sh/scotch
source "$PWD/etc/bashrc"
'';
buildPhase = ''
export WM_NCOMPPROCS="''${NIX_BUILD_CORES}"
./Allwmake
'';
# stick etc, bin, applications, and platforms under lib/OpenFOAM-${version}
# fill bin proper up with wrappers to everything in platform/$WM_OPTIONS/bin that source etc/bashrc
installPhase = ''
echo "copying etc, bin, applications, and platforms directories to $out/lib/OpenFOAM-${version}"
mkdir -p "$out/lib/OpenFOAM-${version}"
cp -at "$out/lib/OpenFOAM-${version}" etc bin applications platforms
echo "creating a bin of wrapped binaries from $out/lib/OpenFOAM-${version}/platforms/$WM_OPTIONS/bin"
for program in "$out/lib/OpenFOAM-${version}/platforms/$WM_OPTIONS/bin/"*; do
makeWrapper "$program" "$out/bin/''${program##*/}" \
--run "source \"$out/lib/OpenFOAM-${version}/etc/bashrc\""
done
'';
buildInputs = [
makeWrapper
flex
bison
zlib
boost
openmpi
# gnuplot
readline
# ncurses
gperftools
cgal
metis
scotch
mpfr
# xorg.libXt
# paraview
# cmake
# qt4
# freeglut
];
meta = with stdenv.lib; {
homepage = http://www.openfoam.com;
description = "Free open-source CFD software";
platforms = platforms.linux;
license = licenses.gpl3;
};
}