Hello Aristide,
Am Mon, Sep 30, 2024 at 05:44:26PM +0200 schrieb Aristide Doussot:
> into the already installed guix version of aocommon, in my case it would be
> "include_directories(/gnu/store/1wiw8m5yjcr26pcqhzbh7bw5ghvbaw90-aocommon-0.0.0-1.7329a07/include/)"
> However I don't think other users installing the package would mandatorily
> have "/gnu/store/1wiw8m5yjcr26pcqhzbh7bw5ghvbaw90-aocommon-0.0.0-1.7329a07"
> as their path to their installed guix version of aocommon. My question is
> therefore : is there a way to ask guix to find this path based on the name
> of the dependency and use it in my substitute* command on the CMakeLists
> file ?
this is indeed quite a common action. For instance, I do something like this
in the package vinci in gnu/packages/maths.scm:
(modify-phases %standard-phases
(replace 'configure
;; register the lrs location in the config file
(lambda* (#:key inputs #:allow-other-keys)
(let* ((lrs (assoc-ref inputs "lrslib"))
(lrsexec (string-append lrs "/bin/lrs")))
(substitute* "vinci.h"
(("#define LRS_EXEC \"lrs\"")
(string-append "#define LRS_EXEC \"" lrsexec "\""))))
#t))
So the function defining the phase needs to take the keyword parameter
"inputs", and this is set to the inputs of the package.
Then (assoc-ref inputs "lrslib") resolves to /gnu/store/...-lrslib-...,
the store path corresponding to the input package.
However, this is an "old style" package; for instance, phases do not end
with #t anymore. I do not know whether one would do differently with the
modern gexp style approach.
In any case, I hope you can already continue in this direction.
Andreas