mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 13:28:12 -05:00
gnu: Add openfoam.
*gnu/packages/patches/openfoam-4.1-cleanup.patch: New file *gnu/packages/simulation.scm: New file *gnu/local.mk (GNU_SYSTEM_MODULES): Add module. (dist_patch_DATA): Add patch. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
66e5570037
commit
8f21aa22bf
3 changed files with 457 additions and 0 deletions
|
@ -364,6 +364,7 @@ GNU_SYSTEM_MODULES = \
|
|||
%D%/packages/shells.scm \
|
||||
%D%/packages/shellutils.scm \
|
||||
%D%/packages/simh.scm \
|
||||
%D%/packages/simulation.scm \
|
||||
%D%/packages/skarnet.scm \
|
||||
%D%/packages/skribilo.scm \
|
||||
%D%/packages/slang.scm \
|
||||
|
@ -895,6 +896,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/ola-readdir-r.patch \
|
||||
%D%/packages/patches/openscenegraph-ffmpeg3.patch \
|
||||
%D%/packages/patches/openexr-missing-samples.patch \
|
||||
%D%/packages/patches/openfoam-4.1-cleanup.patch \
|
||||
%D%/packages/patches/openjpeg-CVE-2017-12982.patch \
|
||||
%D%/packages/patches/openjpeg-CVE-2017-14040.patch \
|
||||
%D%/packages/patches/openjpeg-CVE-2017-14041.patch \
|
||||
|
|
243
gnu/packages/patches/openfoam-4.1-cleanup.patch
Normal file
243
gnu/packages/patches/openfoam-4.1-cleanup.patch
Normal file
|
@ -0,0 +1,243 @@
|
|||
# This patch removes all need for the ThirdParty files of OpenFOAM.
|
||||
|
||||
# Derived from EasyBuild patch by Ward Poelmans <wpoely86@gmail.com>.
|
||||
# Modified for GNU Guix by Paul Garlick <pgarlick@tourbillion-technology.com>.
|
||||
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/applications/utilities/mesh/manipulation/setSet/Allwmake OpenFOAM-4.x-version-4.1/applications/utilities/mesh/manipulation/setSet/Allwmake
|
||||
--- OpenFOAM-4.x-version-4.1.org/applications/utilities/mesh/manipulation/setSet/Allwmake
|
||||
+++ OpenFOAM-4.x-version-4.1/applications/utilities/mesh/manipulation/setSet/Allwmake
|
||||
@@ -9,7 +9,7 @@
|
||||
#
|
||||
# use readline if available
|
||||
#
|
||||
-if [ -f /usr/include/readline/readline.h ]
|
||||
+if true
|
||||
then
|
||||
echo "Found <readline/readline.h> -- enabling readline support."
|
||||
export COMP_FLAGS="-DHAS_READLINE"
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/etc/bashrc OpenFOAM-4.x-version-4.1/etc/bashrc
|
||||
--- OpenFOAM-4.x-version-4.1.org/etc/bashrc
|
||||
+++ OpenFOAM-4.x-version-4.1/etc/bashrc
|
||||
@@ -43,8 +43,10 @@
|
||||
# Please set to the appropriate path if the default is not correct.
|
||||
#
|
||||
[ $BASH_SOURCE ] && \
|
||||
-export FOAM_INST_DIR=$(cd ${BASH_SOURCE%/*/*/*} && pwd -P) || \
|
||||
+export FOAM_INST_DIR=$(cd $(dirname $BASH_SOURCE)/../.. && pwd -P) || \
|
||||
export FOAM_INST_DIR=$HOME/$WM_PROJECT
|
||||
+# For GNU Guix: set initially for build then re-set at runtime
|
||||
+#
|
||||
# export FOAM_INST_DIR=~$WM_PROJECT
|
||||
# export FOAM_INST_DIR=/opt/$WM_PROJECT
|
||||
# export FOAM_INST_DIR=/usr/local/$WM_PROJECT
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/etc/config.sh/CGAL OpenFOAM-4.x-version-4.1/etc/config.sh/CGAL
|
||||
--- OpenFOAM-4.x-version-4.1.org/etc/config.sh/CGAL
|
||||
+++ OpenFOAM-4.x-version-4.1/etc/config.sh/CGAL
|
||||
@@ -36,37 +36,7 @@
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
-boost_version=boost-system
|
||||
-cgal_version=cgal-system
|
||||
-#cgal_version=CGAL-4.8
|
||||
-
|
||||
-if [ -z "$SOURCE_CGAL_VERSIONS_ONLY" ]
|
||||
-then
|
||||
-
|
||||
- common_path=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER
|
||||
-
|
||||
- export BOOST_ARCH_PATH=$common_path/$boost_version
|
||||
- export CGAL_ARCH_PATH=$common_path/$cgal_version
|
||||
-
|
||||
- if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||
- then
|
||||
- echo "Using CGAL and boost" 1>&2
|
||||
- echo " $cgal_version at $CGAL_ARCH_PATH" 1>&2
|
||||
- echo " $boost_version at $BOOST_ARCH_PATH" 1>&2
|
||||
- fi
|
||||
-
|
||||
- if [ -d "$CGAL_ARCH_PATH" -a "$cgal_version" != "cgal-system" ]
|
||||
- then
|
||||
- _foamAddLib $CGAL_ARCH_PATH/lib
|
||||
- fi
|
||||
-
|
||||
- if [ -d "$BOOST_ARCH_PATH" -a "$boost_version" != "boost-system" ]
|
||||
- then
|
||||
- _foamAddLib $BOOST_ARCH_PATH/lib
|
||||
- fi
|
||||
-
|
||||
- unset boost_version cgal_version common_path
|
||||
-
|
||||
-fi
|
||||
+export CGAL_ARCH_PATH=$CGAL_ROOT
|
||||
+export BOOST_ARCH_PATH=$BOOST_ROOT
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/etc/config.sh/gperftools OpenFOAM-4.x-version-4.1/etc/config.sh/gperftools
|
||||
--- OpenFOAM-4.x-version-4.1.org/etc/config.sh/gperftools
|
||||
+++ OpenFOAM-4.x-version-4.1/etc/config.sh/gperftools
|
||||
@@ -29,13 +29,5 @@
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
-version=svn
|
||||
-gperftools_install=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER
|
||||
-
|
||||
-GPERFTOOLS_VERSION=gperftools-$version
|
||||
-GPERFTOOLS_ARCH_PATH=$gperftools_install/$GPERFTOOLS_VERSION
|
||||
-
|
||||
-export PATH=$GPERFTOOLS_ARCH_PATH/bin:$PATH
|
||||
-export LD_LIBRARY_PATH=$GPERFTOOLS_ARCH_PATH/lib:$LD_LIBRARY_PATH
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/etc/config.sh/metis OpenFOAM-4.x-version-4.1/etc/config.sh/metis
|
||||
--- OpenFOAM-4.x-version-4.1.org/etc/config.sh/metis
|
||||
+++ OpenFOAM-4.x-version-4.1/etc/config.sh/metis
|
||||
@@ -34,7 +34,7 @@
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
-export METIS_VERSION=metis-5.1.0
|
||||
-export METIS_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/$METIS_VERSION
|
||||
+export METIS_VERSION=metis-$METISVERSION
|
||||
+export METIS_ARCH_PATH=$METIS_ROOT
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/etc/config.sh/scotch OpenFOAM-4.x-version-4.1/etc/config.sh/scotch
|
||||
--- OpenFOAM-4.x-version-4.1.org/etc/config.sh/scotch
|
||||
+++ OpenFOAM-4.x-version-4.1/etc/config.sh/scotch
|
||||
@@ -37,7 +37,7 @@
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
-export SCOTCH_VERSION=scotch_6.0.3
|
||||
-export SCOTCH_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/$SCOTCH_VERSION
|
||||
+export SCOTCH_VERSION=scotch_$SCOTCHVERSION
|
||||
+export SCOTCH_ARCH_PATH=$SCOTCH_ROOT
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/etc/config.sh/settings OpenFOAM-4.x-version-4.1/etc/config.sh/settings
|
||||
--- OpenFOAM-4.x-version-4.1.org/etc/config.sh/settings
|
||||
+++ OpenFOAM-4.x-version-4.1/etc/config.sh/settings
|
||||
@@ -279,6 +279,9 @@
|
||||
;;
|
||||
system)
|
||||
# Use system compiler
|
||||
+ # Use system GMP and MPFR packages
|
||||
+ export GMP_ARCH_PATH=$GMP_ROOT
|
||||
+ export MPFR_ARCH_PATH=$MPFR_ROOT
|
||||
;;
|
||||
*)
|
||||
echo "Warn: WM_COMPILER_TYPE='$WM_COMPILER_TYPE' is unsupported" 1>&2
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/src/parallel/decompose/ptscotchDecomp/Make/options OpenFOAM-4.x-version-4.1/src/parallel/decompose/ptscotchDecomp/Make/options
|
||||
--- OpenFOAM-4.x-version-4.1.org/src/parallel/decompose/ptscotchDecomp/Make/options
|
||||
+++ OpenFOAM-4.x-version-4.1/src/parallel/decompose/ptscotchDecomp/Make/options
|
||||
@@ -5,8 +5,7 @@
|
||||
$(PFLAGS) $(PINC) \
|
||||
-I$(SCOTCH_ROOT)/include \
|
||||
-I$(SCOTCH_ARCH_PATH)/include/$(FOAM_MPI) \
|
||||
- -I/usr/include/scotch \
|
||||
-I../decompositionMethods/lnInclude
|
||||
|
||||
LIB_LIBS = \
|
||||
- -L$(SCOTCH_ROOT)/lib -L$(FOAM_EXT_LIBBIN)/$(FOAM_MPI) -lptscotch -lptscotcherrexit -lscotch ${LINK_FLAGS} -lrt
|
||||
+ -L$(SCOTCH_ROOT)/lib -L$(MPI_ARCH_PATH)/lib -lptscotch -lptscotcherrexit -lscotch ${LINK_FLAGS} -lrt
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/src/parallel/decompose/scotchDecomp/Make/options OpenFOAM-4.x-version-4.1/src/parallel/decompose/scotchDecomp/Make/options
|
||||
--- OpenFOAM-4.x-version-4.1.org/src/parallel/decompose/scotchDecomp/Make/options
|
||||
+++ OpenFOAM-4.x-version-4.1/src/parallel/decompose/scotchDecomp/Make/options
|
||||
@@ -9,8 +9,7 @@
|
||||
$(PFLAGS) $(PINC) \
|
||||
-I$(SCOTCH_ROOT)/include \
|
||||
-I$(SCOTCH_ARCH_PATH)/include \
|
||||
- -I/usr/include/scotch \
|
||||
-I../decompositionMethods/lnInclude
|
||||
|
||||
LIB_LIBS = \
|
||||
- -L$(SCOTCH_ROOT)/lib -L$(FOAM_EXT_LIBBIN) -lscotch -lscotcherrexit -lrt
|
||||
+ -L$(SCOTCH_ROOT)/lib -lscotch -lscotcherrexit -lrt
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/wmake/makefiles/general OpenFOAM-4.x-version-4.1/wmake/makefiles/general
|
||||
--- OpenFOAM-4.x-version-4.1.org/wmake/makefiles/general
|
||||
+++ OpenFOAM-4.x-version-4.1/wmake/makefiles/general
|
||||
@@ -33,7 +33,6 @@
|
||||
# The Makefile uses a POSIX shell
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
-SHELL = /bin/sh
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/wmake/wmake OpenFOAM-4.x-version-4.1/wmake/wmake
|
||||
--- OpenFOAM-4.x-version-4.1.org/wmake/wmake
|
||||
+++ OpenFOAM-4.x-version-4.1/wmake/wmake
|
||||
@@ -163,7 +163,7 @@
|
||||
then
|
||||
if [ "$WM_NCOMPPROCS" -gt 1 -a ! "$MAKEFLAGS" ]
|
||||
then
|
||||
- lockDir=$HOME/.$WM_PROJECT/.wmake
|
||||
+ lockDir=$(cd $(dirname $BASH_SOURCE)/../.. && pwd -P)/.$WM_PROJECT/.wmake
|
||||
|
||||
if [ -d $lockDir ]
|
||||
then
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/wmake/wmakeScheduler OpenFOAM-4.x-version-4.1/wmake/wmakeScheduler
|
||||
--- OpenFOAM-4.x-version-4.1.org/wmake/wmakeScheduler
|
||||
+++ OpenFOAM-4.x-version-4.1/wmake/wmakeScheduler
|
||||
@@ -53,7 +53,7 @@
|
||||
# csh sets HOST, bash sets HOSTNAME
|
||||
: ${HOST:=$HOSTNAME}
|
||||
|
||||
-lockDir=$HOME/.$WM_PROJECT/.wmake
|
||||
+lockDir=$(cd $(dirname $BASH_SOURCE)/../.. && pwd -P)/.$WM_PROJECT/.wmake
|
||||
|
||||
# Fallback - 1 core on current host
|
||||
: ${WM_HOSTS:=$HOST:1}
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/wmake/wmakeSchedulerUptime OpenFOAM-4.x-version-4.1/wmake/wmakeSchedulerUptime
|
||||
--- OpenFOAM-4.x-version-4.1.org/wmake/wmakeSchedulerUptime
|
||||
+++ OpenFOAM-4.x-version-4.1/wmake/wmakeSchedulerUptime
|
||||
@@ -53,7 +53,7 @@
|
||||
# csh sets HOST, bash sets HOSTNAME
|
||||
: ${HOST:=$HOSTNAME}
|
||||
|
||||
-lockDir=$HOME/.$WM_PROJECT/.wmake
|
||||
+lockDir=$(cd $(dirname $BASH_SOURCE)/../.. && pwd -P)/.$WM_PROJECT/.wmake
|
||||
# Fallback - 1 core on current host
|
||||
: ${WM_HOSTS:=$HOST:1}
|
||||
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/src/parallel/decompose/metisDecomp/metisDecomp.C OpenFOAM-4.x-version-4.1/src/parallel/decompose/metisDecomp/metisDecomp.C
|
||||
--- OpenFOAM-4.x-version-4.1.org/src/parallel/decompose/metisDecomp/metisDecomp.C
|
||||
+++ OpenFOAM-4.x-version-4.1/src/parallel/decompose/metisDecomp/metisDecomp.C
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
// Processor weights initialised with no size, only used if specified in
|
||||
// a file
|
||||
- Field<scalar> processorWeights;
|
||||
+ Field<floatScalar> processorWeights;
|
||||
|
||||
// Cell weights (so on the vertices of the dual)
|
||||
List<label> cellWeights;
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/wmake/rules/General/CGAL OpenFOAM-4.x-version-4.1/wmake/rules/General/CGAL
|
||||
--- OpenFOAM-4.x-version-4.1.org/wmake/rules/General/CGAL
|
||||
+++ OpenFOAM-4.x-version-4.1/wmake/rules/General/CGAL
|
||||
@@ -6,9 +6,10 @@
|
||||
-I/usr/include
|
||||
|
||||
CGAL_LIBS = \
|
||||
- -L$(MPFR_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
|
||||
- -L$(GMP_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
|
||||
+ -L$(MPFR_ARCH_PATH)/lib \
|
||||
+ -L$(GMP_ARCH_PATH)/lib \
|
||||
-L$(BOOST_ARCH_PATH)/lib \
|
||||
-L$(CGAL_ARCH_PATH)/lib \
|
||||
-lCGAL \
|
||||
+ -lgmp \
|
||||
-lmpfr
|
||||
diff -ur OpenFOAM-4.x-version-4.1.org/wmake/rules/linux64Gcc/c++ OpenFOAM-4.x-version-4.1/wmake/rules/linux64Gcc/c++
|
||||
--- OpenFOAM-4.x-version-4.1.org/wmake/rules/linux64Gcc/c++
|
||||
+++ OpenFOAM-4.x-version-4.1/wmake/rules/linux64Gcc/c++
|
||||
@@ -20,5 +20,5 @@
|
||||
|
||||
LINK_LIBS = $(c++DBUG)
|
||||
|
||||
-LINKLIBSO = $(CC) $(c++FLAGS) -shared -Xlinker --add-needed -Xlinker --no-as-needed
|
||||
-LINKEXE = $(CC) $(c++FLAGS) -Xlinker --add-needed -Xlinker --no-as-needed
|
||||
+LINKLIBSO = $(CC) $(c++FLAGS) $(LDFLAGS) -shared -Xlinker --add-needed -Xlinker --no-as-needed
|
||||
+LINKEXE = $(CC) $(c++FLAGS) $(LDFLAGS) -Xlinker --add-needed -Xlinker --no-as-needed
|
212
gnu/packages/simulation.scm
Normal file
212
gnu/packages/simulation.scm
Normal file
|
@ -0,0 +1,212 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages simulation)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages graphics)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages mpi)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (ice-9 ftw)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (srfi srfi-1))
|
||||
|
||||
(define-public openfoam
|
||||
(package
|
||||
(name "openfoam")
|
||||
(version "4.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://dl.openfoam.org/source/"
|
||||
(string-map (lambda (x) (if (eq? x #\.) #\- x)) version)))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0cgxh4h2hf50qbvvdg5miwc2nympb0nrv3md96vb3gbs9vk8vq9d"))
|
||||
(patches (search-patches "openfoam-4.1-cleanup.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("boost" ,boost)
|
||||
("cgal" ,cgal)
|
||||
("flex" ,flex)
|
||||
("git" ,git)
|
||||
("gmp" ,gmp)
|
||||
("libxt" ,libxt)
|
||||
("metis" ,metis)
|
||||
("mpfr" ,mpfr)
|
||||
("ncurses" ,ncurses)
|
||||
("readline" ,readline)
|
||||
("scotch" ,pt-scotch32)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("bison" ,bison)))
|
||||
(propagated-inputs
|
||||
`(("gzip" ,gzip)
|
||||
("gnuplot" ,gnuplot)
|
||||
("openmpi" ,openmpi)))
|
||||
(arguments
|
||||
`( ;; Executable files and shared libraries are located in the 'platforms'
|
||||
;; subdirectory.
|
||||
#:strip-directories (list (string-append
|
||||
"lib/OpenFOAM-" ,version
|
||||
"/platforms/linux64GccDPInt32Opt/bin")
|
||||
(string-append
|
||||
"lib/OpenFOAM-" ,version
|
||||
"/platforms/linux64GccDPInt32Opt/lib"))
|
||||
#:tests? #f ; no tests to run
|
||||
|
||||
#:modules ((ice-9 ftw)
|
||||
(ice-9 regex)
|
||||
(guix build gnu-build-system)
|
||||
(guix build utils))
|
||||
|
||||
#:phases (modify-phases %standard-phases
|
||||
(add-after 'unpack 'rename-build-directory
|
||||
(lambda _
|
||||
(chdir "..")
|
||||
;; Use 'OpenFOAM-version' convention to match the file
|
||||
;; name expectations in the build phase.
|
||||
(let ((unpack-dir (string-append
|
||||
(getcwd) "/"
|
||||
(list-ref (scandir (getcwd) (lambda (name)
|
||||
(string-match "^OpenFOAM" name))) 0)))
|
||||
(build-dir (string-append
|
||||
(getcwd) "/OpenFOAM-" ,version)))
|
||||
(rename-file unpack-dir build-dir) ; rename build directory
|
||||
(chdir (basename build-dir))) ; move to build directory
|
||||
#t))
|
||||
(delete 'configure) ; no configure phase
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(let ((libraries '("boost" "cgal" "gmp" "metis" "mpfr" "scotch")))
|
||||
;; set variables to define store paths
|
||||
(for-each (lambda (library)
|
||||
(setenv (string-append
|
||||
(string-upcase library) "_ROOT")
|
||||
(assoc-ref %build-inputs library))) libraries))
|
||||
;; set variables to define package versions
|
||||
(setenv "SCOTCHVERSION" ,(package-version scotch))
|
||||
(setenv "METISVERSION" ,(package-version metis))
|
||||
;; set variable to pass extra 'rpath' arguments to linker
|
||||
(setenv "LDFLAGS"
|
||||
(string-append
|
||||
"-Wl,"
|
||||
"-rpath=" %output "/lib/OpenFOAM-" ,version
|
||||
"/platforms/linux64GccDPInt32Opt/lib,"
|
||||
"-rpath=" %output "/lib/OpenFOAM-" ,version
|
||||
"/platforms/linux64GccDPInt32Opt/lib/dummy"))
|
||||
;; compile OpenFOAM libraries and applications
|
||||
(zero? (system (format #f
|
||||
"source ./etc/bashrc && ./Allwmake -j~a"
|
||||
(parallel-job-count))))))
|
||||
(add-after 'build 'update-configuration-files
|
||||
(lambda _
|
||||
;; record store paths and package versions in
|
||||
;; configuration files
|
||||
(substitute* "etc/config.sh/CGAL"
|
||||
(("$BOOST_ROOT") (getenv "BOOST_ROOT")))
|
||||
(substitute* "etc/config.sh/CGAL"
|
||||
(("$CGAL_ROOT") (getenv "CGAL_ROOT")))
|
||||
(substitute* "etc/config.sh/metis"
|
||||
(("$METIS_ROOT") (getenv "METIS_ROOT")))
|
||||
(substitute* "etc/config.sh/metis"
|
||||
(("$METISVERSION") (getenv "METISVERSION")))
|
||||
(substitute* "etc/config.sh/scotch"
|
||||
(("$SCOTCH_ROOT") (getenv "SCOTCH_ROOT")))
|
||||
(substitute* "etc/config.sh/scotch"
|
||||
(("$SCOTCHVERSION") (getenv "SCOTCHVERSION")))
|
||||
(substitute* "etc/config.sh/settings"
|
||||
(("$GMP_ROOT") (getenv "GMP_ROOT")))
|
||||
(substitute* "etc/config.sh/settings"
|
||||
(("$MPFR_ROOT") (getenv "MPFR_ROOT")))
|
||||
;; reset lockDir variable to refer to write-enabled
|
||||
;; directory
|
||||
(substitute* "wmake/wmake"
|
||||
((" lockDir=.*$")
|
||||
" lockDir=$HOME/.$WM_PROJECT/.wmake\n"))
|
||||
(substitute* "wmake/wmakeScheduler"
|
||||
(("lockDir=.*$")
|
||||
"lockDir=$HOME/.$WM_PROJECT/.wmake\n"))
|
||||
(substitute* "wmake/wmakeSchedulerUptime"
|
||||
(("lockDir=.*$")
|
||||
"lockDir=$HOME/.$WM_PROJECT/.wmake\n"))
|
||||
#t))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
;; use 'OpenFOAM-version' convention
|
||||
(let ((install-dir (string-append
|
||||
%output "/lib/OpenFOAM-" ,version)))
|
||||
(mkdir-p install-dir) ; create install directory
|
||||
;; move contents of build directory to install directory
|
||||
(copy-recursively "." install-dir))))
|
||||
(add-after 'install 'add-symbolic-link
|
||||
(lambda _
|
||||
;; add symbolic link for standard 'bin' directory
|
||||
(symlink
|
||||
(string-append "./lib/OpenFOAM-" ,version
|
||||
"/platforms/linux64GccDPInt32Opt/bin")
|
||||
(string-append %output "/bin"))
|
||||
#t)))))
|
||||
;; Note:
|
||||
;; Tutorial files are installed read-only in /gnu/store.
|
||||
;; To allow write permissions on files copied from the store a
|
||||
;; 'chmod' step is needed before running the applications. For
|
||||
;; example, from a user's login:
|
||||
;; $ source $GUIX_PROFILE/lib/OpenFOAM-4.1/etc/bashrc
|
||||
;; $ mkdir -p $FOAM_RUN
|
||||
;; $ cd $FOAM_RUN
|
||||
;; $ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzdaily .
|
||||
;; $ cd pitzdaily
|
||||
;; $ chmod -R u+w .
|
||||
;; $ blockMesh
|
||||
(synopsis "Framework for numerical simulation of fluid flow")
|
||||
(description "OpenFOAM provides a set of solvers and methods for tackling
|
||||
problems in the field of Computational Fluid Dynamics (CFD). It is written in
|
||||
C++. Governing equations such as the Navier-Stokes equations can be solved in
|
||||
integral form. Physical processes such as phase change, droplet transport and
|
||||
chemical reaction can be modelled. Numerical methods are included to deal with
|
||||
sharp gradients, such as those encountered in flows with shock waves and flows
|
||||
with gas/liquid interfaces. Large problems may be split into smaller, connected
|
||||
problems for efficient solution on parallel systems")
|
||||
(license license:gpl3+)
|
||||
(home-page "https://openfoam.org")))
|
Loading…
Reference in a new issue