Merge pull request #93347 from symphorien/spacetime

Ocaml spacetime support
This commit is contained in:
Silvan Mosberger 2020-08-22 16:38:54 +02:00 committed by GitHub
commit 1fe7fee592
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 2 deletions

View File

@ -10,20 +10,22 @@ let
safeX11 = stdenv: !(stdenv.isAarch32 || stdenv.isMips); safeX11 = stdenv: !(stdenv.isAarch32 || stdenv.isMips);
in in
{ stdenv, fetchurl, ncurses, buildEnv { stdenv, fetchurl, ncurses, buildEnv, libunwind
, libX11, xorgproto, useX11 ? safeX11 stdenv && !stdenv.lib.versionAtLeast version "4.09" , libX11, xorgproto, useX11 ? safeX11 stdenv && !stdenv.lib.versionAtLeast version "4.09"
, aflSupport ? false , aflSupport ? false
, flambdaSupport ? false , flambdaSupport ? false
, spaceTimeSupport ? false
}: }:
assert useX11 -> !stdenv.isAarch32 && !stdenv.isMips; assert useX11 -> !stdenv.isAarch32 && !stdenv.isMips;
assert aflSupport -> stdenv.lib.versionAtLeast version "4.05"; assert aflSupport -> stdenv.lib.versionAtLeast version "4.05";
assert flambdaSupport -> stdenv.lib.versionAtLeast version "4.03"; assert flambdaSupport -> stdenv.lib.versionAtLeast version "4.03";
assert spaceTimeSupport -> stdenv.lib.versionAtLeast version "4.04";
let let
useNativeCompilers = !stdenv.isMips; useNativeCompilers = !stdenv.isMips;
inherit (stdenv.lib) optional optionals optionalString; inherit (stdenv.lib) optional optionals optionalString;
name = "ocaml${optionalString aflSupport "+afl"}${optionalString flambdaSupport "+flambda"}-${version}"; name = "ocaml${optionalString aflSupport "+afl"}${optionalString spaceTimeSupport "+spacetime"}${optionalString flambdaSupport "+flambda"}-${version}";
in in
let let
@ -53,11 +55,13 @@ stdenv.mkDerivation (args // {
[ "-x11lib" x11lib "-x11include" x11inc ]) [ "-x11lib" x11lib "-x11include" x11inc ])
++ optional aflSupport (flags "--with-afl" "-afl-instrument") ++ optional aflSupport (flags "--with-afl" "-afl-instrument")
++ optional flambdaSupport (flags "--enable-flambda" "-flambda") ++ optional flambdaSupport (flags "--enable-flambda" "-flambda")
++ optional spaceTimeSupport (flags "--enable-spacetime" "-spacetime")
; ;
buildFlags = [ "world" ] ++ optionals useNativeCompilers [ "bootstrap" "world.opt" ]; buildFlags = [ "world" ] ++ optionals useNativeCompilers [ "bootstrap" "world.opt" ];
buildInputs = optional (!stdenv.lib.versionAtLeast version "4.07") ncurses buildInputs = optional (!stdenv.lib.versionAtLeast version "4.07") ncurses
++ optionals useX11 [ libX11 xorgproto ]; ++ optionals useX11 [ libX11 xorgproto ];
propagatedBuildInputs = optional spaceTimeSupport libunwind;
installTargets = [ "install" ] ++ optional useNativeCompilers "installopt"; installTargets = [ "install" ] ++ optional useNativeCompilers "installopt";
preConfigure = optionalString (!stdenv.lib.versionAtLeast version "4.04") '' preConfigure = optionalString (!stdenv.lib.versionAtLeast version "4.04") ''
CAT=$(type -tp cat) CAT=$(type -tp cat)

View File

@ -43,6 +43,11 @@ stdenv.mkDerivation rec {
dontAddPrefix = true; dontAddPrefix = true;
preConfigure = '' preConfigure = ''
# increase stack space for spacetime variant of the compiler
# https://github.com/ocaml/ocaml/issues/7435
# but disallowed by darwin sandbox
ulimit -s unlimited || true
configureFlagsArray=( configureFlagsArray=(
--bindir=$out/bin --bindir=$out/bin
--libdir=$out/lib/ocaml/${ocaml.version}/site-lib --libdir=$out/lib/ocaml/${ocaml.version}/site-lib