summary refs log tree commit diff
path: root/pkgs/development/compilers/sbcl/bootstrap.nix
diff options
context:
space:
mode:
authorTomas Hlavaty <tom@logand.com>2015-09-27 23:35:34 +0200
committerTomas Hlavaty <tom@logand.com>2015-09-30 23:40:58 +0200
commit29f120d7b2bc37e0e39884ea827baa9aa4c40792 (patch)
treeb9aa820b668b89085c2fe8baf781d7874300733d /pkgs/development/compilers/sbcl/bootstrap.nix
parent64bde29a312bb3039b39239c25128ed05c126d86 (diff)
downloadnixpkgs-29f120d7b2bc37e0e39884ea827baa9aa4c40792.tar
nixpkgs-29f120d7b2bc37e0e39884ea827baa9aa4c40792.tar.gz
nixpkgs-29f120d7b2bc37e0e39884ea827baa9aa4c40792.tar.bz2
nixpkgs-29f120d7b2bc37e0e39884ea827baa9aa4c40792.tar.lz
nixpkgs-29f120d7b2bc37e0e39884ea827baa9aa4c40792.tar.xz
nixpkgs-29f120d7b2bc37e0e39884ea827baa9aa4c40792.tar.zst
nixpkgs-29f120d7b2bc37e0e39884ea827baa9aa4c40792.zip
sbcl: improve bootstrap and add arm support
clisp bootstrap is very slow and clisp doesn't compile on arm

now it is possible to also bootstrap using ccl:

   sbclBootstrapHost = "${ccl}/bin/${ccl.CCL_RUNTIME} -b -n";

or alternatively using clisp

   sbclBootstrapHost = "${clisp}/bin/clisp -norc";
Diffstat (limited to 'pkgs/development/compilers/sbcl/bootstrap.nix')
-rw-r--r--pkgs/development/compilers/sbcl/bootstrap.nix55
1 files changed, 42 insertions, 13 deletions
diff --git a/pkgs/development/compilers/sbcl/bootstrap.nix b/pkgs/development/compilers/sbcl/bootstrap.nix
index 015d7dd95da..8c1a6e27a76 100644
--- a/pkgs/development/compilers/sbcl/bootstrap.nix
+++ b/pkgs/development/compilers/sbcl/bootstrap.nix
@@ -1,24 +1,53 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, makeWrapper }:
 
+let
+  options = rec {
+    x86_64-darwin = rec {
+      version = "1.1.8";
+      system = "x86-64-darwin";
+      sha256 = "006pr88053wclvbjfjdypnbiw8wymbzdzi7a6kbkpdfn4zf5943j";
+    };
+    x86_64-linux = rec {
+      version = "1.2.15";
+      system = "x86-64-linux";
+      sha256 = "1bpbfz9x2w73hy2kh8p0kd4m1p6pin90h2zycq52r3bbz8yv47aw";
+    };
+    i686-linux = rec {
+      version = "1.2.7";
+      system = "x86-linux";
+      sha256 = "07f3bz4br280qvn85i088vpzj9wcz8wmwrf665ypqx181pz2ai3j";
+    };
+    armv7l-linux = rec {
+      version = "1.2.14";
+      system = "armhf-linux";
+      sha256 = "0sp5445rbvms6qvzhld0kwwvydw51vq5iaf4kdqsf2d9jvaz3yx5";
+    };
+    armv6l-linux = armv7l-linux;
+  };
+  cfg = options.${stdenv.system};
+in
 stdenv.mkDerivation rec {
   name    = "sbcl-bootstrap-${version}";
-  version = "1.1.8";
+  version = cfg.version;
 
-  src = if stdenv.isDarwin
-    then fetchurl {
-      url = mirror://sourceforge/project/sbcl/sbcl/1.1.8/sbcl-1.1.8-x86-64-darwin-binary.tar.bz2;
-      sha256 = "006pr88053wclvbjfjdypnbiw8wymbzdzi7a6kbkpdfn4zf5943j";
-    }
-    else fetchurl {
-      url = mirror://sourceforge/project/sbcl/sbcl/1.1.8/sbcl-1.1.8-x86-64-linux-binary.tar.bz2;
-      sha256 = "0lh1jglxlfwk4cm6sgwk1jnb6ikhbrkx7p5aha2nbmkd6zl96prx";
-    };
+  src = fetchurl {
+    url = "mirror://sourceforge/project/sbcl/sbcl/${version}/sbcl-${version}-${cfg.system}-binary.tar.bz2";
+    sha256 = cfg.sha256;
+  };
+
+  buildInputs = [ makeWrapper ];
 
   installPhase = ''
-    mkdir -p $out/bin
-    cp -p src/runtime/sbcl $out/bin
     mkdir -p $out/share/sbcl
+    cp -p src/runtime/sbcl $out/share/sbcl
     cp -p output/sbcl.core $out/share/sbcl
+    mkdir -p $out/bin
+    makeWrapper $out/share/sbcl/sbcl $out/bin/sbcl \
+      --add-flags "--core $out/share/sbcl/sbcl.core"
+  '';
+
+  postFixup = if stdenv.isArm then "" else ''
+    patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/share/sbcl/sbcl
   '';
 
   meta = {