Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sci-libs/flann/, sci-libs/flann/files/
Date: Sat, 23 May 2020 10:53:08
Message-Id: 1590231170.2951aa020dc9973598a0ed83c1a92c512fbe19b9.asturm@gentoo
1 commit: 2951aa020dc9973598a0ed83c1a92c512fbe19b9
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Sat May 23 09:38:04 2020 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Sat May 23 10:52:50 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2951aa02
7
8 sci-libs/flann: Use system-lz4 and fix underlinking
9
10 Closes: https://bugs.gentoo.org/681898
11 Package-Manager: Portage-2.3.99, Repoman-2.3.22
12 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
13
14 sci-libs/flann/files/flann-1.9.1-system-lz4.patch | 125 ++++++++++++++++++++++
15 sci-libs/flann/flann-1.9.1-r3.ebuild | 94 ++++++++++++++++
16 2 files changed, 219 insertions(+)
17
18 diff --git a/sci-libs/flann/files/flann-1.9.1-system-lz4.patch b/sci-libs/flann/files/flann-1.9.1-system-lz4.patch
19 new file mode 100644
20 index 00000000000..dcc9fedd4a9
21 --- /dev/null
22 +++ b/sci-libs/flann/files/flann-1.9.1-system-lz4.patch
23 @@ -0,0 +1,125 @@
24 +From: Jochen Sprickerhof <git@××××××××××××××××××.de>
25 +Date: Sun, 14 Oct 2018 00:25:05 +0200
26 +Subject: Use system version of liblz4
27 +
28 +Also make sure that flann_cpp is linked against LZ4.
29 +---
30 + CMakeLists.txt | 3 +++
31 + cmake/flann.pc.in | 2 +-
32 + examples/CMakeLists.txt | 3 +++
33 + src/cpp/CMakeLists.txt | 8 ++++++--
34 + src/cpp/flann/util/serialization.h | 4 ++--
35 + 5 files changed, 15 insertions(+), 5 deletions(-)
36 +
37 +diff --git a/CMakeLists.txt b/CMakeLists.txt
38 +index a01fb7a..995e54e 100644
39 +--- a/CMakeLists.txt
40 ++++ b/CMakeLists.txt
41 +@@ -142,6 +142,9 @@ if (BUILD_CUDA_LIB)
42 + endif(CUDA_FOUND)
43 + endif(BUILD_CUDA_LIB)
44 +
45 ++find_package(PkgConfig REQUIRED)
46 ++pkg_check_modules(LZ4 REQUIRED liblz4)
47 ++
48 + #set the C/C++ include path to the "include" directory
49 + include_directories(BEFORE ${PROJECT_SOURCE_DIR}/src/cpp)
50 +
51 +diff --git a/cmake/flann.pc.in b/cmake/flann.pc.in
52 +index 82eee5e..07b8d64 100644
53 +--- a/cmake/flann.pc.in
54 ++++ b/cmake/flann.pc.in
55 +@@ -8,6 +8,6 @@ Name: @PROJECT_NAME@
56 + Description: @PKG_DESC@
57 + Version: @FLANN_VERSION@
58 + Requires: @PKG_EXTERNAL_DEPS@
59 +-Libs: -L${libdir} -lflann -lflann_cpp
60 ++Libs: -L${libdir} @LZ4_STATIC_LDFLAGS@ -lflann -lflann_cpp
61 + Cflags: -I${includedir}
62 +
63 +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
64 +index e9fef04..2b2bb9d 100644
65 +--- a/examples/CMakeLists.txt
66 ++++ b/examples/CMakeLists.txt
67 +@@ -3,6 +3,7 @@ add_custom_target(examples ALL)
68 +
69 + if (BUILD_C_BINDINGS)
70 + add_executable(flann_example_c flann_example.c)
71 ++ target_link_libraries(flann_example_c -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state)
72 + target_link_libraries(flann_example_c flann)
73 + set_target_properties(flann_example_c PROPERTIES COMPILE_FLAGS -std=c99)
74 +
75 +@@ -14,6 +15,7 @@ if (HDF5_FOUND)
76 + include_directories(${HDF5_INCLUDE_DIRS})
77 +
78 + add_executable(flann_example_cpp flann_example.cpp)
79 ++ target_link_libraries(flann_example_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state)
80 + target_link_libraries(flann_example_cpp ${HDF5_LIBRARIES} flann_cpp)
81 + if (HDF5_IS_PARALLEL)
82 + target_link_libraries(flann_example_cpp ${MPI_LIBRARIES})
83 +@@ -25,6 +27,7 @@ if (HDF5_FOUND)
84 +
85 + if (USE_MPI AND HDF5_IS_PARALLEL)
86 + add_executable(flann_example_mpi flann_example_mpi.cpp)
87 ++ target_link_libraries(flann_example_mpi -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state)
88 + target_link_libraries(flann_example_mpi flann_cpp ${HDF5_LIBRARIES} ${MPI_LIBRARIES} ${Boost_LIBRARIES})
89 +
90 + add_dependencies(examples flann_example_mpi)
91 +diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt
92 +index b453b27..5c4f693 100644
93 +--- a/src/cpp/CMakeLists.txt
94 ++++ b/src/cpp/CMakeLists.txt
95 +@@ -4,11 +4,12 @@ add_definitions(-D_FLANN_VERSION=${FLANN_VERSION})
96 +
97 + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/flann/config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/flann/config.h)
98 +
99 +-file(GLOB_RECURSE C_SOURCES flann.cpp lz4.c lz4hc.c)
100 +-file(GLOB_RECURSE CPP_SOURCES flann_cpp.cpp lz4.c lz4hc.c)
101 ++file(GLOB_RECURSE C_SOURCES flann.cpp)
102 ++file(GLOB_RECURSE CPP_SOURCES flann_cpp.cpp)
103 + file(GLOB_RECURSE CU_SOURCES *.cu)
104 +
105 + add_library(flann_cpp_s STATIC ${CPP_SOURCES})
106 ++target_link_libraries(flann_cpp_s ${LZ4_LIBRARIES})
107 + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
108 + set_target_properties(flann_cpp_s PROPERTIES COMPILE_FLAGS -fPIC)
109 + endif()
110 +@@ -42,6 +43,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC)
111 + endif()
112 + else()
113 + add_library(flann_cpp SHARED ${CPP_SOURCES})
114 ++ target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state)
115 + if (BUILD_CUDA_LIB)
116 + cuda_add_library(flann_cuda SHARED ${CPP_SOURCES})
117 + set_property(TARGET flann_cpp PROPERTY COMPILE_DEFINITIONS FLANN_USE_CUDA)
118 +@@ -77,6 +79,7 @@ endif()
119 +
120 + if (BUILD_C_BINDINGS)
121 + add_library(flann_s STATIC ${C_SOURCES})
122 ++ target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state)
123 + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
124 + set_target_properties(flann_s PROPERTIES COMPILE_FLAGS -fPIC)
125 + endif()
126 +@@ -88,6 +91,7 @@ if (BUILD_C_BINDINGS)
127 + target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive)
128 + else()
129 + add_library(flann SHARED ${C_SOURCES})
130 ++ target_link_libraries(flann_cpp -Wl,--push-state,--no-as-needed ${LZ4_LIBRARIES} -Wl,--pop-state)
131 +
132 + if(MINGW AND OPENMP_FOUND)
133 + target_link_libraries(flann gomp)
134 +diff --git a/src/cpp/flann/util/serialization.h b/src/cpp/flann/util/serialization.h
135 +index d731021..cdc2e5e 100644
136 +--- a/src/cpp/flann/util/serialization.h
137 ++++ b/src/cpp/flann/util/serialization.h
138 +@@ -6,8 +6,8 @@
139 + #include <cstdlib>
140 + #include <cstring>
141 + #include <stdio.h>
142 +-#include "flann/ext/lz4.h"
143 +-#include "flann/ext/lz4hc.h"
144 ++#include <lz4.h>
145 ++#include <lz4hc.h>
146 +
147 +
148 + namespace flann
149
150 diff --git a/sci-libs/flann/flann-1.9.1-r3.ebuild b/sci-libs/flann/flann-1.9.1-r3.ebuild
151 new file mode 100644
152 index 00000000000..b34a54471dc
153 --- /dev/null
154 +++ b/sci-libs/flann/flann-1.9.1-r3.ebuild
155 @@ -0,0 +1,94 @@
156 +# Copyright 1999-2020 Gentoo Authors
157 +# Distributed under the terms of the GNU General Public License v2
158 +
159 +EAPI=7
160 +
161 +inherit cmake cuda flag-o-matic toolchain-funcs
162 +
163 +DESCRIPTION="Fast approximate nearest neighbor searches in high dimensional spaces"
164 +HOMEPAGE="https://www.cs.ubc.ca/research/flann/"
165 +SRC_URI="https://github.com/mariusmuja/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
166 +
167 +LICENSE="BSD"
168 +SLOT="0"
169 +KEYWORDS="amd64 ~arm arm64 ~ppc x86 ~amd64-linux ~x86-linux"
170 +IUSE="cuda doc examples mpi octave openmp"
171 +
172 +BDEPEND="
173 + app-arch/unzip
174 + doc? ( dev-tex/latex2html )
175 +"
176 +DEPEND="
177 + app-arch/lz4:=
178 + cuda? ( >=dev-util/nvidia-cuda-toolkit-5.5 )
179 + mpi? (
180 + dev-libs/boost:=[mpi]
181 + sci-libs/hdf5[mpi]
182 + )
183 + !mpi? ( !sci-libs/hdf5[mpi] )
184 + octave? ( >=sci-mathematics/octave-3.6.4-r1 )
185 +"
186 +RDEPEND="${DEPEND}"
187 +# TODO:
188 +# readd dependencies for test suite,
189 +# requires multiple ruby dependencies
190 +
191 +PATCHES=(
192 + "${FILESDIR}"/${P}-cmake-3.11{,-1}.patch # bug 678030
193 + "${FILESDIR}"/${P}-cuda-9.patch
194 + "${FILESDIR}"/${P}-system-lz4.patch # bug 681898
195 +)
196 +
197 +pkg_pretend() {
198 + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
199 +}
200 +
201 +pkg_setup() {
202 + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
203 +}
204 +
205 +src_prepare() {
206 + # bug #302621
207 + use mpi && export CXX=mpicxx
208 + # produce pure octave files
209 + # octave gentoo installation for .m files respected
210 + sed -i \
211 + -e 's/--mex//' \
212 + -e 's/\.mex/\.oct/' \
213 + -e '/FILES/s/${MEX_FILE}//' \
214 + -e 's:share/flann/octave:share/octave/site/m:' \
215 + -e "/CUSTOM_TARGET/a\INSTALL(FILES \${MEX_FILE} DESTINATION libexec/octave/site/oct/${CHOST})" \
216 + src/matlab/CMakeLists.txt || die
217 + use cuda && cuda_src_prepare
218 +
219 + cmake_src_prepare
220 +}
221 +
222 +src_configure() {
223 + append-cxxflags -std=c++11
224 +
225 + # python bindings are split off into dev-python/pyflann
226 + local mycmakeargs=(
227 + -DBUILD_C_BINDINGS=ON
228 + -DBUILD_PYTHON_BINDINGS=OFF
229 + -DPYTHON_EXECUTABLE=
230 + -DBUILD_CUDA_LIB=$(usex cuda)
231 + -DBUILD_EXAMPLES=$(usex examples)
232 + -DBUILD_DOC=$(usex doc)
233 + -DBUILD_TESTS=OFF
234 + -DBUILD_MATLAB_BINDINGS=$(usex octave)
235 + -DUSE_MPI=$(usex mpi)
236 + -DUSE_OPENMP=$(usex openmp)
237 + )
238 + use cuda && mycmakeargs+=(
239 + -DCUDA_NVCC_FLAGS="${NVCCFLAGS} --linker-options \"-arsch\""
240 + )
241 + use doc && mycmakeargs+=( -DDOCDIR=share/doc/${PF} )
242 +
243 + cmake_src_configure
244 +}
245 +
246 +src_install() {
247 + cmake_src_install
248 + find "${D}" -name 'lib*.a' -delete || die
249 +}