ocamlPackages.zarith: use buildOcaml instead of mkDerivation

This has two main advantages:

  - By setting hasSharedObjects = true, buildOcaml will automatically
include a setup-hook.sh that sets CAML_LD_LIBRARY_PATH in dependent
expressions. This is needed to pick up dllzarith.so properly which is
shipped as part of the library.

  - We can kill the ugly assert in the expression and instead change it
to use minimumSupportedOcamlVersion.

(Note: this was reverted in b44d5136e8, but the change is
exactly equivalent -- I wasn't sure what impact zarith might actually
have without checking OfBorg, which I wanted to do first.)

Signed-off-by: Austin Seipp <aseipp@pobox.com>
This commit is contained in:
Austin Seipp 2019-01-14 21:50:15 -06:00
parent b44d5136e8
commit 564653f91d

View File

@ -1,8 +1,9 @@
{ stdenv, fetchurl, ocaml, findlib, pkgconfig, gmp, perl }:
{ stdenv, buildOcaml, fetchurl
, ocaml, findlib, pkgconfig, perl
, gmp
}:
assert stdenv.lib.versionAtLeast ocaml.version "3.12.1";
let param =
let source =
if stdenv.lib.versionAtLeast ocaml.version "4.02"
then {
version = "1.7";
@ -15,18 +16,20 @@ let param =
};
in
stdenv.mkDerivation rec {
name = "zarith-${version}";
inherit (param) version;
buildOcaml rec {
name = "zarith";
inherit (source) version;
src = fetchurl { inherit (source) url sha256; };
src = fetchurl {
inherit (param) url sha256;
};
minimumSupportedOcamlVersion = "3.12.1";
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ ocaml findlib perl ];
propagatedBuildInputs = [ gmp ];
# needed so setup-hook.sh sets CAML_LD_LIBRARY_PATH for dllzarith.so
hasSharedObjects = true;
patchPhase = "patchShebangs ./z_pp.pl";
configurePhase = ''
./configure -installdir $out/lib/ocaml/${ocaml.version}/site-lib