From ac43be430a1b88141d4555fc71a9a621991bf758 Mon Sep 17 00:00:00 2001 From: Tyson Whitehead Date: Fri, 7 Oct 2016 15:38:44 -0400 Subject: [PATCH] openfoam: Initial packaging --- openfoam.nix | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 openfoam.nix diff --git a/openfoam.nix b/openfoam.nix new file mode 100644 index 0000000..d465a11 --- /dev/null +++ b/openfoam.nix @@ -0,0 +1,77 @@ +with import {}; + +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; + }; +}