Subject: Re: bug#32691: OpenMolcas

From: Sarah Morgensen <[email-masked]>
Date: Fri, 24 Sep 2021 18:15:52 -0700

Hi Eric,

Eric Brown <[email-masked]> writes:

>> On Sep 13, 2021, at 3:01 AM, Sarah Morgensen <[email-masked]> wrote:
>> 
>> 
>> Thanks for all your work on this package.  Did you ever make further
>> progress on this?  Are you still interested in working on getting
>> OpenMolcas in Guix?
>> 
>> —
>> Sarah
>
> Hi Sarah,
>
> I have made a new port from scratch, which I am testing currently.  It can be found here:
>
> (channel
>  (name 'ecbrown-guix)
>  (url "https://ericcbrown.com/ecbrown/ecbrown-guix.git")
>  (introduction
>   (make-channel-introduction
>    "72e02daa4cf59a5e591387e299729f2509128b58"
>    (openpgp-fingerprint
>     "AA5F 523D FD6D 0478 8505 6A7D C1D5 F8F0 85BF 4CF3"))))
>
> I would appreciate any help that you might provide!
>
> Best regards,
> Eric

I'm glad to see that you've continued to work on this!

I took a look at your definition and the package it builds, and I'll
start with two things:

Syntactically, you can do something like this in your extra phase:

  (let* ((out (assoc-ref outputs "out"))
         (share (string-append out "/share/openmolcas")))

  (mkdir-p share)
  (for-each
    (lambda (file)
      (rename-file file (string-append share "/" file)))
    '("LICENSE" "data" ...))

and to symlink (like you allude to in the phase name):

  (symlink target name)

Looking at the actual package, it looks like there are several ".exe"
executables (which are actually ELF and runnable on Linux?) along with
matching ".prgm" files which (it looks like) are required to load and
run the executables.  Are these part of OpenMolcas itself, or are they
examples or something?  It would be best if we can avoid putting
architecture-specific files (that is, executables) in "/share".

Finally, rather than propagating python inputs, we can probably use the
'wrap' phase from python-build-system.  Adding that is a bit more
complex, but you can look at the 'nncp' package for an example of how
this is done (it uses gnu-build-system, but takes phases from
go-build-system).

Okay, that was three things, but what can you do? :)

--
Sarah