diff options
author | Hraban Luyat <hraban@0brg.net> | 2023-10-24 00:06:05 -0400 |
---|---|---|
committer | Hraban Luyat <hraban@0brg.net> | 2023-10-25 23:31:05 -0400 |
commit | ea02d8a9a51734526dc88c422821a62db4fada94 (patch) | |
tree | 7e86e7d1993eb3bef24c4bb1ef3bef0dab2bbb7d /pkgs/development/compilers/sbcl | |
parent | 51d906d2341c9e866e48c2efcaac0f2d70bfd43e (diff) |
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.
Diffstat (limited to 'pkgs/development/compilers/sbcl')
-rw-r--r-- | pkgs/development/compilers/sbcl/2.x.nix | 71 | ||||
-rw-r--r-- | pkgs/development/compilers/sbcl/bootstrap.nix | 61 |
2 files changed, 68 insertions, 64 deletions
diff --git a/pkgs/development/compilers/sbcl/2.x.nix b/pkgs/development/compilers/sbcl/2.x.nix index a4de7b8b876fa..bd52b41dc8090 100644 --- a/pkgs/development/compilers/sbcl/2.x.nix +++ b/pkgs/development/compilers/sbcl/2.x.nix @@ -1,5 +1,4 @@ -{ lib, stdenv, fetchurl, fetchpatch, writeText, sbclBootstrap, zstd -, sbclBootstrapHost ? "${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit" +{ lib, stdenv, callPackage, clisp, fetchurl, fetchpatch, writeText, zstd , threadSupport ? (stdenv.hostPlatform.isx86 || "aarch64-linux" == stdenv.hostPlatform.system || "aarch64-darwin" == stdenv.hostPlatform.system) , linkableRuntime ? stdenv.hostPlatform.isx86 , disableImmobileSpace ? false @@ -26,8 +25,62 @@ let 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 { pname = "sbcl"; @@ -35,7 +88,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${pname}-${version}-source.tar.bz2"; - inherit sha256; + inherit (versionMap.${version}) sha256; }; nativeBuildInputs = [ texinfo ]; @@ -108,7 +161,7 @@ stdenv.mkDerivation rec { buildPhase = '' runHook preBuild - sh make.sh --prefix=$out --xc-host="${sbclBootstrapHost}" ${ + sh make.sh --prefix=$out --xc-host="${bootstrapLisp}" ${ lib.concatStringsSep " " (builtins.map (x: "--with-${x}") enableFeatures ++ 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; + }; } diff --git a/pkgs/development/compilers/sbcl/bootstrap.nix b/pkgs/development/compilers/sbcl/bootstrap.nix index 05634d0c83f33..e23557c5a62fc 100644 --- a/pkgs/development/compilers/sbcl/bootstrap.nix +++ b/pkgs/development/compilers/sbcl/bootstrap.nix @@ -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 { pname = "sbcl-bootstrap"; - version = cfg.version; + inherit (cfg) version; src = fetchurl { url = "mirror://sourceforge/project/sbcl/sbcl/${version}/sbcl-${version}-${cfg.system}-binary.tar.bz2"; - sha256 = cfg.sha256; + inherit (cfg) sha256; }; nativeBuildInputs = [ makeWrapper ]; @@ -73,12 +26,4 @@ stdenv.mkDerivation rec { postFixup = lib.optionalString (!stdenv.isAarch32 && stdenv.isLinux) '' 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; - }; } |