mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-23 07:23:20 +00:00
sbcl: support using CLISP as bootstrap host
Moves the bootstrap code into main derivation because it’s only used there, and this helps let the main derivation decide when to evaluate it in the first place (depending on the system), which helps on Hydra. Not actually enabled by default on any systems yet.
This commit is contained in:
parent
51d906d234
commit
ea02d8a9a5
@ -1,5 +1,4 @@
|
|||||||
{ lib, stdenv, fetchurl, fetchpatch, writeText, sbclBootstrap, zstd
|
{ lib, stdenv, callPackage, clisp, fetchurl, fetchpatch, writeText, zstd
|
||||||
, sbclBootstrapHost ? "${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit"
|
|
||||||
, threadSupport ? (stdenv.hostPlatform.isx86 || "aarch64-linux" == stdenv.hostPlatform.system || "aarch64-darwin" == stdenv.hostPlatform.system)
|
, threadSupport ? (stdenv.hostPlatform.isx86 || "aarch64-linux" == stdenv.hostPlatform.system || "aarch64-darwin" == stdenv.hostPlatform.system)
|
||||||
, linkableRuntime ? stdenv.hostPlatform.isx86
|
, linkableRuntime ? stdenv.hostPlatform.isx86
|
||||||
, disableImmobileSpace ? false
|
, disableImmobileSpace ? false
|
||||||
@ -26,8 +25,62 @@ let
|
|||||||
sha256 = "sha256-fSiakSMgIgKL8BKJAMMr8A5MVDDDLyivBZTIpZKphlQ=";
|
sha256 = "sha256-fSiakSMgIgKL8BKJAMMr8A5MVDDDLyivBZTIpZKphlQ=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# Collection of pre-built SBCL binaries for platforms that need them for
|
||||||
|
# bootstrapping. Ideally these are to be avoided. If CLISP (or any other
|
||||||
|
# non-binary-distributed Lisp) can run on any of these systems, that entry
|
||||||
|
# should be removed from this list.
|
||||||
|
bootstrapBinaries = rec {
|
||||||
|
aarch64-darwin = {
|
||||||
|
version = "2.1.2";
|
||||||
|
system = "arm64-darwin";
|
||||||
|
sha256 = "sha256-H0ALigXcWIypdA+fTf7jERscwbb7QIAfcoxCtGDh0RU=";
|
||||||
|
};
|
||||||
|
x86_64-darwin = {
|
||||||
|
version = "2.2.9";
|
||||||
|
system = "x86-64-darwin";
|
||||||
|
sha256 = "sha256-b1BLkoLIOELAYBYA9eBmMgm1OxMxJewzNP96C9ADfKY=";
|
||||||
|
};
|
||||||
|
x86_64-linux = {
|
||||||
|
version = "1.3.16";
|
||||||
|
system = "x86-64-linux";
|
||||||
|
sha256 = "0sq2dylwwyqfwkbdvcgqwz3vay9v895zpb0fyzsiwy31d1x9pr2s";
|
||||||
|
};
|
||||||
|
i686-linux = {
|
||||||
|
version = "1.2.7";
|
||||||
|
system = "x86-linux";
|
||||||
|
sha256 = "07f3bz4br280qvn85i088vpzj9wcz8wmwrf665ypqx181pz2ai3j";
|
||||||
|
};
|
||||||
|
aarch64-linux = {
|
||||||
|
version = "1.3.16";
|
||||||
|
system = "arm64-linux";
|
||||||
|
sha256 = "0q1brz9c49xgdljzfx8rpxxnlwhadxkcy5kg0mcd9wnxygind1cl";
|
||||||
|
};
|
||||||
|
armv7l-linux = {
|
||||||
|
version = "1.2.14";
|
||||||
|
system = "armhf-linux";
|
||||||
|
sha256 = "0sp5445rbvms6qvzhld0kwwvydw51vq5iaf4kdqsf2d9jvaz3yx5";
|
||||||
|
};
|
||||||
|
armv6l-linux = armv7l-linux;
|
||||||
|
x86_64-freebsd = {
|
||||||
|
version = "1.2.7";
|
||||||
|
system = "x86-64-freebsd";
|
||||||
|
sha256 = "14k42xiqd2rrim4pd5k5pjcrpkac09qnpynha8j1v4jngrvmw7y6";
|
||||||
|
};
|
||||||
|
x86_64-solaris = {
|
||||||
|
version = "1.2.7";
|
||||||
|
system = "x86-64-solaris";
|
||||||
|
sha256 = "05c12fmac4ha72k1ckl6i780rckd7jh4g5s5hiic7fjxnf1kx8d0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
sbclBootstrap = callPackage ./bootstrap.nix {
|
||||||
|
cfg = bootstrapBinaries.${stdenv.hostPlatform.system};
|
||||||
|
};
|
||||||
|
bootstrapLisp =
|
||||||
|
if (builtins.hasAttr stdenv.hostPlatform.system bootstrapBinaries)
|
||||||
|
then "${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit"
|
||||||
|
else "${clisp}/bin/clisp -E UTF-8 --silent -norc";
|
||||||
|
|
||||||
in with versionMap.${version};
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "sbcl";
|
pname = "sbcl";
|
||||||
@ -35,7 +88,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${pname}-${version}-source.tar.bz2";
|
url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${pname}-${version}-source.tar.bz2";
|
||||||
inherit sha256;
|
inherit (versionMap.${version}) sha256;
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ texinfo ];
|
nativeBuildInputs = [ texinfo ];
|
||||||
@ -108,7 +161,7 @@ stdenv.mkDerivation rec {
|
|||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
|
|
||||||
sh make.sh --prefix=$out --xc-host="${sbclBootstrapHost}" ${
|
sh make.sh --prefix=$out --xc-host="${bootstrapLisp}" ${
|
||||||
lib.concatStringsSep " "
|
lib.concatStringsSep " "
|
||||||
(builtins.map (x: "--with-${x}") enableFeatures ++
|
(builtins.map (x: "--with-${x}") enableFeatures ++
|
||||||
builtins.map (x: "--without-${x}") disableFeatures)
|
builtins.map (x: "--without-${x}") disableFeatures)
|
||||||
@ -142,5 +195,11 @@ stdenv.mkDerivation rec {
|
|||||||
}
|
}
|
||||||
'');
|
'');
|
||||||
|
|
||||||
meta = sbclBootstrap.meta;
|
meta = with lib; {
|
||||||
|
description = "Lisp compiler";
|
||||||
|
homepage = "https://sbcl.org";
|
||||||
|
license = licenses.publicDomain; # and FreeBSD
|
||||||
|
maintainers = lib.teams.lisp.members;
|
||||||
|
platforms = attrNames bootstrapBinaries;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,59 +1,12 @@
|
|||||||
{ lib, stdenv, fetchurl, makeWrapper }:
|
{ lib, stdenv, fetchurl, makeWrapper, cfg }:
|
||||||
|
|
||||||
let
|
|
||||||
options = rec {
|
|
||||||
aarch64-darwin = {
|
|
||||||
version = "2.1.2";
|
|
||||||
system = "arm64-darwin";
|
|
||||||
sha256 = "sha256-H0ALigXcWIypdA+fTf7jERscwbb7QIAfcoxCtGDh0RU=";
|
|
||||||
};
|
|
||||||
x86_64-darwin = {
|
|
||||||
version = "2.2.9";
|
|
||||||
system = "x86-64-darwin";
|
|
||||||
sha256 = "sha256-b1BLkoLIOELAYBYA9eBmMgm1OxMxJewzNP96C9ADfKY=";
|
|
||||||
};
|
|
||||||
x86_64-linux = {
|
|
||||||
version = "1.3.16";
|
|
||||||
system = "x86-64-linux";
|
|
||||||
sha256 = "0sq2dylwwyqfwkbdvcgqwz3vay9v895zpb0fyzsiwy31d1x9pr2s";
|
|
||||||
};
|
|
||||||
i686-linux = {
|
|
||||||
version = "1.2.7";
|
|
||||||
system = "x86-linux";
|
|
||||||
sha256 = "07f3bz4br280qvn85i088vpzj9wcz8wmwrf665ypqx181pz2ai3j";
|
|
||||||
};
|
|
||||||
aarch64-linux = {
|
|
||||||
version = "1.3.16";
|
|
||||||
system = "arm64-linux";
|
|
||||||
sha256 = "0q1brz9c49xgdljzfx8rpxxnlwhadxkcy5kg0mcd9wnxygind1cl";
|
|
||||||
};
|
|
||||||
armv7l-linux = {
|
|
||||||
version = "1.2.14";
|
|
||||||
system = "armhf-linux";
|
|
||||||
sha256 = "0sp5445rbvms6qvzhld0kwwvydw51vq5iaf4kdqsf2d9jvaz3yx5";
|
|
||||||
};
|
|
||||||
armv6l-linux = armv7l-linux;
|
|
||||||
x86_64-freebsd = {
|
|
||||||
version = "1.2.7";
|
|
||||||
system = "x86-64-freebsd";
|
|
||||||
sha256 = "14k42xiqd2rrim4pd5k5pjcrpkac09qnpynha8j1v4jngrvmw7y6";
|
|
||||||
};
|
|
||||||
x86_64-solaris = {
|
|
||||||
version = "1.2.7";
|
|
||||||
system = "x86-64-solaris";
|
|
||||||
sha256 = "05c12fmac4ha72k1ckl6i780rckd7jh4g5s5hiic7fjxnf1kx8d0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cfg = options.${stdenv.hostPlatform.system};
|
|
||||||
in
|
|
||||||
assert builtins.hasAttr stdenv.hostPlatform.system options;
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "sbcl-bootstrap";
|
pname = "sbcl-bootstrap";
|
||||||
version = cfg.version;
|
inherit (cfg) version;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/project/sbcl/sbcl/${version}/sbcl-${version}-${cfg.system}-binary.tar.bz2";
|
url = "mirror://sourceforge/project/sbcl/sbcl/${version}/sbcl-${version}-${cfg.system}-binary.tar.bz2";
|
||||||
sha256 = cfg.sha256;
|
inherit (cfg) sha256;
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
@ -73,12 +26,4 @@ stdenv.mkDerivation rec {
|
|||||||
postFixup = lib.optionalString (!stdenv.isAarch32 && stdenv.isLinux) ''
|
postFixup = lib.optionalString (!stdenv.isAarch32 && stdenv.isLinux) ''
|
||||||
patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/share/sbcl/sbcl
|
patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $out/share/sbcl/sbcl
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Lisp compiler";
|
|
||||||
homepage = "http://www.sbcl.org";
|
|
||||||
license = licenses.publicDomain; # and FreeBSD
|
|
||||||
maintainers = lib.teams.lisp.members;
|
|
||||||
platforms = attrNames options;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -26063,10 +26063,6 @@ with pkgs;
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Steel Bank Common Lisp
|
# Steel Bank Common Lisp
|
||||||
sbclBootstrap = wrapLisp {
|
|
||||||
pkg = callPackage ../development/compilers/sbcl/bootstrap.nix {};
|
|
||||||
faslExt = "fasl";
|
|
||||||
};
|
|
||||||
sbcl_2_3_8 = wrapLisp {
|
sbcl_2_3_8 = wrapLisp {
|
||||||
pkg = callPackage ../development/compilers/sbcl/2.x.nix { version = "2.3.8"; };
|
pkg = callPackage ../development/compilers/sbcl/2.x.nix { version = "2.3.8"; };
|
||||||
faslExt = "fasl";
|
faslExt = "fasl";
|
||||||
|
Loading…
Reference in New Issue
Block a user