From b24aaeec45fdfe0359759b3dff084f0ec52dd73a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 11 Apr 2019 17:03:23 +0200 Subject: [PATCH] gnu: ocaml-mcl: Build with latest OCaml. * gnu/packages/machine-learning.scm (ocaml-mcl)[arguments]: Remove #:ocaml and #:findlib arguments; patch code in build phase. [native-inputs]: Add ocamlbuild. --- gnu/packages/machine-learning.scm | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 10aff22206..c97f51aec7 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -315,18 +315,36 @@ networks) based on simulation of (stochastic) flow in graphs.") "1l5jbhwjpsj38x8b9698hfpkv75h8hn3kj0gihjhn8ym2cwwv110")))) (build-system ocaml-build-system) (arguments - `(#:ocaml ,ocaml-4.02 - #:findlib ,ocaml4.02-findlib - #:phases + `(#:phases (modify-phases %standard-phases (add-before 'configure 'patch-paths (lambda _ (substitute* "configure" - (("SHELL = /bin/sh") (string-append "SHELL = "(which "sh")))) + (("/bin/sh") (which "sh"))) (substitute* "setup.ml" (("LDFLAGS=-fPIC") - (string-append "LDFLAGS=-fPIC\"; \"SHELL=" (which "sh")))) + (string-append "LDFLAGS=-fPIC\"; \"SHELL=" (which "sh"))) + (("-std=c89") "-std=gnu99") + + ;; This is a mutable string, which is no longer supported. Use + ;; a byte buffer instead. + (("String.make \\(String.length s\\)") + "Bytes.make (String.length s)") + + ;; These two belong together. + (("OASISString.replace_chars") + "Bytes.to_string (OASISString.replace_chars") + ((" s;") + " s);")) + (substitute* "myocamlbuild.ml" + (("std=c89") "std=gnu99")) + ;; Since we build with a more recent OCaml, we have to use C99 or + ;; later. This causes problems with the old C code. + (substitute* "src/impala/matrix.c" + (("restrict") "restrict_")) #t))))) + (native-inputs + `(("ocamlbuild" ,ocamlbuild))) (home-page "https://github.com/fhcrc/mcl") (synopsis "OCaml wrappers around MCL") (description