mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-29 14:57:28 +03:00
sbcl: add option to disable immobile space
Programs which generate and compile a lot of code at runtime (such as programming language interpreters like ACL2) are not suited for running on SBCL executables built with the "immobile space" feature, as explained by Douglas Katzman in this mail thread: https://sourceforge.net/p/sbcl/mailman/message/36007057/ In this commit, I add an optional flag to the SBCL package allowing you to disable the "immobile space" features. I also migrated away from specifying enabled/disabled features in a `customize-target-features.lisp` file and towards supplying them as command line arguments to `make.sh`, as has been recommended by the installation instructions since 2012 or so.
This commit is contained in:
parent
2a16738d41
commit
d78985704c
@ -1,6 +1,7 @@
|
|||||||
{ stdenv, fetchurl, writeText, sbclBootstrap
|
{ stdenv, fetchurl, writeText, sbclBootstrap
|
||||||
, sbclBootstrapHost ? "${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit"
|
, sbclBootstrapHost ? "${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit"
|
||||||
, threadSupport ? (stdenv.isi686 || stdenv.isx86_64 || "aarch64-linux" == stdenv.hostPlatform.system)
|
, threadSupport ? (stdenv.isi686 || stdenv.isx86_64 || "aarch64-linux" == stdenv.hostPlatform.system)
|
||||||
|
, disableImmobileSpace ? false
|
||||||
# Meant for sbcl used for creating binaries portable to non-NixOS via save-lisp-and-die.
|
# Meant for sbcl used for creating binaries portable to non-NixOS via save-lisp-and-die.
|
||||||
# Note that the created binaries still need `patchelf --set-interpreter ...`
|
# Note that the created binaries still need `patchelf --set-interpreter ...`
|
||||||
# to get rid of ${glibc} dependency.
|
# to get rid of ${glibc} dependency.
|
||||||
@ -21,17 +22,6 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
patchPhase = ''
|
patchPhase = ''
|
||||||
echo '"${version}.nixos"' > version.lisp-expr
|
echo '"${version}.nixos"' > version.lisp-expr
|
||||||
echo "
|
|
||||||
(lambda (features)
|
|
||||||
(flet ((enable (x)
|
|
||||||
(pushnew x features))
|
|
||||||
(disable (x)
|
|
||||||
(setf features (remove x features))))
|
|
||||||
''
|
|
||||||
+ (if threadSupport then "(enable :sb-thread)" else "(disable :sb-thread)")
|
|
||||||
+ stdenv.lib.optionalString stdenv.isAarch32 "(enable :arm)"
|
|
||||||
+ ''
|
|
||||||
)) " > customize-target-features.lisp
|
|
||||||
|
|
||||||
pwd
|
pwd
|
||||||
|
|
||||||
@ -80,8 +70,20 @@ stdenv.mkDerivation rec {
|
|||||||
export HOME=$PWD/test-home
|
export HOME=$PWD/test-home
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
enableFeatures = with stdenv.lib;
|
||||||
|
optional threadSupport "sb-thread" ++
|
||||||
|
optional stdenv.isAarch32 "arm";
|
||||||
|
|
||||||
|
disableFeatures = with stdenv.lib;
|
||||||
|
optional (!threadSupport) "sb-thread" ++
|
||||||
|
optionals disableImmobileSpace [ "immobile-space" "immobile-code" "compact-instance-header" ];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
sh make.sh --prefix=$out --xc-host="${sbclBootstrapHost}"
|
sh make.sh --prefix=$out --xc-host="${sbclBootstrapHost}" ${
|
||||||
|
stdenv.lib.concatStringsSep " "
|
||||||
|
(builtins.map (x: "--with-${x}") enableFeatures ++
|
||||||
|
builtins.map (x: "--without-${x}") disableFeatures)
|
||||||
|
}
|
||||||
(cd doc/manual ; make info)
|
(cd doc/manual ; make info)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
{ stdenv, fetchurl, writeText, sbclBootstrap
|
{ stdenv, fetchurl, writeText, sbclBootstrap
|
||||||
, sbclBootstrapHost ? "${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit"
|
, sbclBootstrapHost ? "${sbclBootstrap}/bin/sbcl --disable-debugger --no-userinit --no-sysinit"
|
||||||
, threadSupport ? (stdenv.isi686 || stdenv.isx86_64 || "aarch64-linux" == stdenv.hostPlatform.system)
|
, threadSupport ? (stdenv.isi686 || stdenv.isx86_64 || "aarch64-linux" == stdenv.hostPlatform.system)
|
||||||
|
, disableImmobileSpace ? false
|
||||||
# Meant for sbcl used for creating binaries portable to non-NixOS via save-lisp-and-die.
|
# Meant for sbcl used for creating binaries portable to non-NixOS via save-lisp-and-die.
|
||||||
# Note that the created binaries still need `patchelf --set-interpreter ...`
|
# Note that the created binaries still need `patchelf --set-interpreter ...`
|
||||||
# to get rid of ${glibc} dependency.
|
# to get rid of ${glibc} dependency.
|
||||||
@ -21,17 +22,6 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
patchPhase = ''
|
patchPhase = ''
|
||||||
echo '"${version}.nixos"' > version.lisp-expr
|
echo '"${version}.nixos"' > version.lisp-expr
|
||||||
echo "
|
|
||||||
(lambda (features)
|
|
||||||
(flet ((enable (x)
|
|
||||||
(pushnew x features))
|
|
||||||
(disable (x)
|
|
||||||
(setf features (remove x features))))
|
|
||||||
''
|
|
||||||
+ (if threadSupport then "(enable :sb-thread)" else "(disable :sb-thread)")
|
|
||||||
+ stdenv.lib.optionalString stdenv.isAarch32 "(enable :arm)"
|
|
||||||
+ ''
|
|
||||||
)) " > customize-target-features.lisp
|
|
||||||
|
|
||||||
pwd
|
pwd
|
||||||
|
|
||||||
@ -80,8 +70,20 @@ stdenv.mkDerivation rec {
|
|||||||
export HOME=$PWD/test-home
|
export HOME=$PWD/test-home
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
enableFeatures = with stdenv.lib;
|
||||||
|
optional threadSupport "sb-thread" ++
|
||||||
|
optional stdenv.isAarch32 "arm";
|
||||||
|
|
||||||
|
disableFeatures = with stdenv.lib;
|
||||||
|
optional (!threadSupport) "sb-thread" ++
|
||||||
|
optionals disableImmobileSpace [ "immobile-space" "immobile-code" "compact-instance-header" ];
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
sh make.sh --prefix=$out --xc-host="${sbclBootstrapHost}"
|
sh make.sh --prefix=$out --xc-host="${sbclBootstrapHost}" ${
|
||||||
|
stdenv.lib.concatStringsSep " "
|
||||||
|
(builtins.map (x: "--with-${x}") enableFeatures ++
|
||||||
|
builtins.map (x: "--without-${x}") disableFeatures)
|
||||||
|
}
|
||||||
(cd doc/manual ; make info)
|
(cd doc/manual ; make info)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user