summary refs log tree commit diff
path: root/pkgs/development/interpreters
diff options
context:
space:
mode:
authorRobin Gloster <mail@glob.in>2017-01-20 16:37:16 +0100
committerRobin Gloster <mail@glob.in>2017-01-20 16:37:16 +0100
commitc2738235854d441e49099b50ca1fc0dca18ef530 (patch)
tree138c12922f6c40a3da32925d0daf3923ca85c540 /pkgs/development/interpreters
parent3373a55cacb8117a53d5ea3b01241177a975fa0b (diff)
parent6b6553c768b35241930e18fecc9a0e5b95e209b6 (diff)
downloadnixlib-c2738235854d441e49099b50ca1fc0dca18ef530.tar
nixlib-c2738235854d441e49099b50ca1fc0dca18ef530.tar.gz
nixlib-c2738235854d441e49099b50ca1fc0dca18ef530.tar.bz2
nixlib-c2738235854d441e49099b50ca1fc0dca18ef530.tar.lz
nixlib-c2738235854d441e49099b50ca1fc0dca18ef530.tar.xz
nixlib-c2738235854d441e49099b50ca1fc0dca18ef530.tar.zst
nixlib-c2738235854d441e49099b50ca1fc0dca18ef530.zip
Merge remote-tracking branch 'upstream/master' into gcc-6
Diffstat (limited to 'pkgs/development/interpreters')
-rw-r--r--pkgs/development/interpreters/angelscript/default.nix4
-rw-r--r--pkgs/development/interpreters/ceptre/default.nix6
-rw-r--r--pkgs/development/interpreters/clisp/hg.nix97
-rw-r--r--pkgs/development/interpreters/elixir/default.nix4
-rw-r--r--pkgs/development/interpreters/erlang/R19.nix9
-rw-r--r--pkgs/development/interpreters/hy/default.nix22
-rw-r--r--pkgs/development/interpreters/maude/default.nix39
-rw-r--r--pkgs/development/interpreters/octave/default.nix6
-rw-r--r--pkgs/development/interpreters/php/default.nix21
-rw-r--r--pkgs/development/interpreters/python/cpython/2.7/boot.nix94
-rw-r--r--pkgs/development/interpreters/python/cpython/2.7/default.nix17
-rw-r--r--pkgs/development/interpreters/python/cpython/2.7/no-ldconfig.patch44
-rw-r--r--pkgs/development/interpreters/python/cpython/3.3/default.nix6
-rw-r--r--pkgs/development/interpreters/python/cpython/3.4/default.nix6
-rw-r--r--pkgs/development/interpreters/python/cpython/3.5/default.nix6
-rw-r--r--pkgs/development/interpreters/python/cpython/3.6/default.nix10
-rw-r--r--pkgs/development/interpreters/python/pypy/2.7/default.nix9
-rw-r--r--pkgs/development/interpreters/python/wrap-python.nix2
-rw-r--r--pkgs/development/interpreters/ruby/default.nix11
-rw-r--r--pkgs/development/interpreters/ruby/patchsets.nix5
-rw-r--r--pkgs/development/interpreters/ruby/rvm-patchsets.nix6
-rw-r--r--pkgs/development/interpreters/spidermonkey/31.nix5
-rw-r--r--pkgs/development/interpreters/spidermonkey/38.nix5
23 files changed, 359 insertions, 75 deletions
diff --git a/pkgs/development/interpreters/angelscript/default.nix b/pkgs/development/interpreters/angelscript/default.nix
index 16042091a47a..2608388e1526 100644
--- a/pkgs/development/interpreters/angelscript/default.nix
+++ b/pkgs/development/interpreters/angelscript/default.nix
@@ -3,10 +3,10 @@ let
   s = # Generated upstream information
   rec {
     baseName="angelscript";
-    version = "2.31.1";
+    version = "2.31.2";
     name="${baseName}-${version}";
     url="http://www.angelcode.com/angelscript/sdk/files/angelscript_${version}.zip";
-    sha256 = "00z0x2w1dnfd2h8xvmq3qy2n8gqxyi9gxwnsz0q420by8vnrljmh";
+    sha256 = "1cl1yg36ad4wq0vks4xg0hv7iyvq6yzsd4y1jng5qdf8qybq02qc";
   };
   buildInputs = [
     unzip
diff --git a/pkgs/development/interpreters/ceptre/default.nix b/pkgs/development/interpreters/ceptre/default.nix
index 1f25a2031f27..29d63f1d0048 100644
--- a/pkgs/development/interpreters/ceptre/default.nix
+++ b/pkgs/development/interpreters/ceptre/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchgit, mlton }:
 
 stdenv.mkDerivation rec {
-  name = "ceptre-2016-01-01";
+  name = "ceptre-2016-11-27";
 
   src = fetchgit {
     url = https://github.com/chrisamaphone/interactive-lp;
-    rev = "b3d21489d4994f03d2982de273eea90bc7fba5d0";
-    sha256 = "1qpyasr3jg4i2x547yq1dzksvjagvnrmkdd00s108wvw9npc2jj1";
+    rev = "e436fda2ccd44e9c9d226feced9d204311deacf5";
+    sha256 = "174pxfnw3qyn2w8qxmx45fa68iddf106mkfi0kcmyqxzsc9jprh8";
   };
 
   nativeBuildInputs = [ mlton ];
diff --git a/pkgs/development/interpreters/clisp/hg.nix b/pkgs/development/interpreters/clisp/hg.nix
new file mode 100644
index 000000000000..b4930e7d57d6
--- /dev/null
+++ b/pkgs/development/interpreters/clisp/hg.nix
@@ -0,0 +1,97 @@
+# there are the following linking sets:
+# - boot (not installed): without modules, only used when building clisp
+# - base (default): contains readline and i18n, regexp and syscalls modules
+#   by default
+# - full: contains base plus modules in withModules
+{ stdenv, fetchhg, libsigsegv, gettext, ncurses, readline, libX11
+, libXau, libXt, pcre, zlib, libXpm, xproto, libXext, xextproto
+, libffi
+, libffcall
+, coreutils
+# build options
+, threadSupport ? (stdenv.isi686 || stdenv.isx86_64)
+, x11Support ? (stdenv.isi686 || stdenv.isx86_64)
+, dllSupport ? true
+, withModules ? [
+    "pcre"
+    "rawsock"
+  ]
+  ++ stdenv.lib.optionals stdenv.isLinux [ "bindings/glibc" "zlib" ]
+  ++ stdenv.lib.optional x11Support "clx/new-clx"
+}:
+
+assert x11Support -> (libX11 != null && libXau != null && libXt != null
+  && libXpm != null && xproto != null && libXext != null && xextproto != null);
+
+stdenv.mkDerivation rec {
+  v = "2.50pre20161201";
+  name = "clisp-${v}";
+
+  src = fetchhg {
+    url = "http://hg.code.sf.net/p/clisp/clisp";
+    rev = "536a48";
+    sha256 = "097igsfpn8xipnjapyf5hx6smzh04v4ncskxl747xxn6pgpq813z";
+  };
+
+  inherit libsigsegv gettext coreutils;
+
+  ffcallAvailable = stdenv.isLinux && (libffcall != null);
+
+  buildInputs = [libsigsegv]
+  ++ stdenv.lib.optional (gettext != null) gettext
+  ++ stdenv.lib.optional (ncurses != null) ncurses
+  ++ stdenv.lib.optional (pcre != null) pcre
+  ++ stdenv.lib.optional (zlib != null) zlib
+  ++ stdenv.lib.optional (readline != null) readline
+  ++ stdenv.lib.optional (ffcallAvailable && (libffi != null)) libffi
+  ++ stdenv.lib.optional ffcallAvailable libffcall
+  ++ stdenv.lib.optionals x11Support [
+    libX11 libXau libXt libXpm xproto libXext xextproto
+  ];
+
+  # First, replace port 9090 (rather low, can be used)
+  # with 64237 (much higher, IANA private area, not
+  # anything rememberable).
+  # Also remove reference to a type that disappeared from recent glibc
+  # (seems the correct thing to do, found no reference to any solution)
+  postPatch = ''
+    sed -e 's@9090@64237@g' -i tests/socket.tst
+    sed -i 's@/bin/pwd@${coreutils}&@' src/clisp-link.in
+    find . -type f | xargs sed -e 's/-lICE/-lXau &/' -i
+
+    substituteInPlace modules/bindings/glibc/linux.lisp --replace "(def-c-type __swblk_t)" ""
+  '';
+
+  configureFlags = "builddir"
+  + stdenv.lib.optionalString (!dllSupport) " --without-dynamic-modules"
+  + stdenv.lib.optionalString (readline != null) " --with-readline"
+  # --with-dynamic-ffi can only exist with --with-ffcall - foreign.d does not compile otherwise
+  + stdenv.lib.optionalString (ffcallAvailable && (libffi != null)) " --with-dynamic-ffi"
+  + stdenv.lib.optionalString ffcallAvailable " --with-ffcall"
+  + stdenv.lib.optionalString (!ffcallAvailable) " --without-ffcall"
+  + stdenv.lib.concatMapStrings (x: " --with-module=" + x) withModules
+  + stdenv.lib.optionalString threadSupport " --with-threads=POSIX_THREADS";
+
+  preBuild = ''
+    sed -e '/avcall.h/a\#include "config.h"' -i src/foreign.d
+    cd builddir
+  '';
+
+  postInstall =
+    stdenv.lib.optionalString (withModules != [])
+      (''./clisp-link add "$out"/lib/clisp*/base "$(dirname "$out"/lib/clisp*/base)"/full''
+      + stdenv.lib.concatMapStrings (x: " " + x) withModules);
+
+  NIX_CFLAGS_COMPILE = "-O0 ${stdenv.lib.optionalString (!stdenv.is64bit) "-falign-functions=4"}";
+
+  # TODO : make mod-check fails
+  doCheck = false;
+
+  meta = {
+    description = "ANSI Common Lisp Implementation";
+    homepage = http://clisp.cons.org;
+    maintainers = with stdenv.lib.maintainers; [raskin tohl];
+    # problems on Darwin: https://github.com/NixOS/nixpkgs/issues/20062
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/interpreters/elixir/default.nix b/pkgs/development/interpreters/elixir/default.nix
index 6999ee07e3d0..2d27185a9fca 100644
--- a/pkgs/development/interpreters/elixir/default.nix
+++ b/pkgs/development/interpreters/elixir/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   name = "elixir-${version}";
-  version = "1.3.3";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "elixir-lang";
     repo = "elixir";
     rev = "v${version}";
-    sha256 = "1l4ff3awil1nzrgd4pv4bx6n9ml83ci4czplv03yfz18q7jbipq2";
+    sha256 = "1q05f1s581nk475a8d9hakh2irgvsg50x3084yjzhrcmmykwnysi";
   };
 
   buildInputs = [ erlang rebar makeWrapper ];
diff --git a/pkgs/development/interpreters/erlang/R19.nix b/pkgs/development/interpreters/erlang/R19.nix
index 824c68688803..d08c4e517cb7 100644
--- a/pkgs/development/interpreters/erlang/R19.nix
+++ b/pkgs/development/interpreters/erlang/R19.nix
@@ -21,7 +21,7 @@ with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "erlang-" + version + "${optionalString odbcSupport "-odbc"}"
   + "${optionalString javacSupport "-javac"}";
-  version = "19.1.6";
+  version = "19.2";
 
   # Minor OTP releases are not always released as tarbals at
   # http://erlang.org/download/ So we have to download from
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
     owner = "erlang";
     repo = "otp";
     rev = "OTP-${version}";
-    sha256 = "120dqi8h2fwqfmh9g2nmkf153zlglzw9kkddz57xqvqq5arcs72y";
+    sha256 = "06pr4ydrqpp1skx85zjb1an4kvzv6vacb771vy71k54j7w6lh9hk";
   };
 
   buildInputs =
@@ -43,6 +43,11 @@ stdenv.mkDerivation rec {
 
   debugInfo = enableDebugInfo;
 
+  prePatch = ''
+    substituteInPlace configure.in \
+      --replace '`sw_vers -productVersion`' '10.10'
+  '';
+
   preConfigure = ''
     ./otp_build autoconf
   '';
diff --git a/pkgs/development/interpreters/hy/default.nix b/pkgs/development/interpreters/hy/default.nix
new file mode 100644
index 000000000000..e1ce01b59068
--- /dev/null
+++ b/pkgs/development/interpreters/hy/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  name = "hy-${version}";
+  version = "0.11.1";
+
+  src = fetchurl {
+    url = "mirror://pypi/h/hy/${name}.tar.gz";
+    sha256 = "1msqv747iz12r73mz4qvsmlwkddwjvrahlrk7ysrcz07h7dsscxs";
+  };
+
+  buildInputs = [ pythonPackages.appdirs ];
+  propagatedBuildInputs = [ pythonPackages.clint pythonPackages.astor pythonPackages.rply ];
+
+  meta = {
+    description = "A LISP dialect embedded in Python";
+    homepage = http://hylang.org/;
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.nixy ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/interpreters/maude/default.nix b/pkgs/development/interpreters/maude/default.nix
index 13403d50759a..7632784463fa 100644
--- a/pkgs/development/interpreters/maude/default.nix
+++ b/pkgs/development/interpreters/maude/default.nix
@@ -1,27 +1,38 @@
-{ stdenv, fetchurl, flex, bison, ncurses, buddy, tecla, libsigsegv, gmpxx, makeWrapper }:
+{ stdenv, fetchurl, unzip, makeWrapper , flex, bison, ncurses, buddy, tecla
+, libsigsegv, gmpxx, cvc4, cln
+}:
 
-stdenv.mkDerivation rec {
-  name = "maude-2.6";
+let
 
-  src = fetchurl {
-    url = "http://maude.cs.uiuc.edu/download/current/Maude-2.6.tar.gz";
-    sha256 = "182abzhvjvlaa21aqv7802v3bs57a4dm7cw09s3mqmih7nzpkfm5";
-  };
+  version = "2.7.1";
 
   fullMaude = fetchurl {
-    url = "https://full-maude.googlecode.com/git/full-maude261h.maude";
-    sha256 = "0xx8bfn6arsa75m5vhp5lmpazgfw230ssq33h9vifswlvzzc81ha";
+    url = "http://maude.cs.illinois.edu/w/images/c/ca/Full-Maude-${version}.zip";
+    sha256 = "0y4gn7n8vh24r24vckhpkd46hb5hqsbrm4w9zr6dz4paafq12fjc";
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "maude-${version}";
+
+  src = fetchurl {
+    url = "http://maude.cs.illinois.edu/w/images/d/d8/Maude-${version}.tar.gz";
+    sha256 = "0jskn5dm8vvbd3mlryjxdb6wfpkvyx174wk7ci9a31aylxzpr25i";
   };
 
-  buildInputs = [flex bison ncurses buddy tecla gmpxx libsigsegv makeWrapper];
+  buildInputs = [
+    flex bison ncurses buddy tecla gmpxx libsigsegv makeWrapper unzip cvc4 cln
+  ];
 
   hardeningDisable = [ "stackprotector" ] ++
     stdenv.lib.optionals stdenv.isi686 [ "pic" "fortify" ];
 
   preConfigure = ''
     configureFlagsArray=(
-      --datadir=$out/share/maude
+      --datadir="$out/share/maude"
       TECLA_LIBS="-ltecla -lncursesw"
+      LIBS="-lcln"
       CFLAGS="-O3" CXXFLAGS="-O3"
     )
   '';
@@ -30,12 +41,12 @@ stdenv.mkDerivation rec {
 
   postInstall = ''
     for n in "$out/bin/"*; do wrapProgram "$n" --suffix MAUDE_LIB ':' "$out/share/maude"; done
-    mkdir -p $out/share/maude
-    cp ${fullMaude} -d $out/share/maude/full-maude.maude
+    unzip ${fullMaude}
+    install -D -m 444 full-maude.maude $out/share/maude/full-maude.maude
   '';
 
   meta = {
-    homepage = "http://maude.cs.uiuc.edu/";
+    homepage = "http://maude.cs.illinois.edu/";
     description = "High-level specification language";
     license = stdenv.lib.licenses.gpl2;
 
diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix
index 226f819ded93..904ad97648e0 100644
--- a/pkgs/development/interpreters/octave/default.nix
+++ b/pkgs/development/interpreters/octave/default.nix
@@ -18,11 +18,11 @@ let
 in
 
 stdenv.mkDerivation rec {
-  version = "4.0.3";
+  version = "4.2.0";
   name = "octave-${version}";
   src = fetchurl {
-    url = "mirror://gnu/octave/${name}.tar.xz";
-    sha256 = "11day29k4yfvxh4101x5yf26ld992x5n6qvmhjjk6mzsd26fqayw";
+    url = "mirror://gnu/octave/${name}.tar.gz";
+    sha256 = "0rsmg5i3b5yfvkvrl9mqvn3f2n1a6vqg45phpja1qlzkh8vsffs4";
   };
 
   buildInputs = [ gfortran readline ncurses perl flex texinfo qhull
diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix
index 1a5bed6d20b9..c261668edd26 100644
--- a/pkgs/development/interpreters/php/default.nix
+++ b/pkgs/development/interpreters/php/default.nix
@@ -38,6 +38,10 @@ let
           buildInputs = [apacheHttpd];
         };
 
+        embed = {
+          configureFlags = ["--enable-embed"];
+        };
+
         # Extensions
         imap = {
           configureFlags = [
@@ -230,6 +234,7 @@ let
         pdo_mysqlSupport = config.php.pdo_mysql or true;
         libxml2Support = config.php.libxml2 or true;
         apxs2Support = config.php.apxs2 or (!stdenv.isDarwin);
+        embedSupport = config.php.embed or false;
         bcmathSupport = config.php.bcmath or true;
         socketsSupport = config.php.sockets or true;
         curlSupport = config.php.curl or true;
@@ -263,13 +268,15 @@ let
 
       configurePhase = ''
         # Don't record the configure flags since this causes unnecessary
-        # runtime dependencies.
+        # runtime dependencies - except for php-embed, as uwsgi needs them.
+        ${lib.optionalString (!(config.php.embed or false)) ''
         for i in main/build-defs.h.in scripts/php-config.in; do
           substituteInPlace $i \
             --replace '@CONFIGURE_COMMAND@' '(omitted)' \
             --replace '@CONFIGURE_OPTIONS@' "" \
             --replace '@PHP_LDFLAGS@' ""
         done
+        ''}
 
         [[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin
         ./configure --with-config-file-scan-dir=/etc/php.d --with-config-file-path=$out/etc --prefix=$out $configureFlags
@@ -302,17 +309,17 @@ let
 
 in {
   php56 = generic {
-    version = "5.6.29";
-    sha256 = "1fr530x1hxpaf0gb1ayrs9a4xa9v14dfb4hn2560dgm7i96896s9";
+    version = "5.6.30";
+    sha256 = "01krq8r9xglq59x376zlg261yikckq179jmhnlcg3gqxza9w41d1";
   };
 
   php70 = generic {
-    version = "7.0.14";
-    sha256 = "0d0596vzpyw86a77smk799sxl4mh2wylzsvmrv8mzda21nd3di7v";
+    version = "7.0.15";
+    sha256 = "1nbxwj4yx30k77qibhmnx0rvqhia1zbkwi5ps5nzm0sn6d3zkj58";
   };
 
   php71 = generic {
-    version = "7.1.0";
-    sha256 = "0qcf4aahkiwypidw42pd5dz34n10296zgjfyh56lgcymxryzvg38";
+    version = "7.1.1";
+    sha256 = "1g3mqscxnsic9ypf641jhiyn95d4d1nz198539245v2lgffx74fp";
   };
 }
diff --git a/pkgs/development/interpreters/python/cpython/2.7/boot.nix b/pkgs/development/interpreters/python/cpython/2.7/boot.nix
new file mode 100644
index 000000000000..1fecdfdf560e
--- /dev/null
+++ b/pkgs/development/interpreters/python/cpython/2.7/boot.nix
@@ -0,0 +1,94 @@
+{ stdenv, fetchurl, CF, configd, coreutils }:
+
+with stdenv.lib;
+
+let
+
+  mkPaths = paths: {
+    C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths;
+    LIBRARY_PATH = makeLibraryPath paths;
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "python-boot-${version}";
+  version = "2.7.12";
+  libPrefix = "python2.7";
+
+  src = fetchurl {
+    url = "https://www.python.org/ftp/python/2.7.12/Python-${version}.tar.xz";
+    sha256 = "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp";
+  };
+
+  inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
+
+  LDFLAGS = optionalString (!stdenv.isDarwin) "-lgcc_s";
+  NIX_CFLAGS_COMPILE = optionalString stdenv.isDarwin "-msse2";
+
+  buildInputs = optionals stdenv.isDarwin [ CF configd ];
+
+  patches =
+    [ # Look in C_INCLUDE_PATH and LIBRARY_PATH for stuff.
+      ./search-path.patch
+
+      # Python recompiles a Python if the mtime stored *in* the
+      # pyc/pyo file differs from the mtime of the source file.  This
+      # doesn't work in Nix because Nix changes the mtime of files in
+      # the Nix store to 1.  So treat that as a special case.
+      ./nix-store-mtime.patch
+
+      # patch python to put zero timestamp into pyc
+      # if DETERMINISTIC_BUILD env var is set
+      ./deterministic-build.patch
+    ];
+
+  DETERMINISTIC_BUILD = 1;
+
+  preConfigure = ''
+      # Purity.
+      for i in /usr /sw /opt /pkg; do
+        substituteInPlace ./setup.py --replace $i /no-such-path
+      done
+    '' + optionalString (stdenv ? cc && stdenv.cc.libc != null) ''
+      for i in Lib/plat-*/regen; do
+        substituteInPlace $i --replace /usr/include/ ${stdenv.cc.libc}/include/
+      done
+    '' + optionalString stdenv.isDarwin ''
+      substituteInPlace configure --replace '`/usr/bin/arch`' '"i386"'
+      substituteInPlace Lib/multiprocessing/__init__.py \
+        --replace 'os.popen(comm)' 'os.popen("${coreutils}/bin/nproc")'
+    '';
+
+  configureFlags = [ "--enable-shared" "--with-threads" "--enable-unicode=ucs4" ]
+    ++ optionals stdenv.isCygwin [ "ac_cv_func_bind_textdomain_codeset=yes" ]
+    ++ optionals stdenv.isDarwin [ "--disable-toolbox-glue" ];
+
+  postInstall =
+    ''
+      ln -s $out/share/man/man1/{python2.7.1.gz,python.1.gz}
+
+      paxmark E $out/bin/python2.7
+
+      rm "$out"/lib/python*/plat-*/regen # refers to glibc.dev
+    '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "http://python.org";
+    description = "A high-level dynamically-typed programming language";
+    longDescription = ''
+      Python is a remarkably powerful dynamic programming language that
+      is used in a wide variety of application domains. Some of its key
+      distinguishing features include: clear, readable syntax; strong
+      introspection capabilities; intuitive object orientation; natural
+      expression of procedural code; full modularity, supporting
+      hierarchical packages; exception-based error handling; and very
+      high level dynamic data types.
+    '';
+    license = stdenv.lib.licenses.psfl;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = with stdenv.lib.maintainers; [ lnl7 chaoflow domenkozar ];
+  };
+}
diff --git a/pkgs/development/interpreters/python/cpython/2.7/default.nix b/pkgs/development/interpreters/python/cpython/2.7/default.nix
index 4a25382997c3..15b21b5bed9b 100644
--- a/pkgs/development/interpreters/python/cpython/2.7/default.nix
+++ b/pkgs/development/interpreters/python/cpython/2.7/default.nix
@@ -6,7 +6,7 @@
 , openssl
 , readline
 , sqlite
-, tcl ? null, tk ? null, xlibsWrapper ? null, libX11 ? null, x11Support ? false
+, tcl ? null, tk ? null, tix ? null, xlibsWrapper ? null, libX11 ? null, x11Support ? false
 , zlib
 , callPackage
 , self
@@ -28,7 +28,7 @@ with stdenv.lib;
 
 let
   majorVersion = "2.7";
-  minorVersion = "12";
+  minorVersion = "13";
   minorVersionSuffix = "";
   pythonVersion = majorVersion;
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
@@ -37,7 +37,7 @@ let
 
   src = fetchurl {
     url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
-    sha256 = "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp";
+    sha256 = "0cgpk3zk0fgpji59pb4zy9nzljr70qzgv1vpz5hq5xw2d2c47m9m";
   };
 
   hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false);
@@ -57,13 +57,6 @@ let
 
       ./properly-detect-curses.patch
 
-      # FIXME: get rid of this after the next release, when the commit referenced here makes
-      # it in. We need it until then because it breaks compilation of programs that use
-      # locale with clang 3.8 and higher.
-      (fetchpatch {
-        url    = "https://hg.python.org/cpython/raw-rev/e0ec3471cb09";
-        sha256 = "1jdgb70jw942r4kmr01qll7mk1di8jx0qiabmp20jhnmha246ivq";
-      })
     ] ++ optionals stdenv.isLinux [
 
       # Disable the use of ldconfig in ctypes.util.find_library (since
@@ -157,6 +150,10 @@ in stdenv.mkDerivation {
 
     setupHook = ./setup-hook.sh;
 
+    postPatch = optionalString (x11Support && (tix != null)) ''
+          substituteInPlace "Lib/lib-tk/Tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
+    '';
+
     postInstall =
       ''
         # needed for some packages, especially packages that backport
diff --git a/pkgs/development/interpreters/python/cpython/2.7/no-ldconfig.patch b/pkgs/development/interpreters/python/cpython/2.7/no-ldconfig.patch
index 44c38fb29534..2a6b2a20dd19 100644
--- a/pkgs/development/interpreters/python/cpython/2.7/no-ldconfig.patch
+++ b/pkgs/development/interpreters/python/cpython/2.7/no-ldconfig.patch
@@ -1,8 +1,18 @@
+From 6b0f329a9f37110020ca02b35c8125391ef282b7 Mon Sep 17 00:00:00 2001
+From: Frederik Rietdijk <fridh@fridh.nl>
+Date: Sat, 24 Dec 2016 15:56:10 +0100
+Subject: [PATCH] no ldconfig
+
+---
+ Lib/ctypes/util.py | 35 +----------------------------------
+ Lib/uuid.py        | 47 -----------------------------------------------
+ 2 files changed, 1 insertion(+), 81 deletions(-)
+
 diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
-index b2c514d..a6eca81 100644
+index ab10ec5..f253e34 100644
 --- a/Lib/ctypes/util.py
 +++ b/Lib/ctypes/util.py
-@@ -207,31 +207,7 @@ elif os.name == "posix":
+@@ -235,40 +235,7 @@ elif os.name == "posix":
      else:
  
          def _findSoname_ldconfig(name):
@@ -22,11 +32,20 @@ index b2c514d..a6eca81 100644
 -
 -            # XXX assuming GLIBC's ldconfig (with option -p)
 -            expr = r'\s+(lib%s\.[^\s]+)\s+\(%s' % (re.escape(name), abi_type)
--            f = os.popen('LC_ALL=C LANG=C /sbin/ldconfig -p 2>/dev/null')
+-
+-            env = dict(os.environ)
+-            env['LC_ALL'] = 'C'
+-            env['LANG'] = 'C'
+-            null = open(os.devnull, 'wb')
 -            try:
--                data = f.read()
--            finally:
--                f.close()
+-                with null:
+-                    p = subprocess.Popen(['/sbin/ldconfig', '-p'],
+-                                          stderr=null,
+-                                          stdout=subprocess.PIPE,
+-                                          env=env)
+-            except OSError:  # E.g. command not found
+-                return None
+-            [data, _] = p.communicate()
 -            res = re.search(expr, data)
 -            if not res:
 -                return None
@@ -36,16 +55,12 @@ index b2c514d..a6eca81 100644
          def find_library(name):
              return _findSoname_ldconfig(name) or _get_soname(_findLib_gcc(name))
 diff --git a/Lib/uuid.py b/Lib/uuid.py
-index 7432032..9829d18 100644
+index 7432032..05eeee5 100644
 --- a/Lib/uuid.py
 +++ b/Lib/uuid.py
-@@ -437,57 +437,7 @@ def _netbios_getnode():
-         return ((bytes[0]<<40L) + (bytes[1]<<32L) + (bytes[2]<<24L) +
-                 (bytes[3]<<16L) + (bytes[4]<<8L) + bytes[5])
+@@ -441,53 +441,6 @@ def _netbios_getnode():
  
--# Thanks to Thomas Heller for ctypes and for his help with its use here.
--
--# If ctypes is available, use it to find system routines for UUID generation.
+ # If ctypes is available, use it to find system routines for UUID generation.
  _uuid_generate_time = _UuidCreate = None
 -try:
 -    import ctypes, ctypes.util
@@ -97,3 +112,6 @@ index 7432032..9829d18 100644
  
  def _unixdll_getnode():
      """Get the hardware address on Unix using ctypes."""
+-- 
+2.11.0
+
diff --git a/pkgs/development/interpreters/python/cpython/3.3/default.nix b/pkgs/development/interpreters/python/cpython/3.3/default.nix
index 6a543a8a0ee0..3ab0de96704c 100644
--- a/pkgs/development/interpreters/python/cpython/3.3/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.3/default.nix
@@ -6,7 +6,7 @@
 , openssl
 , readline
 , sqlite
-, tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? false
+, tcl ? null, tk ? null, tix ? null, libX11 ? null, xproto ? null, x11Support ? false
 , zlib
 , callPackage
 , self
@@ -50,6 +50,10 @@ in stdenv.mkDerivation {
 
   NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
 
+  postPatch = optionalString (x11Support && (tix != null)) ''
+    substituteInPlace "Lib/tkinter/tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
+  '';
+
   preConfigure = ''
     for i in /usr /sw /opt /pkg; do	# improve purity
       substituteInPlace ./setup.py --replace $i /no-such-path
diff --git a/pkgs/development/interpreters/python/cpython/3.4/default.nix b/pkgs/development/interpreters/python/cpython/3.4/default.nix
index 623fa5d74f64..e081a60c6bc4 100644
--- a/pkgs/development/interpreters/python/cpython/3.4/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.4/default.nix
@@ -6,7 +6,7 @@
 , openssl
 , readline
 , sqlite
-, tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? false
+, tcl ? null, tk ? null, tix ? null, libX11 ? null, xproto ? null, x11Support ? false
 , zlib
 , callPackage
 , self
@@ -55,6 +55,10 @@ in stdenv.mkDerivation {
     substituteInPlace configure --replace '-Wl,-stack_size,1000000' ' '
   '';
 
+  postPatch = optionalString (x11Support && (tix != null)) ''
+    substituteInPlace "Lib/tkinter/tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
+  '';
+
   preConfigure = ''
     for i in /usr /sw /opt /pkg; do	# improve purity
       substituteInPlace ./setup.py --replace $i /no-such-path
diff --git a/pkgs/development/interpreters/python/cpython/3.5/default.nix b/pkgs/development/interpreters/python/cpython/3.5/default.nix
index 7172e429f236..92f9d66ea52d 100644
--- a/pkgs/development/interpreters/python/cpython/3.5/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.5/default.nix
@@ -6,7 +6,7 @@
 , openssl
 , readline
 , sqlite
-, tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? false
+, tcl ? null, tk ? null, tix ? null, libX11 ? null, xproto ? null, x11Support ? false
 , zlib
 , callPackage
 , self
@@ -55,6 +55,10 @@ in stdenv.mkDerivation {
     substituteInPlace configure --replace '-Wl,-stack_size,1000000' ' '
   '';
 
+  postPatch = optionalString (x11Support && (tix != null)) ''
+    substituteInPlace "Lib/tkinter/tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
+  '';
+
   preConfigure = ''
     for i in /usr /sw /opt /pkg; do	# improve purity
       substituteInPlace ./setup.py --replace $i /no-such-path
diff --git a/pkgs/development/interpreters/python/cpython/3.6/default.nix b/pkgs/development/interpreters/python/cpython/3.6/default.nix
index 4654a6e1cb61..795bd7467253 100644
--- a/pkgs/development/interpreters/python/cpython/3.6/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.6/default.nix
@@ -7,7 +7,7 @@
 , openssl
 , readline
 , sqlite
-, tcl ? null, tk ? null, libX11 ? null, xproto ? null, x11Support ? false
+, tcl ? null, tk ? null, tix ? null, libX11 ? null, xproto ? null, x11Support ? false
 , zlib
 , callPackage
 , self
@@ -25,7 +25,7 @@ with stdenv.lib;
 let
   majorVersion = "3.6";
   minorVersion = "0";
-  minorVersionSuffix = "rc1";
+  minorVersionSuffix = "";
   pythonVersion = majorVersion;
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
   libPrefix = "python${majorVersion}";
@@ -45,7 +45,7 @@ in stdenv.mkDerivation {
 
   src = fetchurl {
     url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
-    sha256 = "01sqzz5iq7law93zgdxkb8sv98a493a2wzslynz64cl3hhdqr1pw";
+    sha256 = "08inlbb2vb8lahw6wfq654lqk6l1x7ncpggp6a92vqw5yq2gkidh";
   };
 
   NIX_LDFLAGS = optionalString stdenv.isLinux "-lgcc_s";
@@ -55,6 +55,10 @@ in stdenv.mkDerivation {
     substituteInPlace configure --replace '-Wl,-stack_size,1000000' ' '
   '';
 
+  postPatch = optionalString (x11Support && (tix != null)) ''
+    substituteInPlace "Lib/tkinter/tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
+  '';
+
   preConfigure = ''
     for i in /usr /sw /opt /pkg; do	# improve purity
       substituteInPlace ./setup.py --replace $i /no-such-path
diff --git a/pkgs/development/interpreters/python/pypy/2.7/default.nix b/pkgs/development/interpreters/python/pypy/2.7/default.nix
index 1fd9eaee4303..163c3847db9b 100644
--- a/pkgs/development/interpreters/python/pypy/2.7/default.nix
+++ b/pkgs/development/interpreters/python/pypy/2.7/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, pkgconfig, libffi
-, sqlite, openssl, ncurses, python, expat, tcl, tk, xlibsWrapper, libX11
+, sqlite, openssl, ncurses, python, expat, tcl, tk, tix, xlibsWrapper, libX11
 , makeWrapper, callPackage, self, gdbm, db
 # For the Python package set
 , pkgs, packageOverrides ? (self: super: {})
@@ -8,8 +8,8 @@
 assert zlibSupport -> zlib != null;
 
 let
-  majorVersion = "5.4";
-  minorVersion = "1";
+  majorVersion = "5.6";
+  minorVersion = "0";
   minorVersionSuffix = "";
   pythonVersion = "2.7";
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
@@ -23,7 +23,7 @@ let
 
     src = fetchurl {
       url = "https://bitbucket.org/pypy/pypy/get/release-pypy${pythonVersion}-v${version}.tar.bz2";
-      sha256 = "1x8sa5x1nkrb8wrmicri94ji8kvyxihyryi8br5fk7gak0agcai0";
+      sha256 = "145a0kd5c0s1v2rpavw9ihncfb05s2x7chc70v8fssvyxq601911";
     };
 
    # http://bugs.python.org/issue27369
@@ -35,6 +35,7 @@ let
       };
       in ''
       patch lib-python/2.7/test/test_pyexpat.py < '${expatch}'
+      substituteInPlace "lib-python/2.7/lib-tk/Tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
     '';
 
     buildInputs = [ bzip2 openssl pkgconfig python libffi ncurses expat sqlite tk tcl xlibsWrapper libX11 makeWrapper gdbm db ]
diff --git a/pkgs/development/interpreters/python/wrap-python.nix b/pkgs/development/interpreters/python/wrap-python.nix
index b965ff5350b1..1efd777bb052 100644
--- a/pkgs/development/interpreters/python/wrap-python.nix
+++ b/pkgs/development/interpreters/python/wrap-python.nix
@@ -35,7 +35,7 @@ makeSetupHook {
           import sys
           import site
           import functools
-          sys.argv[0] = '"'$(basename "$f")'"'
+          sys.argv[0] = '"'$(readlink -f "$f")'"'
           functools.reduce(lambda k, p: site.addsitedir(p, k), ['"$([ -n "$program_PYTHONPATH" ] && (echo "'$program_PYTHONPATH'" | sed "s|:|','|g") || true)"'], site._init_pathinfo())
         '';
 
diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix
index 9486d030a8b4..d5f3a6d39902 100644
--- a/pkgs/development/interpreters/ruby/default.nix
+++ b/pkgs/development/interpreters/ruby/default.nix
@@ -113,6 +113,7 @@ let
 
         configureFlags = ["--enable-shared" "--enable-pthread"]
           ++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby"
+          ++ op (!docSupport) "--disable-install-doc"
           ++ ops stdenv.isDarwin [
             # on darwin, we have /usr/include/tk.h -- so the configure script detects
             # that tk is installed
@@ -154,7 +155,7 @@ let
           license = stdenv.lib.licenses.ruby;
           homepage = http://www.ruby-lang.org/en/;
           description = "The Ruby language";
-          maintainers = [ stdenv.lib.maintainers.vrthra ];
+          maintainers = with stdenv.lib.maintainers; [ vrthra manveru ];
           platforms = stdenv.lib.platforms.all;
         };
 
@@ -218,4 +219,12 @@ in {
       git = "0cwjf0nrzaa5g81bw0qp65byyadhxvbnvprkshv3ckjl7yi46zf6";
     };
   };
+
+  ruby_2_4_0 = generic {
+    version = rubyVersion "2" "4" "0" "";
+    sha256 = {
+      src = "0gcyn9328w2vma882l71c9v9ygmmsj2z8j1l44c4l2x92nyx0bqm";
+      git = "1w9zyx8xmka8jdiha57snnbfls2r6dc9g03d8cjx0nxkmwf3r2l3";
+    };
+  };
 }
diff --git a/pkgs/development/interpreters/ruby/patchsets.nix b/pkgs/development/interpreters/ruby/patchsets.nix
index d21e7d669dcc..a3aeaf6a8ba0 100644
--- a/pkgs/development/interpreters/ruby/patchsets.nix
+++ b/pkgs/development/interpreters/ruby/patchsets.nix
@@ -65,4 +65,9 @@ rec {
     "${patchSet}/patches/ruby/2.3/head/railsexpress/02-improve-gc-stats.patch"
     "${patchSet}/patches/ruby/2.3/head/railsexpress/03-display-more-detailed-stack-trace.patch"
   ];
+  "2.4.0" = ops useRailsExpress [
+    "${patchSet}/patches/ruby/2.4.0/railsexpress/01-skip-broken-tests.patch"
+    "${patchSet}/patches/ruby/2.4.0/railsexpress/02-improve-gc-stats.patch"
+    "${patchSet}/patches/ruby/2.4.0/railsexpress/03-display-more-detailed-stack-trace.patch"
+  ];
 }
diff --git a/pkgs/development/interpreters/ruby/rvm-patchsets.nix b/pkgs/development/interpreters/ruby/rvm-patchsets.nix
index bbe1038bab2f..51db26b78236 100644
--- a/pkgs/development/interpreters/ruby/rvm-patchsets.nix
+++ b/pkgs/development/interpreters/ruby/rvm-patchsets.nix
@@ -1,8 +1,8 @@
 { fetchFromGitHub }:
 
 fetchFromGitHub {
-  owner  = "skaes";
+  owner  = "manveru";
   repo   = "rvm-patchsets";
-  rev    = "951e47ca1022cd1e41de9177fa87438cfb72d127";
-  sha256 = "18n2frwmn6lcnjywysyjam1zfzfad0r50141xs2h9kifsyak5xcf";
+  rev    = "46e04f230ce91a786f5e583389443efec0ecd594";
+  sha256 = "0ayh8zj8knyz3344an942qdf33pi42jmksqk34frb346zi1ag693";
 }
diff --git a/pkgs/development/interpreters/spidermonkey/31.nix b/pkgs/development/interpreters/spidermonkey/31.nix
index 585ebc120d8e..ae3e742e2ef4 100644
--- a/pkgs/development/interpreters/spidermonkey/31.nix
+++ b/pkgs/development/interpreters/spidermonkey/31.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, perl, python2, zip, libffi, nspr, icu, readline }:
+{ stdenv, fetchurl, pkgconfig, gnused_422, perl, python2, zip, libffi, nspr, icu, readline }:
 
 stdenv.mkDerivation rec {
   version = "31.5.0";
@@ -13,7 +13,8 @@ stdenv.mkDerivation rec {
     sha256 = "1q8icql5hh1g3gzg5fp4rl9rfagyhm9gilfn3dgi7qn4i1mrfqsd";
   };
 
-  buildInputs = [ pkgconfig perl python2 zip libffi readline nspr icu ];
+  buildInputs = [ libffi readline nspr icu ];
+  nativeBuildInputs = [ pkgconfig perl python2 zip gnused_422 ];
 
   postUnpack = "sourceRoot=\${sourceRoot}/js/src";
 
diff --git a/pkgs/development/interpreters/spidermonkey/38.nix b/pkgs/development/interpreters/spidermonkey/38.nix
index 89c02f262001..b4823817d4b7 100644
--- a/pkgs/development/interpreters/spidermonkey/38.nix
+++ b/pkgs/development/interpreters/spidermonkey/38.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, perl, python2, zip, libffi, readline, icu, zlib, nspr }:
+{ stdenv, fetchurl, pkgconfig, gnused_422, perl, python2, zip, libffi, readline, icu, zlib, nspr }:
 
 stdenv.mkDerivation rec {
   version = "38.2.1.rc0";
@@ -13,7 +13,8 @@ stdenv.mkDerivation rec {
     sha256 = "0p4bmbpgkfsj54xschcny0a118jdrdgg0q29rwxigg3lh5slr681";
   };
 
-  buildInputs = [ pkgconfig perl python2 zip libffi readline icu zlib nspr ];
+  buildInputs = [ libffi readline icu zlib nspr ];
+  nativeBuildInputs = [ pkgconfig perl python2 zip gnused_422 ];
 
   postUnpack = "sourceRoot=\${sourceRoot}/js/src";