diff --git a/pkgs/development/compilers/smlnj/bootstrap.nix b/pkgs/development/compilers/smlnj/bootstrap.nix index 91eb9fc84172..aacebd48e9e3 100644 --- a/pkgs/development/compilers/smlnj/bootstrap.nix +++ b/pkgs/development/compilers/smlnj/bootstrap.nix @@ -1,3 +1,7 @@ +# This derivation should be redundant, now that regular smlnj works on Darwin, +# and is preserved only for pre-existing direct usage. New use cases should +# just use the regular smlnj derivation. + { lib, stdenv, fetchurl, cpio, rsync, xar, makeWrapper }: stdenv.mkDerivation rec { diff --git a/pkgs/development/compilers/smlnj/default.nix b/pkgs/development/compilers/smlnj/default.nix index 3e987e8ccdaf..d6d50f0303f6 100644 --- a/pkgs/development/compilers/smlnj/default.nix +++ b/pkgs/development/compilers/smlnj/default.nix @@ -1,11 +1,9 @@ -{ lib, stdenv, fetchurl }: +{ lib, stdenv, fetchurl, Libsystem }: let version = "110.95"; baseurl = "http://smlnj.cs.uchicago.edu/dist/working/${version}"; - isArch64 = stdenv.system == "x86_64-linux"; - - arch = if isArch64 + arch = if stdenv.is64bit then "64" else "32"; @@ -14,7 +12,7 @@ let boot64 = { url = "${baseurl}/boot.amd64-unix.tgz"; sha256 = "1zn96a83kb6bn6228yfjsvb58m2qxw9k4j3qz0p9c8za479w4ch6"; }; - bootBinary = if isArch64 + bootBinary = if stdenv.is64bit then boot64 else boot32; @@ -53,6 +51,10 @@ in stdenv.mkDerivation { sed -i '/PATH=/d' config/_arch-n-opsys base/runtime/config/gen-posix-names.sh echo SRCARCHIVEURL="file:/$TMP" > config/srcarchiveurl patch --verbose config/_heap2exec ${./heap2exec.diff} + '' + lib.optionalString stdenv.isDarwin '' + # Locate standard headers like + substituteInPlace base/runtime/config/gen-posix-names.sh \ + --replace "\$SDK_PATH/usr" "${Libsystem}" ''; unpackPhase = '' @@ -83,7 +85,7 @@ in stdenv.mkDerivation { description = "Standard ML of New Jersey, a compiler"; homepage = "http://smlnj.org"; license = licenses.bsd3; - platforms = [ "x86_64-linux" "i686-linux" ]; + platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; maintainers = with maintainers; [ thoughtpolice ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a2952e8a7c89..5afb6fa3f613 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12069,8 +12069,11 @@ in shmig = callPackage ../development/tools/database/shmig { }; + # smlnjBootstrap should be redundant, now that smlnj works on Darwin natively smlnjBootstrap = callPackage ../development/compilers/smlnj/bootstrap.nix { }; - smlnj = callPackage ../development/compilers/smlnj { }; + smlnj = callPackage ../development/compilers/smlnj { + inherit (darwin) Libsystem; + }; smlpkg = callPackage ../tools/package-management/smlpkg { }; @@ -30080,11 +30083,7 @@ in iprover = callPackage ../applications/science/logic/iprover { }; - jonprl = callPackage ../applications/science/logic/jonprl { - smlnj = if stdenv.isDarwin - then smlnjBootstrap - else smlnj; - }; + jonprl = callPackage ../applications/science/logic/jonprl { }; key = callPackage ../applications/science/logic/key { }; @@ -30143,19 +30142,11 @@ in tptp = callPackage ../applications/science/logic/tptp {}; - celf = callPackage ../applications/science/logic/celf { - smlnj = if stdenv.isDarwin - then smlnjBootstrap - else smlnj; - }; + celf = callPackage ../applications/science/logic/celf { }; fast-downward = callPackage ../applications/science/logic/fast-downward { }; - twelf = callPackage ../applications/science/logic/twelf { - smlnj = if stdenv.isDarwin - then smlnjBootstrap - else smlnj; - }; + twelf = callPackage ../applications/science/logic/twelf { }; verifast = callPackage ../applications/science/logic/verifast {};