From e9d60c5636a8ba2a9685a741d06641a4b86398f9 Mon Sep 17 00:00:00 2001 From: Dmitry Kalinkin Date: Fri, 30 Dec 2016 15:58:03 -0500 Subject: [PATCH] libc++3.7: fix to use with modern compilers Modern compiler will issue a following error whenever '#include ' is done: /nix/store/yxpwamjdapjcp53mmsdh1j2c9bc26h4k-libc++-3.7.1/include/c++/v1/string:1938:44: error: 'basic_string<_CharT, _Traits, _Allocator>' is missing exception specification 'noexcept(is_nothrow_copy_constructible::value)' basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a) ^ /nix/store/yxpwamjdapjcp53mmsdh1j2c9bc26h4k-libc++-3.7.1/include/c++/v1/string:1326:40: note: previous declaration is here _LIBCPP_INLINE_VISIBILITY explicit basic_string(const allocator_type& __a) ^ 1 error generated. This happens because modern clang is more strict about checking exception specification for forward declaration and definition. http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/string?r1=242056&r2=242623&diff_format=h --- .../compilers/llvm/3.7/libc++/default.nix | 5 ++++- .../compilers/llvm/3.7/libc++/r242056.patch | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/llvm/3.7/libc++/r242056.patch diff --git a/pkgs/development/compilers/llvm/3.7/libc++/default.nix b/pkgs/development/compilers/llvm/3.7/libc++/default.nix index 62402142a129..1196645b923e 100644 --- a/pkgs/development/compilers/llvm/3.7/libc++/default.nix +++ b/pkgs/development/compilers/llvm/3.7/libc++/default.nix @@ -14,7 +14,10 @@ stdenv.mkDerivation rec { cmakeFlagsArray=($cmakeFlagsArray -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$NIX_BUILD_TOP/libcxxabi-${version}.src/include") ''; - patches = [ ./darwin.patch ]; + patches = [ + ./darwin.patch + ./r242056.patch + ]; buildInputs = [ cmake libcxxabi ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; diff --git a/pkgs/development/compilers/llvm/3.7/libc++/r242056.patch b/pkgs/development/compilers/llvm/3.7/libc++/r242056.patch new file mode 100644 index 000000000000..96245e76653a --- /dev/null +++ b/pkgs/development/compilers/llvm/3.7/libc++/r242056.patch @@ -0,0 +1,16 @@ +--- a/include/string 2015/07/13 20:04:56 242056 ++++ b/include/string 2015/07/18 20:40:46 242623 +@@ -1936,7 +1936,12 @@ + template + inline _LIBCPP_INLINE_VISIBILITY + basic_string<_CharT, _Traits, _Allocator>::basic_string(const allocator_type& __a) +- : __r_(__a) ++#if _LIBCPP_STD_VER <= 14 ++ _NOEXCEPT_(is_nothrow_copy_constructible::value) ++#else ++ _NOEXCEPT ++#endif ++: __r_(__a) + { + #if _LIBCPP_DEBUG_LEVEL >= 2 + __get_db()->__insert_c(this);