about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/science/misc/megam/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/science/misc/megam/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/science/misc/megam/default.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/science/misc/megam/default.nix b/nixpkgs/pkgs/applications/science/misc/megam/default.nix
new file mode 100644
index 000000000000..cae0fe9b26fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/misc/megam/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchurl
+, ocaml
+, ncurses
+}:
+
+stdenv.mkDerivation {
+  pname = "megam";
+  version = "0.92";
+
+  src = fetchurl {
+    url = "http://hal3.name/megam/megam_src.tgz";
+    sha256 = "dc0e9f59ff8513449fe3bd40b260141f89c88a4edf6ddc8b8a394c758e49724e";
+  };
+
+  patches = [ ./ocaml-includes.patch ./ocaml-3.12.patch ];
+
+  postPatch = ''
+    # Deprecated in ocaml 3.10 https://github.com/ocaml/ocaml/commit/f6190f3d0c49c5220d443ee8d03ca5072d68aa87
+    # Deprecated in ocaml 3.08 https://github.com/ocaml/ocaml/commit/0c7aecb88dc696f66f49f3bed54a037361a26b8d
+    substituteInPlace fastdot_c.c --replace copy_double caml_copy_double --replace Bigarray_val Caml_ba_array_val --replace caml_bigarray caml_ba_array
+    # They were already deprecated in 3.12 https://v2.ocaml.org/releases/3.12/htmlman/libref/Array.html
+    substituteInPlace abffs.ml main.ml --replace create_matrix make_matrix
+    substituteInPlace intHashtbl.ml --replace Array.create Array.make
+  '';
+  strictDeps = true;
+
+  nativeBuildInputs = [ ocaml ];
+
+  buildInputs = [ ncurses ];
+
+  makeFlags = [
+    "CAML_INCLUDES=${ocaml}/lib/ocaml/caml"
+    ("WITHBIGARRAY=" + lib.optionalString (lib.versionOlder ocaml.version "4.08.0") "bigarray.cma")
+    "all"
+    "opt"
+  ];
+
+  # see https://bugzilla.redhat.com/show_bug.cgi?id=435559
+  dontStrip = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 megam $out/bin/megam
+    install -Dm755 megam.opt $out/bin/megam.opt
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "MEGA Model Optimization Package";
+    longDescription = ''
+      The software here is an implementation of maximum likelihood and maximum a
+      posterior optimization of the parameters of these models. The algorithms
+      used are much more efficient than the iterative scaling techniques used in
+      almost every other maxent package out there.
+    '';
+    homepage = "http://www.umiacs.umd.edu/~hal/megam";
+    license = "non-commercial";
+    maintainers = with maintainers; [ leixb ];
+    platforms = platforms.unix;
+  };
+}