From 30da2b565917622f52108bcb93bf759700e6a144 Mon Sep 17 00:00:00 2001 From: Sophia Donataccio Date: Fri, 12 Oct 2018 00:21:49 -0400 Subject: [PATCH] mlton: adds binary release package for mlton version 20180207 This works the same as the binary package in the old derivation, by patching the release binary. The difference is that this derivation is also exposed at the top level. --- .../compilers/mlton/20180207-binary.nix | 57 +++++++++++++++++++ pkgs/development/compilers/mlton/default.nix | 4 ++ pkgs/top-level/all-packages.nix | 3 +- 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/mlton/20180207-binary.nix diff --git a/pkgs/development/compilers/mlton/20180207-binary.nix b/pkgs/development/compilers/mlton/20180207-binary.nix new file mode 100644 index 00000000000..0589733cb3c --- /dev/null +++ b/pkgs/development/compilers/mlton/20180207-binary.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchurl, patchelf, gmp }: +let + dynamic-linker = stdenv.cc.bintools.dynamicLinker; +in +stdenv.mkDerivation rec { + name = "mlton-${version}"; + version = "20180207"; + + src = if stdenv.hostPlatform.system == "x86_64-linux" then (fetchurl { + url = "https://github.com/MLton/mlton/releases/download/on-${version}-release/${name}-1.amd64-linux.tgz"; + sha256 = "0f4q575yfm5dpg4a2wsnqn4l2zrar96p6rlsk0dw10ggyfwvsjlf"; + }) + else if stdenv.hostPlatform.system == "x86_64-darwin" then (fetchurl { + url = "https://github.com/MLton/mlton/releases/download/on-${version}-release/${name}-1.amd64-darwin.gmp-static.tgz"; + sha256 = "1cw7yhw48qp12q0adwf8srpjzrgkp84kmlkqw3pz8vkxz4p9hbdv"; + }) + else + throw "Architecture not supported"; + + buildInputs = [ gmp ]; + nativeBuildInputs = stdenv.lib.optional stdenv.isLinux patchelf; + + buildPhase = '' + make update \ + CC="$(type -p cc)" \ + WITH_GMP_INC_DIR="${gmp.dev}/include" \ + WITH_GMP_LIB_DIR="${gmp}/lib" + ''; + + installPhase = '' + make install PREFIX=$out + ''; + + postFixup = stdenv.lib.optionalString stdenv.isLinux '' + patchelf --set-interpreter ${dynamic-linker} $out/lib/mlton/mlton-compile + patchelf --set-rpath ${gmp}/lib $out/lib/mlton/mlton-compile + + for e in mllex mlnlffigen mlprof mlyacc; do + patchelf --set-interpreter ${dynamic-linker} $out/bin/$e + patchelf --set-rpath ${gmp}/lib $out/bin/$e + done + '' + stdenv.lib.optionalString stdenv.isDarwin '' + install_name_tool -change \ + /opt/local/lib/libgmp.10.dylib \ + ${gmp}/lib/libgmp.10.dylib \ + $out/lib/mlton/mlton-compile + + for e in mllex mlnlffigen mlprof mlyacc; do + install_name_tool -change \ + /opt/local/lib/libgmp.10.dylib \ + ${gmp}/lib/libgmp.10.dylib \ + $out/bin/$e + done + ''; + + meta = import ./meta.nix; +} diff --git a/pkgs/development/compilers/mlton/default.nix b/pkgs/development/compilers/mlton/default.nix index 7139a8a073d..a0662cd18a3 100644 --- a/pkgs/development/compilers/mlton/default.nix +++ b/pkgs/development/compilers/mlton/default.nix @@ -3,4 +3,8 @@ rec { mlton20130715 = import ./20130715.nix { inherit stdenv fetchurl patchelf gmp; }; + + mlton20180207Binary = import ./20180207-binary.nix { + inherit stdenv fetchurl patchelf gmp; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b998cbedec7..539b84abd4e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7163,7 +7163,8 @@ with pkgs; mkcl = callPackage ../development/compilers/mkcl {}; inherit (callPackage ../development/compilers/mlton {}) - mlton20130715; + mlton20130715 + mlton20180207Binary; mlton = mlton20130715;