Cleanup perl logic in stdenvLinux

Make thread disabling explicit.  This changes the semantics of the perl
derivation, so on other platforms it may require setting

  enableThreading = false

This commit doesn't change the derivation or out hash of stdenvLinux.
This commit is contained in:
Gergely Risko
2014-09-14 21:36:14 +02:00
parent fca5d864b6
commit c5df246ba9
3 changed files with 34 additions and 6 deletions
@@ -1,4 +1,16 @@
{ stdenv, fetchurl }:
{ stdenv, fetchurl, enableThreading ? true }:
# We can only compile perl with threading on platforms where we have a
# real glibc in the stdenv.
#
# Instead of silently building an unthreaded perl if this is not the
# case, we force callers to disableThreading explicitly, therefore
# documenting the platforms where the perl is not threaded.
#
# In the case of stdenv linux boot stage1 it's not possible to use
# threading because of the simpleness of the bootstrap glibc, so we
# use enableThreading = false there.
assert enableThreading -> (stdenv ? glibc);
let
@@ -42,7 +54,7 @@ stdenv.mkDerivation rec {
"-Dlocincpth=${libc}/include"
"-Dloclibpth=${libc}/lib"
]
++ optional (stdenv ? glibc) "-Dusethreads";
++ optional enableThreading "-Dusethreads";
configureScript = "${stdenv.shell} ./Configure";
@@ -1,4 +1,16 @@
{ stdenv, fetchurl }:
{ stdenv, fetchurl, enableThreading ? true }:
# We can only compile perl with threading on platforms where we have a
# real glibc in the stdenv.
#
# Instead of silently building an unthreaded perl if this is not the
# case, we force callers to disableThreading explicitly, therefore
# documenting the platforms where the perl is not threaded.
#
# In the case of stdenv linux boot stage1 it's not possible to use
# threading because of the simpleness of the bootstrap glibc, so we
# use enableThreading = false there.
assert enableThreading -> (stdenv ? glibc);
let
@@ -39,7 +51,7 @@ stdenv.mkDerivation rec {
"-Dlocincpth=${libc}/include"
"-Dloclibpth=${libc}/lib"
]
++ optional (stdenv ? glibc) "-Dusethreads";
++ optional enableThreading "-Dusethreads";
configureScript = "${stdenv.shell} ./Configure";