Subject: [PATCH v7 7/7] gnu: openfoam-org: Improve wrapping of binaries.

From: reza <[email-masked]>
Date: Fri, 1 Dec 2023 20:21:46 +0000

* gnu/packages/simulation.scm (openfoam-org): Add all variables from
etc/bashrc to the wrapping of binaries.

Change-Id: Idf0d4d9a043dfff806b6fb1871c1931794c1935b
---
 gnu/packages/simulation.scm | 159 +++++++++++++++++++++++++++++++++++-
 1 file changed, 155 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm
index f01044e76a..6b61783c2c 100644
--- a/gnu/packages/simulation.scm
+++ b/gnu/packages/simulation.scm
@@ -401,15 +401,166 @@ (define-public openfoam-org
           (add-after 'add-symbolic-link 'wrap
             (lambda* (#:key python inputs outputs #:allow-other-keys)
               (let* ((bin (string-append #$output "/bin"))
-                     (openfoam (string-append #$output
-                                              "/share/OpenFOAM-"
-                                              #$(package-version this-package))))
+                     (openfoam-version #$(package-version this-package))
+                     (openfoam-root (string-append #$output
+                                                   "/share/OpenFOAM-"
+                                                   openfoam-version))
+                     (openmpi-version #$(package-version openmpi))
+                     (paraview-version #$(package-version paraview))
+                     (paraview-version-major+minor
+                      #$(version-major+minor (package-version paraview))))
                 (for-each
                  (lambda (program)
                    (unless (member program
                                    '("." ".."))
+                     ;; wrap the programs with all the variables created by sourcing
+                     ;; etc/bashrc
                      (wrap-program (string-append bin "/" program)
-                       `("WM_PROJECT_DIR" ":" prefix (,openfoam)))))
+                       `("WM_PROJECT_INST_DIR" = (,openfoam-root))
+                       `("WM_PROJECT_DIR" = (,openfoam-root))
+                       '("WM_PROJECT" = ("OpenFOAM"))
+                       `("WM_PROJECT_VERSION" = (,openfoam-version))
+                       '("WM_COMPILER_TYPE" = ("system"))
+                       '("WM_COMPILER" = ("Gcc"))
+                       '("WM_ARCH_OPTION" = ("64"))
+                       '("WM_PRECISION_OPTION" = ("DP"))
+                       '("WM_LABEL_SIZE" = ("32"))
+                       '("WM_COMPILE_OPTION" = ("Opt"))
+                       '("WM_MPLIB" = ("OPENMPI"))
+                       '("WM_OSTYPE" = ("POSIX"))
+                       '("WM_OPTIONS" = ("linux64GccDPInt32Opt"))
+                       `("WM_PROJECT_USER_DIR" = (,(string-append
+                                                    "$HOME/OpenFOAM/$USER-"
+                                                    openfoam-version)))
+                       `("WM_THIRD_PARTY_DIR" = (,(string-append
+                                                   openfoam-root
+                                                   "/ThirdParty-"
+                                                   openfoam-version)))
+                       '("WM_LABEL_OPTION" = ("Int32"))
+                       '("WM_LINK_LANGUAGE" = ("c++"))
+                       '("WM_COMPILER_LIB_ARCH" = ("64"))
+                       `("WM_DIR" = (,(string-append openfoam-root "/wmake")))
+                       '("WM_LDFLAGS" = ("-m64"))
+                       '("WM_CC" = ("gcc"))
+                       '("WM_CFLAGS" = ("-m64 -fPIC"))
+                       '("WM_CXX" = ("g++"))
+                       '("WM_CXXFLAGS" = ("-m64 -fPIC -std=c++0x"))
+                       
+                       `("FOAM_INST_DIR" = (,openfoam-root))
+                       `("FOAM_APP" = (,(string-append openfoam-root
+                                                       "/applications")))
+                       `("FOAM_SRC" = (,(string-append openfoam-root "/src")))
+                       `("FOAM_ETC" = (,(string-append openfoam-root "/etc")))
+                       `("FOAM_TUTORIALS" = (,(string-append openfoam-root
+                                                             "/tutorials")))
+                       `("FOAM_UTILITIES" = (,(string-append
+                                               openfoam-root
+                                               "/applications/utilities")))
+                       `("FOAM_SOLVERS" = (,(string-append
+                                             openfoam-root
+                                             "/applications/solvers")))
+                       `("FOAM_MPI" = (,(string-append "openmpi-"
+                                                       openmpi-version)))
+                       `("FOAM_RUN" = (,(string-append "$HOME/OpenFOAM/$USER-"
+                                                       openfoam-version "/run")))
+                       `("FOAM_EXT_LIBBIN" = (,(string-append
+                                                openfoam-root
+                                                "/ThirdParty-"
+                                                openfoam-version
+                                                "/platforms/linux64GccDPInt32/lib")))
+                       `("FOAM_APPBIN" = (,(string-append
+                                            openfoam-root
+                                            "/platforms/linux64GccDPInt32Opt/bin")))
+                       `("FOAM_JOB_DIR" = (,(string-append openfoam-root
+                                                           "/jobControl")))
+                       `("FOAM_LIBBIN" = (,(string-append
+                                            openfoam-root
+                                            "/platforms/linux64GccDPInt32Opt/lib")))
+                       `("FOAM_SITE_LIBBIN" = (,(string-append
+                                                 openfoam-root
+                                                 "/site/"
+                                                 openfoam-version
+                                                 "/platforms/linux64GccDPInt32Opt/lib")))
+                       `("FOAM_SITE_APPBIN" = (,(string-append
+                                                 openfoam-root
+                                                 "/site/"
+                                                 openfoam-version
+                                                 "/platforms/linux64GccDPInt32Opt/bin")))
+                       `("FOAM_USER_LIBBIN" = (,(string-append
+                                                 "$HOME/OpenFOAM/$USER-"
+                                                 openfoam-version
+                                                 "/platforms/linux64GccDPInt32Opt/lib")))
+                       `("FOAM_USER_APPBIN" = (,(string-append
+                                                 "$HOME/OpenFOAM/$USER-"
+                                                 openfoam-version
+                                                 "/platforms/linux64GccDPInt32Opt/bin")))
+                       `("FOAM_MODULES" = (,(string-append openfoam-root
+                                                           "/applications/modules")))
+                       '("FOAM_SIGFPE" = (""))
+                       '("FOAM_SETTINGS" = (""))
+
+                       `("ParaView_INCLUDE_DIR" = (,(string-append #$paraview
+                                                                   "/include/paraview-"
+                                                                   paraview-version-major+minor)))
+                       '("ParaView_GL" = ("mesa"))
+                       `("ParaView_VERSION" = (,paraview-version))
+                       `("ParaView_MAJOR" = (,paraview-version-major+minor))
+                       `("ParaView_DIR" = (,#$paraview))
+                       `("PV_PLUGIN_PATH" = (,(string-append
+                                               openfoam-root
+                                               "/platforms/linux64GccDPInt32Opt/lib/paraview-"
+                                               paraview-version-major+minor)))
+
+                       `("MPI_ARCH_PATH" = (,#$openmpi))
+                       `("OPAL_PREFIX" = (,#$openmpi))
+                       '("MPI_BUFFER_SIZE" = ("20000000"))
+                       
+                       `("LD_LIBRARY_PATH" prefix
+                         (,(string-append openfoam-root "/ThirdParty-"
+                                          openfoam-version
+                                          "/platforms/linux64Gcc/gperftools-svn/lib")
+                          ,(string-append #$paraview "/lib")
+                          ,(string-append openfoam-root
+                                          "/platforms/linux64GccDPInt32Opt/lib/openmpi-"
+                                          openmpi-version)
+                          ,(string-append openfoam-root "/ThirdParty-"
+                                          openfoam-version
+                                          "/platforms/linux64GccDPInt32/lib/openmpi-"
+                                          openmpi-version)
+                          ,(string-append #$openmpi "/lib")
+                          ,(string-append #$openmpi "/lib64")
+                          ,(string-append "$HOME/OpenFOAM/$USER-"
+                                          openfoam-version
+                                          "/platforms/linux64GccDPInt32Opt/lib")
+                          ,(string-append openfoam-root "/site/"
+                                          openfoam-version
+                                          "/platforms/linux64GccDPInt32Opt/lib")
+                          ,(string-append openfoam-root
+                                          "/platforms/linux64GccDPInt32Opt/lib")
+                          ,(string-append openfoam-root "/ThirdParty-"
+                                          openfoam-version
+                                          "/platforms/linux64GccDPInt32/lib")
+                          ,(string-append openfoam-root
+                                          "/platforms/linux64GccDPInt32Opt/lib/dummy")))
+                       `("PATH" prefix
+                         (,(string-append openfoam-root "/ThirdParty-"
+                                          openfoam-version
+                                          "/platforms/linux64Gcc/gperftools-svn/bin")
+                          ,(string-append #$paraview "/bin")
+                          ,(string-append openfoam-root "/ThirdParty-"
+                                          openfoam-version
+                                          "/platforms/linux64Gcc/cmake-*/bin")
+                          ,(string-append #$openmpi "/bin")
+                          ,(string-append openfoam-root "/bin")
+                          ,(string-append openfoam-root "/wmake")
+                          ,(string-append "$HOME/OpenFOAM/$USER-"
+                                          openfoam-version
+                                          "/platforms/linux64GccDPInt32Opt/bin")
+                          ,(string-append openfoam-root "/site/"
+                                          openfoam-version
+                                          "/platforms/linux64GccDPInt32Opt/bin")
+                          ,(string-append openfoam-root
+                                          "/platforms/linux64GccDPInt32Opt/bin"))))))
                  (scandir bin))))))))
     ;; Note:
     ;; Tutorial files are installed read-only in /gnu/store.
-- 
2.41.0