summary refs log tree commit diff
path: root/pkgs/development/interpreters
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2018-01-20 10:05:27 +0100
committerVladimír Čunát <vcunat@gmail.com>2018-01-20 10:05:27 +0100
commit94f4857bc507b59d930dba72a9c643878ae854d2 (patch)
tree956a16d79a4bd43e83105308c631f8774223cd5a /pkgs/development/interpreters
parent5fafb7ef739ccf36ba7914eb522471e91af4c431 (diff)
parentb81c65ce0a4c671db405890bcefd7f17dcb3eb9c (diff)
downloadnixlib-94f4857bc507b59d930dba72a9c643878ae854d2.tar
nixlib-94f4857bc507b59d930dba72a9c643878ae854d2.tar.gz
nixlib-94f4857bc507b59d930dba72a9c643878ae854d2.tar.bz2
nixlib-94f4857bc507b59d930dba72a9c643878ae854d2.tar.lz
nixlib-94f4857bc507b59d930dba72a9c643878ae854d2.tar.xz
nixlib-94f4857bc507b59d930dba72a9c643878ae854d2.tar.zst
nixlib-94f4857bc507b59d930dba72a9c643878ae854d2.zip
Merge branch 'master' into staging
Hydra: ?compare=1427817
Diffstat (limited to 'pkgs/development/interpreters')
-rw-r--r--pkgs/development/interpreters/perl/default.nix40
-rw-r--r--pkgs/development/interpreters/pixie/default.nix9
-rw-r--r--pkgs/development/interpreters/pixie/dust.nix2
3 files changed, 36 insertions, 15 deletions
diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix
index 62c63ef6c5c3..14a4bac47f62 100644
--- a/pkgs/development/interpreters/perl/default.nix
+++ b/pkgs/development/interpreters/perl/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurlBoot, enableThreading ? stdenv ? glibc }:
+{ lib, stdenv, fetchurlBoot, buildPackages, enableThreading ? stdenv ? glibc }:
 
 with lib;
 
@@ -19,7 +19,8 @@ let
   libc = if stdenv.cc.libc or null != null then stdenv.cc.libc else "/usr";
   libcInc = lib.getDev libc;
   libcLib = lib.getLib libc;
-  common = { version, sha256 }: stdenv.mkDerivation rec {
+  crossCompiling = stdenv.buildPlatform != stdenv.hostPlatform;
+  common = { version, sha256 }: stdenv.mkDerivation (rec {
     name = "perl-${version}";
 
     src = fetchurlBoot {
@@ -50,6 +51,8 @@ let
       pwd="$(type -P pwd)"
       substituteInPlace dist/PathTools/Cwd.pm \
         --replace "/bin/pwd" "$pwd"
+    '' + stdenv.lib.optionalString crossCompiling ''
+      substituteInPlace cnf/configure_tool.sh --replace "cc -E -P" "cc -E"
     '';
 
     # Build a thread-safe Perl with a dynamic libperls.o.  We need the
@@ -58,8 +61,10 @@ let
     # contains the string "perl", Configure would select $out/lib.
     # Miniperl needs -lm. perl needs -lrt.
     configureFlags =
-      [ "-de"
-        "-Dcc=cc"
+      (if crossCompiling
+       then [ "-Dlibpth=\"\"" "-Dglibpth=\"\"" ]
+       else [ "-de" "-Dcc=cc" ])
+      ++ [
         "-Uinstallusrbinperl"
         "-Dinstallstyle=lib/perl5"
         "-Duseshrplib"
@@ -69,14 +74,13 @@ let
       ++ optional stdenv.isSunOS "-Dcc=gcc"
       ++ optional enableThreading "-Dusethreads";
 
-    configureScript = "${stdenv.shell} ./Configure";
+    configureScript = stdenv.lib.optionalString (!crossCompiling) "${stdenv.shell} ./Configure";
 
-    dontAddPrefix = true;
+    dontAddPrefix = !crossCompiling;
 
-    enableParallelBuilding = true;
+    enableParallelBuilding = !crossCompiling;
 
-    preConfigure =
-      ''
+    preConfigure = optionalString (!crossCompiling) ''
         configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3"
       '' + optionalString (stdenv.isArm || stdenv.isMips) ''
         configureFlagsArray=(-Dldflags="-lm -lrt")
@@ -121,7 +125,23 @@ let
       maintainers = [ maintainers.eelco ];
       platforms = platforms.all;
     };
-  };
+  } // stdenv.lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) rec {
+    crossVersion = "1.1.8";
+
+    perl-cross-src = fetchurlBoot {
+      url = "https://github.com/arsv/perl-cross/releases/download/${crossVersion}/perl-cross-${crossVersion}.tar.gz";
+      sha256 = "072j491rpz2qx2sngbg4flqh4lx5865zyql7b9lqm6s1kknjdrh8";
+    };
+
+    nativeBuildInputs = [ buildPackages.stdenv.cc ];
+
+    postUnpack = ''
+      unpackFile ${perl-cross-src}
+      cp -R perl-cross-${crossVersion}/* perl-${version}/
+    '';
+
+    configurePlatforms = [ "build" "host" "target" ];
+  });
 in rec {
   perl = perl524;
 
diff --git a/pkgs/development/interpreters/pixie/default.nix b/pkgs/development/interpreters/pixie/default.nix
index b196af8e3ae4..d41977b4f5cc 100644
--- a/pkgs/development/interpreters/pixie/default.nix
+++ b/pkgs/development/interpreters/pixie/default.nix
@@ -63,15 +63,15 @@ let
       mkdir -p $out/share $out/bin
       cp pixie-src/pixie-vm $out/share/pixie-vm
       cp -R pixie-src/pixie $out/share/pixie
-      makeWrapper $out/share/pixie-vm $out/bin/pixie-vm \
+      makeWrapper $out/share/pixie-vm $out/bin/pixie \
         --prefix LD_LIBRARY_PATH : ${library-path} \
         --prefix C_INCLUDE_PATH : ${include-path} \
         --prefix LIBRARY_PATH : ${library-path} \
         --prefix PATH : ${bin-path}
       cat > $out/bin/pxi <<EOF
       #!$shell
-      >&2 echo "[\$\$] WARNING: 'pxi' is a deprecated alias for 'pixie-vm', please update your scripts."
-      exec $out/bin/pixie-vm "\$@"
+      >&2 echo "[\$\$] WARNING: 'pxi' and 'pixie-vm' are deprecated aliases for 'pixie', please update your scripts."
+      exec $out/bin/pixie "\$@"
       EOF
       chmod +x $out/bin/pxi
     '';
@@ -79,7 +79,8 @@ let
       description = "A clojure-like lisp, built with the pypy vm toolkit";
       homepage = https://github.com/pixie-lang/pixie;
       license = stdenv.lib.licenses.lgpl3;
-      platforms = ["x86_64-linux" "i686-linux"];
+      platforms = ["x86_64-linux" "i686-linux" "x86_64-darwin"];
+      maintainers = with stdenv.lib.maintainers; [ bendlas ];
     };
   };
 in build (builtins.getAttr variant variants)
diff --git a/pkgs/development/interpreters/pixie/dust.nix b/pkgs/development/interpreters/pixie/dust.nix
index 34b471131938..4a7f3423defd 100644
--- a/pkgs/development/interpreters/pixie/dust.nix
+++ b/pkgs/development/interpreters/pixie/dust.nix
@@ -30,6 +30,6 @@ stdenv.mkDerivation rec {
     description = "Provides tooling around pixie, e.g. a nicer repl, running tests and fetching dependencies";
     homepage = src.meta.homepage;
     license = stdenv.lib.licenses.lgpl3;
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
   };
 }