Gentoo Archives: gentoo-commits

From: Marek Szuba <marecki@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/rocksdb/files/, dev-libs/rocksdb/
Date: Thu, 02 Sep 2021 11:03:20
Message-Id: 1630579855.9a5672672cbda260a4fb713a266f50f4724f23df.marecki@gentoo
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