Commit b9a38bf4 authored by Sergei Trofimovich's avatar Sergei Trofimovich
Browse files

monotone: fix build for upcoming gcc-14

Without the change build fails as:

    In file included from /<<NIX>>/gcc-14.0.0/include/c++/14.0.0/limits:42,
                     from <stdin>:1:
    /<<NIX>>/gcc-14.0.0/include/c++/14.0.0/x86_64-unknown-linux-gnu/bits/c++config.h:668:2: warning: #warning "__STRICT_ANSI__ seems to have been undefined; this is not supported" [-Wcpp]
      668 | #warning "__STRICT_ANSI__ seems to have been undefined; this is not supported"
          |  ^~~~~~~
    /<<NIX>>/gcc-14.0.0/include/c++/14.0.0/limits:2100:30: error: exponent has no digits
     2100 |         return __extension__ 0x1.0p-16382Q;
          |                              ^~~~~~
    /<<NIX>>/gcc-14.0.0/include/c++/14.0.0/limits:2114:30: error: exponent has no digits
     2114 |         return __extension__ 0x1.ffffffffffffffffffffffffffffp+16383Q;

gcc upstream confirms unsetting __STRICT_ANSI__ is an unsupported
configuration: https://gcc.gnu.org/PR111824
parent b78c85ff
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
      revert = true;
      sha256 = "0fzjdv49dx5lzvqhkvk50lkccagwx8h0bfha4a0k6l4qh36f9j7c";
    })
    ./monotone-1.1-gcc-14.patch
  ];

  postPatch = ''
+17 −0
Original line number Diff line number Diff line
Unsetting __STRICT_ANSI__ is not a supported configuration for gcc
nowadays. gcc-14 started failing libstdc++ build as it uses gcc
extensions without __STRICT_ANSI__: https://gcc.gnu.org/PR111824
--- a/src/base.hh
+++ b/src/base.hh
@@ -34,11 +34,6 @@
 #define WIN32_LEAN_AND_MEAN
 #endif
 
-// Cygwin somehow enables strict ansi, which we don't want.
-#ifdef __STRICT_ANSI__
-#undef __STRICT_ANSI__
-#endif
-
 #include <iosfwd>
 #include <string>  // it would be nice if there were a <stringfwd>