Hello Ludo,


I think it might make sense to create a new “simulation” module, and
eventually move OpenCascade there as well, WDYT?


Sure.  I will create a new module and put the OpenFOAM package definition in there as the first one.

Some comments:

+ (build-system trivial-build-system)
Did you consider using ‘gnu-build-system’? I think this would save quite a few lines corresponding to the initial setup (set-paths, unpack, patch-shebang, etc.), and also ensure that the final phases (strip, compress-documentation, etc.) are run. In addition you wouldn’t need to list all the usual build inputs (GCC, Coreutils, Make, etc.). WDYT?

I did consider both options, removing and modifying stages in the gnu-build-system or starting from scratch with the trivial-build-system.  I can give the gnu-build-system option a go, reverting to the trivial-build-system if the new attempt proves too troublesome.  

One aspect I will need to investigate in the gnu-build-system is using the "./Allwmake" command to trigger the build process.  In OpenFOAM, wmake is short for "wrapped-make" and the package has its own configuration step.  In brief, it has its own sequence and does not follow the standard "./configure && make && make install" steps.

Using the trivial-build-system the patch-shebang section is indeed a little extended.  I found this was necessary to avoid a failure of the patch-shebang command using a simple 'find-files "."' from top-level directory.  There is a scenario where sub-directories named '0', in the 'tutorials' directory, identified by the find-files command, being passed to 'patch-shebang', which should only receive files, not directories.  This causes 'patch-shebang' to stop and the build fails.


+ ) + ) + ) + )
Please listen to what ‘guix lint’ has to say about these. :-)

Interestingly, 'guix lint' let me get away with this without making comment.  However, I shall condense things accordingly in the new patch.


What about wrapping the resulting binaries so that they have
‘FOAM_INST_DIR’ set to %output?


In fact, FOAM_INST_DIR is used in multiple places to navigate around the installed files (not just the binaries), so I think this variable may need to remain available as is.



You could make it “if true”, thereby avoiding the need to define
$READLINE_ROOT.


Could you elaborate on this idea a little?  At the moment the test is "if file exists".


Could you send an updated patch to guix-patches@gnu.org, where it will
be visible in the patch tracker?



Aha, a new system!

Best,

Paul.