summary refs log tree commit diff
path: root/pkgs/development/libraries/db/generic.nix
diff options
context:
space:
mode:
authorDaiderd Jordan <daiderd@gmail.com>2016-11-12 17:14:20 +0100
committerDaiderd Jordan <daiderd@gmail.com>2016-11-13 00:04:50 +0100
commit7e933af17344c049cdb13bffeafdb82f0927f3bc (patch)
tree27df7bccc028c868a2742ea2886826eeb6ebef9f /pkgs/development/libraries/db/generic.nix
parentfcfe3c0909c7703bf5cfe6a7c2402e7e1b08b1d6 (diff)
db: fix build with libc++-3.8
Diffstat (limited to 'pkgs/development/libraries/db/generic.nix')
-rw-r--r--pkgs/development/libraries/db/generic.nix18
1 files changed, 18 insertions, 0 deletions
diff --git a/pkgs/development/libraries/db/generic.nix b/pkgs/development/libraries/db/generic.nix
index fdc828effdfbe..8e3eb5248e9ee 100644
--- a/pkgs/development/libraries/db/generic.nix
+++ b/pkgs/development/libraries/db/generic.nix
@@ -20,6 +20,24 @@ stdenv.mkDerivation (rec {
 
   patches = extraPatches;
 
+  # https://community.oracle.com/thread/3952592
+  # this patch renames some sybols that conflict with libc++-3.8
+  # symbols: atomic_compare_exchange, atomic_init, store
+  prePatch = ''
+    substituteInPlace src/dbinc/db.in \
+      --replace '#define	store' '#define	store_db'
+
+    substituteInPlace src/dbinc/atomic.h \
+      --replace atomic_compare_exchange atomic_compare_exchange_db \
+      --replace atomic_init atomic_init_db
+    substituteInPlace src/mp/*.c \
+      --replace atomic_compare_exchange atomic_compare_exchange_db \
+      --replace atomic_init atomic_init_db
+    substituteInPlace src/mutex/*.c \
+      --replace atomic_compare_exchange atomic_compare_exchange_db \
+      --replace atomic_init atomic_init_db
+  '';
+
   configureFlags = [
     (if cxxSupport then "--enable-cxx" else "--disable-cxx")
     (if compat185 then "--enable-compat185" else "--disable-compat185")