1# This derivation should be redundant, now that regular smlnj works on Darwin,
2# and is preserved only for pre-existing direct usage. New use cases should
3# just use the regular smlnj derivation.
4
5{ lib, stdenv, fetchurl, cpio, rsync, xar, makeWrapper }:
6
7stdenv.mkDerivation rec {
8 pname = "smlnj-bootstrap";
9
10 version = "110.91";
11
12 src = fetchurl {
13 url = "http://smlnj.cs.uchicago.edu/dist/working/${version}/smlnj-x86-${version}.pkg";
14 sha256 = "12jn50h5jz0ac1vzld2mb94p1dyc8h0mk0hip2wj5xqk1dbzwxl4";
15 };
16
17 nativeBuildInputs = [ makeWrapper ];
18 buildInputs = [ cpio rsync ];
19
20 unpackPhase = ''
21 ${xar}/bin/xar -xf $src
22 cd smlnj.pkg
23 '';
24
25 buildPhase = ''
26 cat Payload | gunzip -dc | cpio -i
27 '';
28
29 installPhase = ''
30 mkdir -p $out/bin
31 rsync -av bin/ $out/bin/
32
33 mkdir -p $out/lib
34 rsync -av lib/ $out/lib/
35 '';
36
37 postInstall = ''
38 wrapProgram "$out/bin/sml" --set "SMLNJ_HOME" "$out"
39 '';
40
41 meta = {
42 description = "Compiler for the Standard ML '97 programming language";
43 homepage = "http://www.smlnj.org";
44 license = lib.licenses.free;
45 platforms = lib.platforms.darwin;
46 maintainers = [ lib.maintainers.jwiegley ];
47 mainProgram = "sml";
48 };
49}