about summary refs log tree commit diff
path: root/pkgs/development/ocaml-modules/z3
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/ocaml-modules/z3')
-rw-r--r--pkgs/development/ocaml-modules/z3/default.nix15
-rw-r--r--pkgs/development/ocaml-modules/z3/ocamlfind.patch13
2 files changed, 25 insertions, 3 deletions
diff --git a/pkgs/development/ocaml-modules/z3/default.nix b/pkgs/development/ocaml-modules/z3/default.nix
index 01b384fe0ba50..43fc5b245c8d8 100644
--- a/pkgs/development/ocaml-modules/z3/default.nix
+++ b/pkgs/development/ocaml-modules/z3/default.nix
@@ -1,9 +1,18 @@
-{ stdenv, ocaml, findlib, zarith, z3 }:
+{ stdenv, lib, ocaml, findlib, zarith, z3 }:
 
-let z3-with-ocaml = z3.override {
+if !lib.versionAtLeast ocaml.version "4.07"
+then throw "z3 is not available for OCaml ${ocaml.version}"
+else
+
+let z3-with-ocaml = (z3.override {
   ocamlBindings = true;
   inherit ocaml findlib zarith;
-}; in
+}).overrideAttrs (o: {
+  patches = (o.patches or []) ++ [
+    # Fix build; see: https://github.com/Z3Prover/z3/issues/5776
+    ./ocamlfind.patch
+  ];
+}); in
 
 stdenv.mkDerivation {
 
diff --git a/pkgs/development/ocaml-modules/z3/ocamlfind.patch b/pkgs/development/ocaml-modules/z3/ocamlfind.patch
new file mode 100644
index 0000000000000..d84907cf79385
--- /dev/null
+++ b/pkgs/development/ocaml-modules/z3/ocamlfind.patch
@@ -0,0 +1,13 @@
+diff --git a/scripts/mk_util.py b/scripts/mk_util.py
+index 042e6af46..1e105b002 100644
+--- a/scripts/mk_util.py
++++ b/scripts/mk_util.py
+@@ -1995,7 +1995,7 @@ class MLComponent(Component):
+ 
+             LIBZ3 = LIBZ3 + ' ' + ' '.join(map(lambda x: '-cclib ' + x, LDFLAGS.split()))
+ 
+-            stubs_install_path = '$$(%s printconf path)/stublibs' % OCAMLFIND
++            stubs_install_path = '$$(%s printconf destdir)/stublibs' % OCAMLFIND
+             if not STATIC_LIB:
+                 loadpath = '-ccopt -L' + stubs_install_path
+                 dllpath = '-dllpath ' + stubs_install_path