Subject: [PATCH] ocaml: binsec: Wrap program to set OCAMLPATH

From: [email-masked]
Date: Sat, 3 May 2025 16:38:26 +0200

From: Sören Tempel <[email-masked]>

Otherwise, dune plugins cannot be loaded which results in some command
line options to not work correctly. For example, binsec --help errors
with "The library "binsec.sse.checkct" can't be found in the search
paths". To fix this, this patch adds a wrap-programs phase.

Fixes https://issues.guix.gnu.org/69996

* gnu/packages/ocaml.scm (binsec) <arguments>: Add wrap-programs phase.
---
 gnu/packages/ocaml.scm | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index a5632c6ad1..e86f59d2b3 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -1419,6 +1419,17 @@ (define-public binsec
        (sha256
         (base32 "1szfqb6rj19w2jdyaxdgy3plhgr7picijf7l4k5qq80kna2h0zm8"))))
     (build-system dune-build-system)
+    (arguments
+      (list #:phases
+            #~(modify-phases %standard-phases
+                (add-after 'install 'wrap-programs
+                  (lambda _
+                    (let ((ocamlpath
+                            `(,(string-append #$output "/lib/ocaml/site-lib")
+                               ,@(search-path-as-string->list (getenv "OCAMLPATH")))))
+                      (wrap-program (string-append #$output "/bin/" "binsec")
+                                    `("OCAMLPATH" ":" prefix ,ocamlpath))))))))
+    (inputs (list bash-minimal))
     (native-inputs (list gmp ocaml-qcheck ocaml-ounit2))
     (propagated-inputs (list dune-site
                              ocaml-base

base-commit: 415e3d98d6faf5fd3d1b7b3daa2f20636e4ff822