Subject: [PATCH] gnu: prrte: Record the absolute file name of ‘prted’.
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Cc: Ludovic Courtès <[email-masked]>
Date: Fri, 25 Oct 2024 12:46:24 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

From: Ludovic Courtès <[email-masked]>

Previously a command like:

  guix shell --pure openmpi@5 openssh intel-mpi-benchmarks \
    --with-input=openmpi@4=openmpi@5 slurm -- \
    salloc -N2 -- mpirun -np 2 --map-by node IMB-MPI1 PingPong

would silently fail due to ‘prted’ not being found in $PATH.

* gnu/packages/parallel.scm (prrte)[arguments]: Add
‘patch-prted-reference’ phase.

Change-Id: Iff30cb5a4dcc9e9cfe6638d518ee4f19561289a0
---
 gnu/packages/parallel.scm | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 202a98b2bc..85f8a114c3 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -727,7 +727,15 @@ (define-public prrte
                     (("_ABSOLUTE")
                      "")
                     (("PRTE_CONFIGURE_CLI")
-                     "\"[elided to reduce closure]\"")))))
+                     "\"[elided to reduce closure]\""))))
+              (add-after 'unpack 'patch-prted-reference
+                (lambda _
+                  ;; Record the absolute file name of 'prted' instead of
+                  ;; assuming it will be found in $PATH at run time.
+                  (substitute* "src/runtime/prte_mca_params.c"
+                    (("prte_launch_agent =.*")
+                     (string-append "prte_launch_agent = \""
+                                    #$output "/bin/prted\";\n"))))))
 
           #:disallowed-references (list (canonical-package gcc))))
    (inputs (list libevent

base-commit: a1714de3aa4f60d211c166876c3515f96384b0c7
-- 
2.46.0