summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-08-14 11:38:00 +0200
committerEelco Dolstra <edolstra@gmail.com>2017-08-14 11:38:00 +0200
commit9eb901b70ddda39b714619804864f4d4c06a2edd (patch)
tree8cd3aa260535c7aad9c335cf54deef13c05a1cd0
parent62dac1bdd9b91a47eb7266bed94558cafd7ad07f (diff)
parent505e94256ef247dc5425068304583f8dc1b2064a (diff)
downloadnixpkgs-9eb901b70ddda39b714619804864f4d4c06a2edd.tar
nixpkgs-9eb901b70ddda39b714619804864f4d4c06a2edd.tar.gz
nixpkgs-9eb901b70ddda39b714619804864f4d4c06a2edd.tar.bz2
nixpkgs-9eb901b70ddda39b714619804864f4d4c06a2edd.tar.lz
nixpkgs-9eb901b70ddda39b714619804864f4d4c06a2edd.tar.xz
nixpkgs-9eb901b70ddda39b714619804864f4d4c06a2edd.tar.zst
nixpkgs-9eb901b70ddda39b714619804864f4d4c06a2edd.zip
Merge remote-tracking branch 'origin/gcc-6' into staging
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird/default.nix2
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird/gcc6.patch75
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix9
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gjs/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/gjs/src.nix6
-rw-r--r--pkgs/development/compilers/openjdk/8.nix20
-rw-r--r--pkgs/development/interpreters/guile/default.nix2
-rw-r--r--pkgs/development/interpreters/spidermonkey/24.nix62
-rw-r--r--pkgs/development/libraries/clucene-core/default.nix4
-rw-r--r--pkgs/development/libraries/clucene-core/gcc6.patch146
-rw-r--r--pkgs/development/libraries/flann/default.nix2
-rw-r--r--pkgs/development/libraries/strigi/default.nix4
-rw-r--r--pkgs/development/libraries/strigi/gcc6.patch45
-rw-r--r--pkgs/development/tools/misc/binutils/default.nix1
-rw-r--r--pkgs/games/warmux/gcc-fix.patch2
-rw-r--r--pkgs/stdenv/linux/default.nix22
-rw-r--r--pkgs/tools/cd-dvd/cdrdao/default.nix3
-rw-r--r--pkgs/top-level/all-packages.nix3
18 files changed, 317 insertions, 95 deletions
diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
index 4374e51f6d1..0e861400496 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
@@ -29,6 +29,8 @@ in stdenv.mkDerivation rec {
     sha512 = "f30ba358b1bfc57265b26da3d2205a8a77c6cd1987278de40cde6c1c1241db3c2fedc60aebb6ff56ffb340492c5580294420158f4b7c4787f558e79f72e3d7fb";
   };
 
+  patches = [ ./gcc6.patch ];
+
   # New sed no longer tolerates this mistake.
   postPatch = ''
     for f in mozilla/{js/src,}/configure; do
diff --git a/pkgs/applications/networking/mailreaders/thunderbird/gcc6.patch b/pkgs/applications/networking/mailreaders/thunderbird/gcc6.patch
new file mode 100644
index 00000000000..bd102220285
--- /dev/null
+++ b/pkgs/applications/networking/mailreaders/thunderbird/gcc6.patch
@@ -0,0 +1,75 @@
+
+# HG changeset patch
+# User Mike Hommey <mh+mozilla@glandium.org>
+# Date 1457596445 -32400
+# Node ID 55212130f19da3079167a6b0a5a0ed6689c9a71d
+# Parent  27c94617d7064d566c24a42e11cd4c7ef725923d
+Bug 1245076 - Don't include mozalloc.h from the cstdlib wrapper. r=froydnj
+
+Our STL wrappers do various different things, one of which is including
+mozalloc.h for infallible operator new. mozalloc.h includes stdlib.h,
+which, in libstdc++ >= 6 is now itself a wrapper around cstdlib, which
+circles back to our STL wrapper.
+
+But of the things our STL wrappers do, including mozalloc.h is not one
+that is necessary for cstdlib. So skip including mozalloc.h in our
+cstdlib wrapper.
+
+Additionally, some C++ sources (in media/mtransport) are including
+headers in an extern "C" block, which end up including stdlib.h, which
+ends up including cstdlib because really, this is all C++, and our
+wrapper pre-includes <new> for mozalloc.h, which fails because templates
+don't work inside extern "C". So, don't pre-include <new> when we're not
+including mozalloc.h.
+
+
+diff --git a/mozilla/config/gcc-stl-wrapper.template.h b/mozilla/config/gcc-stl-wrapper.template.h
+--- a/mozilla/config/gcc-stl-wrapper.template.h
++++ b/mozilla/config/gcc-stl-wrapper.template.h
+@@ -12,33 +12,40 @@
+ // compiling ObjC.
+ #if defined(__EXCEPTIONS) && __EXCEPTIONS && !(__OBJC__ && __GNUC__ && XP_IOS)
+ #  error "STL code can only be used with -fno-exceptions"
+ #endif
+ 
+ // Silence "warning: #include_next is a GCC extension"
+ #pragma GCC system_header
+ 
++// Don't include mozalloc for cstdlib. See bug 1245076.
++#ifndef moz_dont_include_mozalloc_for_cstdlib
++#  define moz_dont_include_mozalloc_for_cstdlib
++#endif
++#ifndef moz_dont_include_mozalloc_for_${HEADER}
+ // mozalloc.h wants <new>; break the cycle by always explicitly
+ // including <new> here.  NB: this is a tad sneaky.  Sez the gcc docs:
+ //
+ //    `#include_next' does not distinguish between <file> and "file"
+ //    inclusion, nor does it check that the file you specify has the
+ //    same name as the current file. It simply looks for the file
+ //    named, starting with the directory in the search path after the
+ //    one where the current file was found.
+-#include_next <new>
++#  include_next <new>
+ 
+ // See if we're in code that can use mozalloc.  NB: this duplicates
+ // code in nscore.h because nscore.h pulls in prtypes.h, and chromium
+ // can't build with that being included before base/basictypes.h.
+-#if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC)
+-#  include "mozilla/mozalloc.h"
+-#else
+-#  error "STL code can only be used with infallible ::operator new()"
++#  if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC)
++#    include "mozilla/mozalloc.h"
++#  else
++#    error "STL code can only be used with infallible ::operator new()"
++#  endif
++
+ #endif
+ 
+ #if defined(DEBUG) && !defined(_GLIBCXX_DEBUG)
+ // Enable checked iterators and other goodies
+ //
+ // FIXME/bug 551254: gcc's debug STL implementation requires -frtti.
+ // Figure out how to resolve this with -fno-rtti.  Maybe build with
+ // -frtti in DEBUG builds?
+
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index 905135e7adc..502362514eb 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -84,6 +84,8 @@ let
       # Work around "stdenv-darwin-boot-2 is not allowed to refer to path /nix/store/...-expand-response-params.c"
       cp "$src" expand-response-params.c
       "$CC" -std=c99 -O3 -o "$out" expand-response-params.c
+      strip -S $out
+      ${optionalString hostPlatform.isLinux "patchelf --shrink-rpath $out"}
     '';
   } else "";
 
@@ -102,6 +104,8 @@ stdenv.mkDerivation {
   binPrefix = prefix;
   inherit infixSalt;
 
+  outputs = [ "out" "man" ];
+
   passthru = {
     inherit libc nativeTools nativeLibc nativePrefix isGNU isClang default_cxx_stdlib_compile
             prefix;
@@ -120,7 +124,7 @@ stdenv.mkDerivation {
 
   buildCommand =
     ''
-      mkdir -p $out/bin $out/nix-support
+      mkdir -p $out/bin $out/nix-support $man/nix-support
 
       wrap() {
         local dst="$1"
@@ -231,7 +235,8 @@ stdenv.mkDerivation {
       # Propagate the wrapped cc so that if you install the wrapper,
       # you get tools like gcov, the manpages, etc. as well (including
       # for binutils and Glibc).
-      printWords ${cc} ${cc.man or ""} ${binutils_bin} ${if libc == null then "" else libc_bin} > $out/nix-support/propagated-user-env-packages
+      printWords ${cc} ${binutils_bin} ${if libc == null then "" else libc_bin} > $out/nix-support/propagated-user-env-packages
+      printWords ${cc.man or ""}  > $man/nix-support/propagated-user-env-packages
 
       printWords ${toString extraPackages} > $out/nix-support/propagated-native-build-inputs
     ''
diff --git a/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix b/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix
index ac5572decb8..1141db03c40 100644
--- a/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix
+++ b/pkgs/desktops/gnome-3/3.22/core/gjs/default.nix
@@ -1,12 +1,12 @@
 { fetchurl, stdenv, pkgconfig, gnome3, gtk3, gobjectIntrospection
-, spidermonkey_24, pango, readline, glib, libxml2, dbus }:
+, spidermonkey_31, pango, readline, glib, libxml2, dbus }:
 
 stdenv.mkDerivation rec {
   inherit (import ./src.nix fetchurl) name src;
 
   buildInputs = [ libxml2 gobjectIntrospection pkgconfig gtk3 glib pango readline dbus ];
 
-  propagatedBuildInputs = [ spidermonkey_24 ];
+  propagatedBuildInputs = [ spidermonkey_31 ];
 
   postInstall = ''
     sed 's|-lreadline|-L${readline.out}/lib -lreadline|g' -i $out/lib/libgjs.la
diff --git a/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix b/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix
index 1f4ef08f9b1..7af8d7c531b 100644
--- a/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix
+++ b/pkgs/desktops/gnome-3/3.22/core/gjs/src.nix
@@ -1,11 +1,11 @@
 # Autogenerated by maintainers/scripts/gnome.sh update
 
 fetchurl: rec {
-  name = "gjs-${major}.0";
-  major = "1.46";
+  name = "gjs-${major}.4";
+  major = "1.47";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gjs/${major}/${name}.tar.xz";
-    sha256 = "2283591fa70785443793e1d7db66071b36052d707075f229baeb468d8dd25ad4";
+    sha256 = "05x9yk3h53wn9fpwbcxl8yz71znhwhzwy7412di77x88ghkxi2c1";
   };
 }
diff --git a/pkgs/development/compilers/openjdk/8.nix b/pkgs/development/compilers/openjdk/8.nix
index d0344347969..838c02ce7e8 100644
--- a/pkgs/development/compilers/openjdk/8.nix
+++ b/pkgs/development/compilers/openjdk/8.nix
@@ -21,42 +21,42 @@ let
     else
       throw "openjdk requires i686-linux or x86_64 linux";
 
-  update = "141";
-  build = "15";
+  update = "152";
+  build = "04";
   baseurl = "http://hg.openjdk.java.net/jdk8u/jdk8u";
   repover = "jdk8u${update}-b${build}";
   paxflags = if stdenv.isi686 then "msp" else "m";
   jdk8 = fetchurl {
              url = "${baseurl}/archive/${repover}.tar.gz";
-             sha256 = "0b2nf1x2wcjn0ijyxhnrhcap4vq43sbblh5kf0qcqmx83cs3z6yh";
+             sha256 = "1hnpbx0v89jmbg58ym4zm255da11zf5jq8y5s58zj4x2z6b1fpxi";
           };
   langtools = fetchurl {
              url = "${baseurl}/langtools/archive/${repover}.tar.gz";
-             sha256 = "1mirjjywv7mnirrxj5sx3zg6j2864vjvphkn9mxx1pad49by7157";
+             sha256 = "060q01msfyspn14c9mkf9x0l8sprki9n8zb3cwlgglhnr2d4gfbr";
           };
   hotspot = fetchurl {
              url = "${baseurl}/hotspot/archive/${repover}.tar.gz";
-             sha256 = "0hhvsrclx58i7ns2v7la2wncnndblppwjncniwcvhnhgl5zhpp31";
+             sha256 = "0705667y6llsmszvdcbhbxzbn1csv1f2rlyghwggx5xnaq46dhx6";
           };
   corba = fetchurl {
              url = "${baseurl}/corba/archive/${repover}.tar.gz";
-             sha256 = "1brr72rlpaz70ihymdyp808vw433cr8b11l5qdc76aic2ywbwjyp";
+             sha256 = "13f4h43lw9q1292fymn2d7whwvccpkcqraasdhvzf904101xcpsl";
           };
   jdk = fetchurl {
              url = "${baseurl}/jdk/archive/${repover}.tar.gz";
-             sha256 = "1d4q531jswzk00kdskzfkgr0f4qmxpc7pg9w8p1gq84yz93wz11k";
+             sha256 = "16wqinqv0aqyf6jg3nsn6rj5s7ggq82wvx86zm584g56011vkgf6";
           };
   jaxws = fetchurl {
              url = "${baseurl}/jaxws/archive/${repover}.tar.gz";
-             sha256 = "0haw5095p45w33m8pafnp5r5j2lif8c1271chad5sp4gbbk40ai4";
+             sha256 = "0japl4nyb8y3w1mpfpkxn5vkf8fap1rg340vjnb6qm6fpqvl964f";
           };
   jaxp = fetchurl {
              url = "${baseurl}/jaxp/archive/${repover}.tar.gz";
-             sha256 = "0pm2cccy31d9rnkgc2hcxbpjjhf4wbayx18qn736nncvwcwa76bj";
+             sha256 = "024zphx9r92ws9xjihvhyrbbbamfl7js0s24ff577v5z5gdb1lly";
           };
   nashorn = fetchurl {
              url = "${baseurl}/nashorn/archive/${repover}.tar.gz";
-             sha256 = "1g05vfggjjg51dki28zby27pnd4z1b23fv9kyc3hdmc4bcj306x0";
+             sha256 = "1crnbjjv1s6ndqpllcrggcpsxvqcnpr58zp51y0hjz3m3gpsxwcq";
           };
   openjdk8 = stdenv.mkDerivation {
     name = "openjdk-8u${update}b${build}";
diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix
index 19217476b14..fe9f94beed1 100644
--- a/pkgs/development/interpreters/guile/default.nix
+++ b/pkgs/development/interpreters/guile/default.nix
@@ -22,8 +22,8 @@
 
   nativeBuildInputs = [ makeWrapper gawk pkgconfig ];
   buildInputs = [ readline libtool libunistring libffi ];
-  propagatedBuildInputs = [ gmp boehmgc ]
 
+  propagatedBuildInputs = [ gmp boehmgc ]
     # XXX: These ones aren't normally needed here, but since
     # `libguile-2.0.la' reads `-lltdl -lunistring', adding them here will add
     # the needed `-L' flags.  As for why the `.la' file lacks the `-L' flags,
diff --git a/pkgs/development/interpreters/spidermonkey/24.nix b/pkgs/development/interpreters/spidermonkey/24.nix
deleted file mode 100644
index 6e354c54296..00000000000
--- a/pkgs/development/interpreters/spidermonkey/24.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, nspr, perl, python2, zip, libffi, readline, icu }:
-
-stdenv.mkDerivation rec {
-  version = "24.2.0";
-  name = "spidermonkey-${version}";
-
-  src = fetchurl {
-    url = "mirror://mozilla/js/mozjs-${version}.tar.bz2";
-    sha256 = "1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6";
-  };
-
-  outputs = [ "out" "dev" "lib" ];
-
-  propagatedBuildInputs = [ nspr ];
-
-  buildInputs = [ pkgconfig perl python2 zip libffi readline icu ];
-
-  postPatch = ''
-    # Fixes an issue with version detection under perl 5.22.x
-    sed -i 's/(defined\((@TEMPLATE_FILE)\))/\1/' config/milestone.pl
-  '';
-
-  postUnpack = "sourceRoot=\${sourceRoot}/js/src";
-
-  preConfigure = ''
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${nspr.dev}/include/nspr"
-    export LIBXUL_DIST=$out
-  '';
-
-  setOutputFlags = false;
-  configureFlags = [
-    "--libdir=$(lib)/lib"
-    "--includedir=$(dev)/include"
-    "--enable-threadsafe"
-    "--with-system-icu"
-    "--with-system-nspr"
-    "--with-system-ffi"
-    "--enable-readline"
-  ];
-
-  # hack around a make problem, see https://github.com/NixOS/nixpkgs/issues/1279#issuecomment-29547393
-  preBuild = "touch -- {.,shell,jsapi-tests}/{-lpthread,-ldl}";
-
-  enableParallelBuilding = true;
-
-  doCheck = true;
-  preCheck = "rm jit-test/tests/sunspider/check-date-format-tofte.js"; # https://bugzil.la/600522
-
-  postInstall = ''
-    rm "$lib"/lib/*.a # halve the output size
-    moveToOutput "bin/js*-config" "$dev" # break the cycle
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Mozilla's JavaScript engine written in C/C++";
-    homepage = https://developer.mozilla.org/en/SpiderMonkey;
-    # TODO: MPL/GPL/LGPL tri-license.
-    maintainers = [ maintainers.goibhniu ];
-    platforms = platforms.linux;
-  };
-}
-
diff --git a/pkgs/development/libraries/clucene-core/default.nix b/pkgs/development/libraries/clucene-core/default.nix
index 90cfbb1865c..b65e794a92a 100644
--- a/pkgs/development/libraries/clucene-core/default.nix
+++ b/pkgs/development/libraries/clucene-core/default.nix
@@ -7,7 +7,9 @@ stdenv.mkDerivation rec {
     url = "mirror://sourceforge/clucene/${name}.tar.bz2";
     sha256 = "202ee45af747f18642ae0a088d7c4553521714a511a1a9ec99b8144cf9928317";
   };
-  
+
+  patches = [ ./gcc6.patch ];
+
   meta = {
     description = "Core library for full-featured text search engine";
     longDescription = ''
diff --git a/pkgs/development/libraries/clucene-core/gcc6.patch b/pkgs/development/libraries/clucene-core/gcc6.patch
new file mode 100644
index 00000000000..f78b26d24f6
--- /dev/null
+++ b/pkgs/development/libraries/clucene-core/gcc6.patch
@@ -0,0 +1,146 @@
+https://bugzilla.redhat.com/show_bug.cgi?id=998477
+
+diff -up clucene-core-0.9.21b/src/CLucene/debug/lucenebase.h.gcc48 clucene-core-0.9.21b/src/CLucene/debug/lucenebase.h
+--- clucene-core-0.9.21b/src/CLucene/debug/lucenebase.h.gcc48	2008-10-23 12:44:35.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/debug/lucenebase.h	2013-08-27 13:17:35.754234297 -0500
+@@ -58,7 +58,7 @@ public:
+ 		__cl_refcount--;
+ 		return __cl_refcount;
+ 	}
+-    virtual ~LuceneBase(){};
++    virtual ~LuceneBase() throw(CLuceneError&) {};
+ };
+ 
+ class LuceneVoidBase{
+diff -up clucene-core-0.9.21b/src/CLucene/index/CompoundFile.cpp.gcc48 clucene-core-0.9.21b/src/CLucene/index/CompoundFile.cpp
+--- clucene-core-0.9.21b/src/CLucene/index/CompoundFile.cpp.gcc48	2013-08-27 13:17:35.754234297 -0500
++++ clucene-core-0.9.21b/src/CLucene/index/CompoundFile.cpp	2013-08-27 13:18:02.844949386 -0500
+@@ -94,7 +94,7 @@ CompoundFileReader::CompoundFileReader(D
+    )
+ }
+ 
+-CompoundFileReader::~CompoundFileReader(){
++CompoundFileReader::~CompoundFileReader() throw(CLuceneError&) {
+ 	close();
+ }
+ 
+diff -up clucene-core-0.9.21b/src/CLucene/index/CompoundFile.h.gcc48 clucene-core-0.9.21b/src/CLucene/index/CompoundFile.h
+--- clucene-core-0.9.21b/src/CLucene/index/CompoundFile.h.gcc48	2008-10-23 12:44:37.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/index/CompoundFile.h	2013-08-27 13:17:35.755234286 -0500
+@@ -95,7 +95,7 @@ protected:
+ 
+ public:
+ 	CompoundFileReader(CL_NS(store)::Directory* dir, char* name);
+-	~CompoundFileReader();
++	~CompoundFileReader() throw(CLuceneError&);
+ 	CL_NS(store)::Directory* getDirectory();
+ 	const char* getName() const;
+ 
+diff -up clucene-core-0.9.21b/src/CLucene/index/Term.cpp.gcc48 clucene-core-0.9.21b/src/CLucene/index/Term.cpp
+--- clucene-core-0.9.21b/src/CLucene/index/Term.cpp.gcc48	2008-10-23 12:44:37.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/index/Term.cpp	2013-08-27 13:17:35.755234286 -0500
+@@ -81,7 +81,7 @@ Term::Term(const TCHAR* fld, const TCHAR
+     set(fld,txt);
+ }
+ 
+-Term::~Term(){
++Term::~Term() throw (CLuceneError&) {
+ //Func - Destructor.
+ //Pre  - true
+ //Post - The instance has been destroyed. field and text have been deleted if pre(intrn) is false
+diff -up clucene-core-0.9.21b/src/CLucene/index/Term.h.gcc48 clucene-core-0.9.21b/src/CLucene/index/Term.h
+--- clucene-core-0.9.21b/src/CLucene/index/Term.h.gcc48	2008-10-23 12:44:37.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/index/Term.h	2013-08-27 13:17:35.755234286 -0500
+@@ -68,7 +68,7 @@ class Term:LUCENE_REFBASE {
+ 	Term(const TCHAR* fld, const TCHAR* txt);
+ 	
+ 	///Destructor.
+-	~Term();
++	~Term() throw(CLuceneError&);
+ 
+ 	///Returns the field of this term, an interned string. The field indicates
+ 	///the part of a document which this term came from. 
+diff -up clucene-core-0.9.21b/src/CLucene/store/Directory.h.gcc48 clucene-core-0.9.21b/src/CLucene/store/Directory.h
+--- clucene-core-0.9.21b/src/CLucene/store/Directory.h.gcc48	2008-10-23 12:44:36.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/store/Directory.h	2013-08-27 13:17:35.756234276 -0500
+@@ -41,7 +41,7 @@ CL_NS_DEF(store)
+ 	public:
+ 		DEFINE_MUTEX(THIS_LOCK)
+ 	   
+-		virtual ~Directory(){ };
++		virtual ~Directory() throw(CLuceneError&) { };
+ 
+ 		// Returns an null terminated array of strings, one for each file in the directory. 
+ 		char** list() const{
+diff -up clucene-core-0.9.21b/src/CLucene/store/FSDirectory.cpp.gcc48 clucene-core-0.9.21b/src/CLucene/store/FSDirectory.cpp
+--- clucene-core-0.9.21b/src/CLucene/store/FSDirectory.cpp.gcc48	2008-10-23 13:01:52.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/store/FSDirectory.cpp	2013-08-27 13:17:35.756234276 -0500
+@@ -368,7 +368,7 @@ void FSDirectory::FSIndexInput::readInte
+       strcat(buffer,name);
+   }
+ 
+-  FSDirectory::~FSDirectory(){
++  FSDirectory::~FSDirectory() throw(CLuceneError&) {
+   }
+ 
+   void FSDirectory::list(vector<string>* names) const{ //todo: fix this, ugly!!!
+diff -up clucene-core-0.9.21b/src/CLucene/store/FSDirectory.h.gcc48 clucene-core-0.9.21b/src/CLucene/store/FSDirectory.h
+--- clucene-core-0.9.21b/src/CLucene/store/FSDirectory.h.gcc48	2008-10-23 13:00:43.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/store/FSDirectory.h	2013-08-27 13:17:35.756234276 -0500
+@@ -155,7 +155,7 @@
+ 	  ///Destructor - only call this if you are sure the directory
+ 	  ///is not being used anymore. Otherwise use the ref-counting
+ 	  ///facilities of _CLDECDELETE
+-		~FSDirectory();
++		~FSDirectory() throw(CLuceneError&);
+ 
+ 		/// Get a list of strings, one for each file in the directory. 
+ 		void list(vector<string>* names) const;
+diff -up clucene-core-0.9.21b/src/CLucene/store/RAMDirectory.cpp.gcc48 clucene-core-0.9.21b/src/CLucene/store/RAMDirectory.cpp
+--- clucene-core-0.9.21b/src/CLucene/store/RAMDirectory.cpp.gcc48	2008-10-23 12:44:36.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/store/RAMDirectory.cpp	2013-08-27 13:17:35.757234265 -0500
+@@ -219,7 +219,7 @@ CL_NS_DEF(store)
+   {
+   }
+   
+-  RAMDirectory::~RAMDirectory(){
++  RAMDirectory::~RAMDirectory() throw(CLuceneError&) {
+    //todo: should call close directory?
+   }
+ 
+diff -up clucene-core-0.9.21b/src/CLucene/store/RAMDirectory.h.gcc48 clucene-core-0.9.21b/src/CLucene/store/RAMDirectory.h
+--- clucene-core-0.9.21b/src/CLucene/store/RAMDirectory.h.gcc48	2008-10-23 12:44:36.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/store/RAMDirectory.h	2013-08-27 13:17:35.757234265 -0500
+@@ -131,7 +131,7 @@ CL_NS_DEF(store)
+ 	  ///Destructor - only call this if you are sure the directory
+ 	  ///is not being used anymore. Otherwise use the ref-counting
+ 	  ///facilities of dir->close
+-		virtual ~RAMDirectory();
++		virtual ~RAMDirectory() throw(CLuceneError&);
+ 		RAMDirectory(Directory* dir);
+ 		
+ 	  /**
+diff -up clucene-core-0.9.21b/src/CLucene/store/TransactionalRAMDirectory.cpp.gcc48 clucene-core-0.9.21b/src/CLucene/store/TransactionalRAMDirectory.cpp
+--- clucene-core-0.9.21b/src/CLucene/store/TransactionalRAMDirectory.cpp.gcc48	2008-10-23 12:44:36.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/store/TransactionalRAMDirectory.cpp	2013-08-27 13:17:35.757234265 -0500
+@@ -16,7 +16,7 @@ CL_NS_USE(util)
+   {
+     transOpen = false;
+   }
+-  TransactionalRAMDirectory::~TransactionalRAMDirectory(){
++  TransactionalRAMDirectory::~TransactionalRAMDirectory() throw(CLuceneError&) {
+   }
+ 
+   bool TransactionalRAMDirectory::archiveOrigFileIfNecessary(const char* name) {
+diff -up clucene-core-0.9.21b/src/CLucene/store/TransactionalRAMDirectory.h.gcc48 clucene-core-0.9.21b/src/CLucene/store/TransactionalRAMDirectory.h
+--- clucene-core-0.9.21b/src/CLucene/store/TransactionalRAMDirectory.h.gcc48	2008-10-23 12:44:36.000000000 -0500
++++ clucene-core-0.9.21b/src/CLucene/store/TransactionalRAMDirectory.h	2013-08-27 13:17:35.757234265 -0500
+@@ -44,7 +44,7 @@ CL_NS_DEF(store)
+ 
+   public:
+     TransactionalRAMDirectory();
+-    virtual ~TransactionalRAMDirectory();
++    virtual ~TransactionalRAMDirectory() throw(CLuceneError&);
+ 
+     bool transIsOpen() const;
+     void transStart();
diff --git a/pkgs/development/libraries/flann/default.nix b/pkgs/development/libraries/flann/default.nix
index eda18bc432c..3cc518fee50 100644
--- a/pkgs/development/libraries/flann/default.nix
+++ b/pkgs/development/libraries/flann/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchFromGitHub, unzip, cmake, python}:
+{ stdenv, fetchFromGitHub, unzip, cmake, python }:
 
 stdenv.mkDerivation {
   name = "flann-1.9.1";
diff --git a/pkgs/development/libraries/strigi/default.nix b/pkgs/development/libraries/strigi/default.nix
index 1961160cbc9..362881a2f42 100644
--- a/pkgs/development/libraries/strigi/default.nix
+++ b/pkgs/development/libraries/strigi/default.nix
@@ -16,11 +16,11 @@ stdenv.mkDerivation rec {
   CLUCENE_HOME = clucene_core;
 
   buildInputs =
-    [ zlib bzip2 stdenv.cc.libc libxml2 qt4 exiv2 clucene_core fam dbus_tools ];
+    [ zlib bzip2 libxml2 qt4 exiv2 clucene_core fam dbus_tools ];
 
   nativeBuildInputs = [ cmake pkgconfig perl ];
 
-  patches = [ ./export_bufferedstream.patch ];
+  patches = [ ./export_bufferedstream.patch ./gcc6.patch ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/libraries/strigi/gcc6.patch b/pkgs/development/libraries/strigi/gcc6.patch
new file mode 100644
index 00000000000..b46f6c52b82
--- /dev/null
+++ b/pkgs/development/libraries/strigi/gcc6.patch
@@ -0,0 +1,45 @@
+https://sourceforge.net/p/strigi/patches/4/
+
+and a fix for
+
+/tmp/nix-build-strigi-0.7.8.drv-0/strigi-0.7.8/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp:325:37: error: no matching function for call to 'make_pair(std::__cxx11::string, std::__cxx11::string&)'
+             wchartoutf8(name), value));
+
+diff -Naur strigi-0.7.8.old/libstreamanalyzer/cmake/MacroCheckGccVisibility.cmake strigi-0.7.8/libstreamanalyzer/cmake/MacroCheckGccVisibility.cmake
+--- strigi-0.7.8.old/libstreamanalyzer/cmake/MacroCheckGccVisibility.cmake	2013-02-05 16:34:52.000000000 -0500
++++ strigi-0.7.8/libstreamanalyzer/cmake/MacroCheckGccVisibility.cmake	2016-05-14 11:39:54.586260564 -0400
+@@ -15,7 +15,7 @@
+    # get the gcc version
+    exec_program(${CMAKE_C_COMPILER} ARGS ${CMAKE_C_COMPILER_ARG1} --version OUTPUT_VARIABLE _gcc_version_info)
+ 
+-   string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
++   string (REGEX MATCH "[3456789]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
+    # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the patch level, handle this here:
+    if (NOT _gcc_version)
+       string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}")
+diff -Naur strigi-0.7.8.old/libstreams/cmake/MacroCheckGccVisibility.cmake strigi-0.7.8/libstreams/cmake/MacroCheckGccVisibility.cmake
+--- strigi-0.7.8.old/libstreams/cmake/MacroCheckGccVisibility.cmake	2013-02-05 16:34:57.000000000 -0500
++++ strigi-0.7.8/libstreams/cmake/MacroCheckGccVisibility.cmake	2016-05-14 11:40:11.340134414 -0400
+@@ -15,7 +15,7 @@
+    # get the gcc version
+    exec_program(${CMAKE_C_COMPILER} ARGS ${CMAKE_C_COMPILER_ARG1} --version OUTPUT_VARIABLE _gcc_version_info)
+ 
+-   string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
++   string (REGEX MATCH "[3456789]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
+    # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the patch level, handle this here:
+    if (NOT _gcc_version)
+       string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}")
+
+diff -ru strigi-0.7.8-orig/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp strigi-0.7.8/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp
+--- strigi-0.7.8-orig/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp	2013-02-05 22:34:52.000000000 +0100
++++ strigi-0.7.8/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp	2017-07-31 10:56:27.067902643 +0200
+@@ -321,8 +321,7 @@
+         string size = value;
+         doc.size = atoi(size.c_str());
+     } else {
+-        doc.properties.insert(make_pair<const string, string>(
+-            wchartoutf8(name), value));
++        doc.properties.emplace(wchartoutf8(name), value);
+     }
+ }
+ Variant
diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix
index 04911e4cc56..dda2a78097a 100644
--- a/pkgs/development/tools/misc/binutils/default.nix
+++ b/pkgs/development/tools/misc/binutils/default.nix
@@ -56,7 +56,6 @@ stdenv.mkDerivation rec {
     ./elf-check-orphan-placement.patch
   ];
 
-  # TODO: all outputs on all platform
   outputs = [ "out" ]
     ++ optional (targetPlatform == hostPlatform && !hostPlatform.isDarwin) "lib" # problems in Darwin stdenv
     ++ [ "info" ]
diff --git a/pkgs/games/warmux/gcc-fix.patch b/pkgs/games/warmux/gcc-fix.patch
index 6b683aa782f..913b912af7d 100644
--- a/pkgs/games/warmux/gcc-fix.patch
+++ b/pkgs/games/warmux/gcc-fix.patch
@@ -45,7 +45,7 @@ Author: Robin Gloster <mail@glob.in>
  {
    if (!show)
 -    return false;
-+    return NULL;
++    return nullptr;
    const std::vector<PolygonItem *>& items = poly->GetItem();
    WeaponMenuItem * tmp;
    Interface::GetInstance()->SetCurrentOverflyWeapon(NULL);
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index c475d2d1e92..0aeb292e316 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -299,13 +299,21 @@ in
         shellPackage = prevStage.bash;
       };
 
-      /* outputs TODO
-      allowedRequisites = with prevStage;
-        [ gzip bzip2 xz bash binutils coreutils diffutils findutils gawk
-          glibc gnumake gnused gnutar gnugrep gnupatch patchelf attr acl
-          paxctl zlib pcre linuxHeaders ed gcc gcc.cc libsigsegv
-        ] ++ lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;
-        */
+      # Mainly avoid reference to bootstrap tools
+      allowedRequisites = with prevStage; with lib;
+        # Simple executable tools
+        concatMap (p: [ (getBin p) (getLib p) ])
+          [ gzip bzip2 xz bash binutils coreutils diffutils findutils gawk
+            gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl
+          ]
+        # Library dependencies
+        ++ map getLib [ attr acl zlib pcre libsigsegv ]
+        # More complicated cases
+        ++ [
+            glibc.out glibc.dev glibc.bin/*propagated from .dev*/ linuxHeaders
+            gcc gcc.cc gcc.cc.lib gcc.expandResponseParams
+          ]
+        ++ lib.optional (system == "aarch64-linux") prevStage.updateAutotoolsGnuConfigScriptsHook;
 
       overrides = self: super: {
         inherit (prevStage)
diff --git a/pkgs/tools/cd-dvd/cdrdao/default.nix b/pkgs/tools/cd-dvd/cdrdao/default.nix
index caf37ccbe1d..95dd58a59b4 100644
--- a/pkgs/tools/cd-dvd/cdrdao/default.nix
+++ b/pkgs/tools/cd-dvd/cdrdao/default.nix
@@ -24,6 +24,9 @@ stdenv.mkDerivation {
     sed -i 's,linux/../,,g' dao/sg_err.h
   '';
 
+  # Needed on gcc >= 6.
+  NIX_CFLAGS_COMPILE = "-Wno-narrowing";
+
   meta = {
     description = "A tool for recording audio or data CD-Rs in disk-at-once (DAO) mode";
     homepage = http://cdrdao.sourceforge.net/;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 3b507cfe74d..7ddb9884310 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5264,7 +5264,7 @@ with pkgs;
   gambit = callPackage ../development/compilers/gambit { };
   gerbil = callPackage ../development/compilers/gerbil { };
 
-  gcc = gcc5;
+  gcc = gcc6;
   gcc-unwrapped = gcc.cc;
 
   wrapCCMulti = cc:
@@ -6462,7 +6462,6 @@ with pkgs;
 
   spidermonkey_1_8_5 = callPackage ../development/interpreters/spidermonkey/1.8.5.nix { };
   spidermonkey_17 = callPackage ../development/interpreters/spidermonkey/17.nix { };
-  spidermonkey_24 = callPackage ../development/interpreters/spidermonkey/24.nix { };
   spidermonkey_31 = callPackage ../development/interpreters/spidermonkey/31.nix { };
   spidermonkey_38 = callPackage ../development/interpreters/spidermonkey/38.nix { };
   spidermonkey = spidermonkey_31;