1 |
commit: 9a5672672cbda260a4fb713a266f50f4724f23df |
2 |
Author: Marek Szuba <marecki <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Sep 2 10:46:37 2021 +0000 |
4 |
Commit: Marek Szuba <marecki <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Sep 2 10:50:55 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9a567267 |
7 |
|
8 |
dev-libs/rocksdb: apply upstream libatomic check |
9 |
|
10 |
Will have already been included in 6.20.2+. |
11 |
|
12 |
Closes: https://bugs.gentoo.org/809830 |
13 |
Signed-off-by: Marek Szuba <marecki <AT> gentoo.org> |
14 |
|
15 |
.../rocksdb/files/rocksdb-6.14.6-libatomic.patch | 118 +++++++++++++++++---- |
16 |
dev-libs/rocksdb/rocksdb-6.15.5.ebuild | 4 + |
17 |
dev-libs/rocksdb/rocksdb-6.17.3.ebuild | 4 + |
18 |
3 files changed, 105 insertions(+), 21 deletions(-) |
19 |
|
20 |
diff --git a/dev-libs/rocksdb/files/rocksdb-6.14.6-libatomic.patch b/dev-libs/rocksdb/files/rocksdb-6.14.6-libatomic.patch |
21 |
index 5ffcc8eee9f..27f17aab893 100644 |
22 |
--- a/dev-libs/rocksdb/files/rocksdb-6.14.6-libatomic.patch |
23 |
+++ b/dev-libs/rocksdb/files/rocksdb-6.14.6-libatomic.patch |
24 |
@@ -1,29 +1,105 @@ |
25 |
+From 38d79de10da65d234c70cbb36c24c58d189f76db Mon Sep 17 00:00:00 2001 |
26 |
+From: mrambacher <mrambach@×××××.com> |
27 |
+Date: Mon, 12 Apr 2021 20:06:57 -0400 |
28 |
+Subject: [PATCH 1/3] Add check to cmake to see if we need to link against |
29 |
+ -latomic |
30 |
+ |
31 |
+For some compilers/environments (e.g. Clang, riscv64), we need to link against -latomic. Check if this is a requirement and add the library to the third-party libs if it is. |
32 |
+--- |
33 |
+ CMakeLists.txt | 21 ++++++++++++++++++++- |
34 |
+ 1 file changed, 20 insertions(+), 1 deletion(-) |
35 |
+ |
36 |
+diff --git a/CMakeLists.txt b/CMakeLists.txt |
37 |
+index 984c6197cb..460d350054 100644 |
38 |
--- a/CMakeLists.txt |
39 |
+++ b/CMakeLists.txt |
40 |
-@@ -325,6 +325,26 @@ |
41 |
- add_definitions(-DROCKSDB_SUPPORT_THREAD_LOCAL) |
42 |
+@@ -312,7 +312,6 @@ int main() { |
43 |
+ auto d = _mm_cvtsi128_si64(c); |
44 |
+ } |
45 |
+ " HAVE_SSE42) |
46 |
+-unset(CMAKE_REQUIRED_FLAGS) |
47 |
+ if(HAVE_SSE42) |
48 |
+ add_definitions(-DHAVE_SSE42) |
49 |
+ add_definitions(-DHAVE_PCLMUL) |
50 |
+@@ -320,6 +319,26 @@ elseif(FORCE_SSE42) |
51 |
+ message(FATAL_ERROR "FORCE_SSE42=ON but unable to compile with SSE4.2 enabled") |
52 |
endif() |
53 |
|
54 |
-+set(ATOMIC_TEST_SOURCE " |
55 |
++# Check if -latomic is required or not |
56 |
++if (NOT MSVC) |
57 |
++ set(CMAKE_REQUIRED_FLAGS "--std=c++11") |
58 |
++ CHECK_CXX_SOURCE_COMPILES(" |
59 |
+#include <atomic> |
60 |
++std::atomic<uint64_t> x(0); |
61 |
+int main() { |
62 |
-+ std::atomic<bool> y (false); |
63 |
-+ std::atomic<uint64_t> x (0); |
64 |
-+ bool expected = true; |
65 |
-+ bool j = y.compare_exchange_weak(expected,false); |
66 |
-+ x++; |
67 |
++ uint64_t i = x.load(std::memory_order_relaxed); |
68 |
++ bool b = x.is_lock_free(); |
69 |
+ return 0; |
70 |
-+}") |
71 |
-+CHECK_CXX_SOURCE_COMPILES("${ATOMIC_TEST_SOURCE}" ATOMICS_ARE_BUILTIN) |
72 |
-+if (NOT ATOMICS_ARE_BUILTIN) |
73 |
-+ set(CMAKE_REQUIRED_LIBRARIES atomic) |
74 |
-+ check_cxx_source_compiles("${ATOMIC_TEST_SOURCE}" ATOMICS_REQUIRE_LIBATOMIC) |
75 |
-+ unset(CMAKE_REQUIRED_LIBRARIES) |
76 |
-+ if (ATOMICS_REQUIRE_LIBATOMIC) |
77 |
-+ string(APPEND CMAKE_CXX_STANDARD_LIBRARIES " -latomic") |
78 |
-+ endif () |
79 |
-+endif () |
80 |
++} |
81 |
++" BUILTIN_ATOMIC) |
82 |
++if (NOT BUILTIN_ATOMIC) |
83 |
++ #TODO: Check if -latomic exists |
84 |
++ list(APPEND THIRDPARTY_LIBS atomic) |
85 |
++endif() |
86 |
++endif() |
87 |
+ |
88 |
- option(FAIL_ON_WARNINGS "Treat compile warnings as errors" ON) |
89 |
- if(FAIL_ON_WARNINGS) |
90 |
- if(MSVC) |
91 |
++unset(CMAKE_REQUIRED_FLAGS) |
92 |
++ |
93 |
+ CHECK_CXX_SOURCE_COMPILES(" |
94 |
+ #if defined(_MSC_VER) && !defined(__thread) |
95 |
+ #define __thread __declspec(thread) |
96 |
+ |
97 |
+From df7fdd69ac19f26601a80e35f70ec51913838a6e Mon Sep 17 00:00:00 2001 |
98 |
+From: mrambacher <mrambach@×××××.com> |
99 |
+Date: Wed, 14 Apr 2021 10:33:47 -0400 |
100 |
+Subject: [PATCH 2/3] Reset CMAKE_REQUIRED_FLAGS after compilation checks |
101 |
+ |
102 |
+--- |
103 |
+ CMakeLists.txt | 4 +++- |
104 |
+ 1 file changed, 3 insertions(+), 1 deletion(-) |
105 |
+ |
106 |
+diff --git a/CMakeLists.txt b/CMakeLists.txt |
107 |
+index 460d350054..5d167855a7 100644 |
108 |
+--- a/CMakeLists.txt |
109 |
++++ b/CMakeLists.txt |
110 |
+@@ -296,6 +296,7 @@ else() |
111 |
+ endif() |
112 |
+ |
113 |
+ include(CheckCXXSourceCompiles) |
114 |
++set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) |
115 |
+ if(NOT MSVC) |
116 |
+ set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul") |
117 |
+ endif() |
118 |
+@@ -337,7 +338,8 @@ if (NOT BUILTIN_ATOMIC) |
119 |
+ endif() |
120 |
+ endif() |
121 |
+ |
122 |
+-unset(CMAKE_REQUIRED_FLAGS) |
123 |
++# Reset the required flags |
124 |
++set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) |
125 |
+ |
126 |
+ CHECK_CXX_SOURCE_COMPILES(" |
127 |
+ #if defined(_MSC_VER) && !defined(__thread) |
128 |
+ |
129 |
+From 4793c5c75351d5d7c609c27d0243c2138729c7b0 Mon Sep 17 00:00:00 2001 |
130 |
+From: mrambacher <mrambach@×××××.com> |
131 |
+Date: Fri, 16 Apr 2021 08:53:48 -0400 |
132 |
+Subject: [PATCH 3/3] Fix lint warning |
133 |
+ |
134 |
+--- |
135 |
+ CMakeLists.txt | 2 +- |
136 |
+ 1 file changed, 1 insertion(+), 1 deletion(-) |
137 |
+ |
138 |
+diff --git a/CMakeLists.txt b/CMakeLists.txt |
139 |
+index 5d167855a7..558b985073 100644 |
140 |
+--- a/CMakeLists.txt |
141 |
++++ b/CMakeLists.txt |
142 |
+@@ -333,7 +333,7 @@ int main() { |
143 |
+ } |
144 |
+ " BUILTIN_ATOMIC) |
145 |
+ if (NOT BUILTIN_ATOMIC) |
146 |
+- #TODO: Check if -latomic exists |
147 |
++ #TODO: Check if -latomic exists |
148 |
+ list(APPEND THIRDPARTY_LIBS atomic) |
149 |
+ endif() |
150 |
+ endif() |
151 |
|
152 |
diff --git a/dev-libs/rocksdb/rocksdb-6.15.5.ebuild b/dev-libs/rocksdb/rocksdb-6.15.5.ebuild |
153 |
index eca7931e375..c8bb53cec44 100644 |
154 |
--- a/dev-libs/rocksdb/rocksdb-6.15.5.ebuild |
155 |
+++ b/dev-libs/rocksdb/rocksdb-6.15.5.ebuild |
156 |
@@ -25,6 +25,10 @@ DEPEND=" |
157 |
" |
158 |
RDEPEND="${DEPEND}" |
159 |
|
160 |
+PATCHES=( |
161 |
+ "${FILESDIR}"/${PN}-6.14.6-libatomic.patch |
162 |
+) |
163 |
+ |
164 |
src_configure() { |
165 |
mycmakeargs=( |
166 |
-DFAIL_ON_WARNINGS=OFF |
167 |
|
168 |
diff --git a/dev-libs/rocksdb/rocksdb-6.17.3.ebuild b/dev-libs/rocksdb/rocksdb-6.17.3.ebuild |
169 |
index e441ef854c8..76c4d651f8a 100644 |
170 |
--- a/dev-libs/rocksdb/rocksdb-6.17.3.ebuild |
171 |
+++ b/dev-libs/rocksdb/rocksdb-6.17.3.ebuild |
172 |
@@ -25,6 +25,10 @@ DEPEND=" |
173 |
" |
174 |
RDEPEND="${DEPEND}" |
175 |
|
176 |
+PATCHES=( |
177 |
+ "${FILESDIR}"/${PN}-6.14.6-libatomic.patch |
178 |
+) |
179 |
+ |
180 |
src_configure() { |
181 |
mycmakeargs=( |
182 |
-DFAIL_ON_WARNINGS=OFF |