Subject: [bug#28045] [PATCH] gnu: Add openfoam

From: [email-masked] (Ludovic Courtès)
Date: Fri, 08 Sep 2017 17:39:08 +0200

Hi Paul,

Paul Garlick <[email-masked]> skribis:

>> Does it address the use case you have in mind?
>
> Yes, I think that both the multiple-profile solution and the 'ad-hoc'
> environment will work for Guix/OpenFOAM.  

Good!

> So, continuing the 'middle road' line of thought, the 'install-dir'
> variable would be modified to add a '/lib' element:
>
> -                                %output "/OpenFOAM-" ,version)))
> +                                %output "/OpenFOAM-" ,version
> "/lib")))

Sounds good.

> You suggest adding a link between bin and lib/OpenFOAM-
> 4.1/platforms/linux64GccDPInt32Opt/bin.  What would be the best way to
> add this to the package definition?  

Perhaps adding an extra phase at the end that simply calls ‘symlink’?

> There could also be a link between lib and lib/OpenFOAM-
> 4.1/platforms/linux64GccDPInt32Opt/lib.

Yes.

> The links would allow the runpaths to be validated.  So; 
>
> -       #:validate-runpath? #f ; '#:elf-directories' is not recognised
> here

That’d be great.  If that phase errors out, it probably means that the
binaries won’t work out of the box, so it’s good to fix it.

(BTW, please note that executables should go to bin/, libraries and
other architecture-dependent files to lib/, and share/ is for
architecture-independent stuff.  I suppose we’ll only have bin/ and lib/
for a start, that’s OK.)

> The FOAM_INST_DIR variable would need to be updated:
>
> -            (files '(".")))))
>  +          (files '("./lib")))))

I really dislike this FOAM_INST_DIR variable (usually packages “know”
where they are installed and don’t need an extra variable for that), but
if it has to be there, then so be it.  :-)

I think we should be all set?  I’ll wait for your hopefully last patch
revision!

Besides, for the future, if you have an opportunity to discuss these
matters with upstream, I’d recommend suggesting the addition of a proper
installation phase (“make install”), and also support at least for an
installation prefix, and ideally for more directory categories (see
<https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>).

Thanks for your patience!

Ludo’.