Unverified Commit 9eb901b7 authored by Eelco Dolstra's avatar Eelco Dolstra
Browse files

Merge remote-tracking branch 'origin/gcc-6' into staging

parents 62dac1bd 505e9425
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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
+75 −0
Original line number Diff line number Diff line

# 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?
+7 −2
Original line number Diff line number Diff line
@@ -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
    ''
+2 −2
Original line number Diff line number Diff line
{ 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
+3 −3
Original line number Diff line number Diff line
# 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";
  };
}
Loading