summary refs log tree commit diff
path: root/pkgs/top-level
diff options
context:
space:
mode:
authorPeter Simons <simons@cryp.to>2009-10-02 16:26:05 +0000
committerPeter Simons <simons@cryp.to>2009-10-02 16:26:05 +0000
commit67cea803fa668d04cf4a21091678034fafd9e0dc (patch)
treea8ac5163aa5bc995fcafab5ab68d666b2d2757b6 /pkgs/top-level
parent99fe875609b4e6e2e30d0f2d93b1a39cd0e96dd2 (diff)
downloadnixlib-67cea803fa668d04cf4a21091678034fafd9e0dc.tar
nixlib-67cea803fa668d04cf4a21091678034fafd9e0dc.tar.gz
nixlib-67cea803fa668d04cf4a21091678034fafd9e0dc.tar.bz2
nixlib-67cea803fa668d04cf4a21091678034fafd9e0dc.tar.lz
nixlib-67cea803fa668d04cf4a21091678034fafd9e0dc.tar.xz
nixlib-67cea803fa668d04cf4a21091678034fafd9e0dc.tar.zst
nixlib-67cea803fa668d04cf4a21091678034fafd9e0dc.zip
perl-5.8 and perl-5.10: fixed build on MacOS X
On MacOS X, we used to use the native perl interpreter from /usr/bin.
Unfortunately, that interpreter fails to build a number of packages
(Subversion, Git, etc. ...), because it assumes knowledge about the underlying
C compiler that is not valid for the compiler used by Nix. For example,
/usr/bin/perl assumes that the compiler can build binaries for both the ppc and
the x86 architecture. /usr/bin/FCC can do that, but the gcc from Nix can't.

The solution is to compile Perl 5.10 via Nix so that it can properly configure
itself. However, note that the resulting binary is impure: it will find headers
in /usr/include and libraries in /usr/lib -- something a pure perl binary
wouldn't do. In this respect our Nix-compiled perl binary is not better than
the native one from /usr/bin -- it's just more accurately configured.

svn path=/nixpkgs/trunk/; revision=17618
Diffstat (limited to 'pkgs/top-level')
-rw-r--r--pkgs/top-level/all-packages.nix15
1 files changed, 8 insertions, 7 deletions
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 538be82c612e..0433fff06aed 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2254,18 +2254,19 @@ let
     inherit (bleedingEdgeRepos) sourceByName;
   };
 
-  perl = if !stdenv.isLinux then sysPerl else perlReal;
+  supportsPerl = stdenv.isLinux || system == "i686-darwin";
 
-  perl58 = if !stdenv.isLinux then sysPerl else
+  perl = if !supportsPerl then sysPerl else
+    import ../development/interpreters/perl-5.10 {
+      fetchurl = fetchurlBoot;
+      inherit stdenv;
+  };
+
+  perl58 = if !supportsPerl then sysPerl else
     import ../development/interpreters/perl-5.8 {
       inherit fetchurl stdenv;
     };
 
-  perlReal = import ../development/interpreters/perl-5.10 {
-    fetchurl = fetchurlBoot;
-    inherit stdenv;
-  };
-
   # FIXME: unixODBC needs patching on Darwin (see darwinports)
   phpOld = import ../development/interpreters/php {
     inherit stdenv fetchurl flex bison libxml2 apacheHttpd;