Package: guix-patches;
Reported by: Paul Garlick <pgarlick <at> tourbillion-technology.com>
Date: Fri, 11 Aug 2017 11:08:01 UTC
Severity: normal
Tags: moreinfo, patch
Done: ludo <at> gnu.org (Ludovic Courtès)
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: ludo <at> gnu.org (Ludovic Courtès) Cc: tracker <at> debbugs.gnu.org Subject: bug#28045: closed ([PATCH] gnu: Add openfoam) Date: Fri, 15 Sep 2017 16:36:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Fri, 15 Sep 2017 18:35:29 +0200 with message-id <8760cjudgu.fsf <at> gnu.org> and subject line Re: [PATCH] gnu: Add openfoam has caused the debbugs.gnu.org bug report #28045, regarding [PATCH] gnu: Add openfoam to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 28045: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=28045 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Paul Garlick <pgarlick <at> tourbillion-technology.com> To: guix-patches <at> gnu.org Cc: Paul Garlick <pgarlick <at> tourbillion-technology.com> Subject: [PATCH] gnu: Add openfoam Date: Fri, 11 Aug 2017 12:06:36 +0100* gnu/packages/simulation.scm: New file * gnu/packages/patches/openfoam-cleanup.patch: New file * gnu/local.mk(GNU_SYSTEM_MODULES): Add module (dist_patch_DATA): Add patch --- gnu/local.mk | 2 + gnu/packages/patches/openfoam-cleanup.patch | 251 ++++++++++++++++++++++++++++ gnu/packages/simulation.scm | 197 ++++++++++++++++++++++ 3 files changed, 450 insertions(+) create mode 100644 gnu/packages/patches/openfoam-cleanup.patch create mode 100644 gnu/packages/simulation.scm diff --git a/gnu/local.mk b/gnu/local.mk index 4b2bdfe37..b00ec1ac7 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -357,6 +357,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 \ @@ -866,6 +867,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-cleanup.patch \ %D%/packages/patches/openjpeg-CVE-2016-9850-CVE-2016-9851.patch \ %D%/packages/patches/openjpeg-CVE-2016-9572-CVE-2016-9573.patch \ %D%/packages/patches/openldap-CVE-2017-9287.patch \ diff --git a/gnu/packages/patches/openfoam-cleanup.patch b/gnu/packages/patches/openfoam-cleanup.patch new file mode 100644 index 000000000..b2c0ddcd1 --- /dev/null +++ b/gnu/packages/patches/openfoam-cleanup.patch @@ -0,0 +1,251 @@ +# This patch removes all need for the ThirdParty files of OpenFOAM + +# Derived from easybuild patch: Ward Poelmans <wpoely86 <at> gmail.com> +# Modified for GNU Guix: Paul Garlick <pgarlick <at> 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 2016-10-16 16:11:45.000000000 +0200 ++++ OpenFOAM-4.x-version-4.1/etc/config.sh/gperftools 2017-04-10 14:51:01.473221230 +0200 +@@ -29,13 +29,13 @@ + # + #------------------------------------------------------------------------------ + +-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 ++# 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/src/Makefile OpenFOAM-4.x-version-4.1/wmake/src/Makefile +--- OpenFOAM-4.x-version-4.1.org/wmake/src/Makefile ++++ OpenFOAM-4.x-version-4.1/wmake/src/Makefile +@@ -33,7 +33,7 @@ + # The Makefile use a POSIX shell + #------------------------------------------------------------------------------ + +-SHELL = /bin/sh ++# SHELL = /bin/sh + + #------------------------------------------------------------------------------ + # Unset suffices list (suffix rules are not used) +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,7 @@ + # The Makefile uses a POSIX shell + #------------------------------------------------------------------------------ + +-SHELL = /bin/sh ++# 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,8 +6,8 @@ + -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 \ diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm new file mode 100644 index 000000000..5aa5f8f03 --- /dev/null +++ b/gnu/packages/simulation.scm @@ -0,0 +1,197 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Paul Garlick <pgarlick <at> 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-replace-substring version "." "-"))) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1hgh2kw7fqv4bfachhbjhw16v8j35jbv6s576fmz4ka2q4ks4wg3")) + (patches (search-patches "openfoam-cleanup.patch")) + (modules '((guix build utils))))) + (build-system gnu-build-system) + (native-inputs + `(("bison" ,bison))) + (propagated-inputs + `(("boost" ,boost) + ("cgal" ,cgal) + ("flex" ,flex) + ("git" ,git) + ("gmp" ,gmp) + ("gzip" ,gzip) + ("gnuplot" ,gnuplot) + ("libxt" ,libxt) + ("metis" ,metis) + ("mpfr" ,mpfr) + ("ncurses" ,ncurses) + ("openmpi" ,openmpi) + ("readline" ,readline) + ("scotch" ,pt-scotch) + ("zlib" ,zlib))) + (arguments + `(;; executable files and shared libraries are located in the 'platforms' + ;; subdirectory + #:strip-directories (list (string-append + "OpenFOAM-" ,version + "/platforms/linux64GccDPInt32Opt/bin") + (string-append + "OpenFOAM-" ,version + "/platforms/linux64GccDPInt32Opt/lib")) + ;; '#:elf-directories' is not recognised here so skip validation phase + #:validate-runpath? #f + #:phases (modify-phases %standard-phases + (add-after 'unpack 'rename-build-directory + (lambda _ + (use-modules (ice-9 ftw)) + (use-modules (ice-9 regex)) + (chdir "..") + ;; use 'OpenFOAM-version' convention to match path 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))) + ;; re-name build directory + (rename-file unpack-dir build-dir) + ;; move to build directory + (chdir (basename build-dir))))) + (add-after 'patch-source-shebangs 'set-environment-variables + (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)))) + (delete 'configure) ; no configure phase + (delete 'patch-generated-file-shebangs) ; no generated files + (replace 'build + (lambda _ + ;; 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 + (zero? (system (format #f "sed -i 's|~a|'~:*~s'|' ~a" + "$CGAL_ROOT" "etc/config.sh/CGAL"))) + (zero? (system (format #f "sed -i 's|~a|'~:*~s'|' ~a" + "$BOOST_ROOT" "etc/config.sh/CGAL"))) + (zero? (system (format #f "sed -i 's|~a|'~:*~s'|' ~a" + "$METIS_ROOT" "etc/config.sh/metis"))) + (zero? (system (format #f "sed -i 's|~a|'~:*~s'|' ~a" + "$METISVERSION" "etc/config.sh/metis"))) + (zero? (system (format #f "sed -i 's|~a|'~:*~s'|' ~a" + "$SCOTCH_ROOT" "etc/config.sh/scotch"))) + (zero? (system (format #f "sed -i 's|~a|'~:*~s'|' ~a" + "$SCOTCHVERSION" "etc/config.sh/scotch"))) + (zero? (system (format #f "sed -i 's|~a|'~:*~s'|' ~a" + "$GMP_ROOT" "etc/config.sh/settings"))) + (zero? (system (format #f "sed -i 's|~a|'~:*~s'|' ~a" + "$MPFR_ROOT" "etc/config.sh/settings"))))) + (delete 'check) ; no tests to run + (replace 'install + (lambda _ + ;; use 'OpenFOAM-version' convention + (let ((install-dir (string-append + %output "/OpenFOAM-" ,version))) + ;; create install directory + (mkdir-p install-dir) + ;; move contents of build directory to install directory + (copy-recursively "." install-dir))))))) + ;; 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/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 + (native-search-paths + ;; define the FOAM_INST_DIR variable + (list (search-path-specification + (variable "FOAM_INST_DIR") + (files '("."))))) + (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++. Complex 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. + +OpenFOAM implements the Finite Volume Method for discretizing the spacial +dimensions. Computational grids defining geometries in two- and +three-dimensional domains may be generated by the included blockMesh and +snappyHexMesh routines or imported from external grid-generation packages. +Grids may be unstructured in layout and may contain any combination of +polyhedral cells. Large problems may be split into smaller, connected +problems for efficient solution on parallel systems") + (license license:gpl3+) + (home-page "https://openfoam.org"))) -- 2.13.0
[Message part 3 (message/rfc822, inline)]
From: ludo <at> gnu.org (Ludovic Courtès) To: Paul Garlick <pgarlick <at> tourbillion-technology.com> Cc: 28045-done <at> debbugs.gnu.org Subject: Re: [PATCH] gnu: Add openfoam Date: Fri, 15 Sep 2017 18:35:29 +0200Hi Paul, Paul Garlick <pgarlick <at> tourbillion-technology.com> skribis: > *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 I went ahead and pushed this (with indentation changes and use of #:modules as discussed earlier; please consider using ‘etc/indent-code.el’ in the future): https://git.savannah.gnu.org/cgit/guix.git/commit/?id=8f21aa22bf4b731ed0e5631c371846028e5cec0d Users who don’t set FOAM_INST_DIR will be tripped up like this: --8<---------------cut here---------------start------------->8--- $ /gnu/store/4zqn4w0wlq0irdwh3dhrdbsr7i3f1dag-openfoam-4.1/bin/checkMesh --> FOAM FATAL ERROR in Foam::findEtcFiles() : could not find mandatory file 'controlDict' $ /gnu/store/4zqn4w0wlq0irdwh3dhrdbsr7i3f1dag-openfoam-4.1/bin/interFoam --> FOAM FATAL ERROR in Foam::findEtcFiles() : could not find mandatory file 'controlDict' --8<---------------cut here---------------end--------------->8--- But that’s part of the game for now. :-) Thanks a lot for your work and patience! Ludo’.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.