From 7e0b5dc2646707633bf113215c122a8f045476b1 Mon Sep 17 00:00:00 2001 From: Alexander Golubev Date: Thu, 17 Feb 2022 01:05:23 +0300 Subject: sci-libs/flann: revbump to fix MATLAB support + Avoid sed'ing cmake files + Install octave files to a more opropriate locationa Bug: https://bugs.gentoo.org/830424 Signed-off-by: Alexander Golubev Signed-off-by: Sam James --- ...uild-oct-rather-than-mex-files-for-octave.patch | 81 ++++++++++++++++++++ sci-libs/flann/flann-1.9.1-r5.ebuild | 88 ++++++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100644 sci-libs/flann/files/flann-1.9.1-build-oct-rather-than-mex-files-for-octave.patch create mode 100644 sci-libs/flann/flann-1.9.1-r5.ebuild (limited to 'sci-libs/flann') diff --git a/sci-libs/flann/files/flann-1.9.1-build-oct-rather-than-mex-files-for-octave.patch b/sci-libs/flann/files/flann-1.9.1-build-oct-rather-than-mex-files-for-octave.patch new file mode 100644 index 000000000000..f29aef41977c --- /dev/null +++ b/sci-libs/flann/files/flann-1.9.1-build-oct-rather-than-mex-files-for-octave.patch @@ -0,0 +1,81 @@ +From 85d2acc120b0640d02d189089bf113d351c14bba Mon Sep 17 00:00:00 2001 +From: Alexander Golubev +Date: Wed, 16 Feb 2022 21:37:55 +0300 +Subject: [PATCH] build *.oct rather than *.mex files for octave + + * build .oct filse rather than *.mex + * install the file to a sane location obtained from octave-config + * fix a build issue with a recent cmake doesn't like querying target + LOCATION + +Signed-off-by: Alexander Golubev +--- + src/matlab/CMakeLists.txt | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +diff --git a/src/matlab/CMakeLists.txt b/src/matlab/CMakeLists.txt +index a89b6b8..ebacaea 100755 +--- a/src/matlab/CMakeLists.txt ++++ b/src/matlab/CMakeLists.txt +@@ -16,9 +16,6 @@ endif() + + find_program(OCT_CMD mkoctfile) + +-get_property(FLANN_LIB_LOCATION TARGET flann_s PROPERTY LOCATION) +-get_filename_component(FLANN_LIB_PATH ${FLANN_LIB_LOCATION} PATH) +- + if(MEX_CMD AND MEXEXT_CMD) + + get_filename_component(MEX_REAL_CMD ${MEX_CMD} ABSOLUTE) +@@ -48,7 +45,7 @@ if(MEX_CMD AND MEXEXT_CMD) + ADD_CUSTOM_COMMAND( + OUTPUT ${MEX_FILE} + COMMAND ${MEX_REAL_CMD} +- ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${FLANN_LIB_PATH} -lflann_s ${MEX_BUILD_FLAGS} ++ ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${PROJECT_BINARY_DIR}/lib -lflann_s ${MEX_BUILD_FLAGS} + DEPENDS flann_s ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp + COMMENT "Building MEX extension ${MEX_FILE}" + ) +@@ -66,11 +63,11 @@ if(MEX_CMD AND MEXEXT_CMD) + set(BUILD_MATLAB_BINDINGS OFF) + endif() + elseif(OCT_CMD) +- SET(MEX_FILE ${CMAKE_CURRENT_BINARY_DIR}/${MEX_NAME}.mex) ++ SET(MEX_FILE ${CMAKE_CURRENT_BINARY_DIR}/${MEX_NAME}.oct) + ADD_CUSTOM_COMMAND( + OUTPUT ${MEX_FILE} + COMMAND ${OCT_CMD} +- ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${FLANN_LIB_PATH} -DFLANN_STATIC -lflann_s -lgomp --mex ++ ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${PROJECT_BINARY_DIR}/lib -DFLANN_STATIC -lflann_s -lgomp + DEPENDS flann_s ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp + COMMENT "Building MEX extension ${MEX_FILE}" + ) +@@ -79,10 +76,21 @@ elseif(OCT_CMD) + + FILE(GLOB MATLAB_SOURCES *.m) + +- INSTALL ( +- FILES ${MEX_FILE} ${MATLAB_SOURCES} +- DESTINATION share/flann/octave +- ) ++ find_program(OCTAVE_CONFIG_EXECUTABLE NAMES octave-config) ++ ++ if (OCTAVE_CONFIG_EXECUTABLE) ++ execute_process (COMMAND ${OCTAVE_CONFIG_EXECUTABLE} --m-site-dir ++ OUTPUT_VARIABLE OCTAVE_M_SITE_DIR ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ execute_process (COMMAND ${OCTAVE_CONFIG_EXECUTABLE} --oct-site-dir ++ OUTPUT_VARIABLE OCTAVE_OCT_SITE_DIR ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ endif() ++ ++ INSTALL (FILES ${MEX_FILE} DESTINATION ${OCTAVE_OCT_SITE_DIR}) ++ INSTALL (FILES ${MATLAB_SOURCES} DESTINATION ${OCTAVE_M_SITE_DIR}) + else() + message(WARNING "Cannot find MATLAB or Octave instalation. Make sure that the 'bin' directory from the MATLAB instalation or that mkoctfile is in PATH") + set(BUILD_MATLAB_BINDINGS OFF) +-- +2.34.1 + diff --git a/sci-libs/flann/flann-1.9.1-r5.ebuild b/sci-libs/flann/flann-1.9.1-r5.ebuild new file mode 100644 index 000000000000..716c7a4fec72 --- /dev/null +++ b/sci-libs/flann/flann-1.9.1-r5.ebuild @@ -0,0 +1,88 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake cuda flag-o-matic toolchain-funcs + +DESCRIPTION="Fast approximate nearest neighbor searches in high dimensional spaces" +HOMEPAGE="https://github.com/mariusmuja/flann" +SRC_URI="https://github.com/mariusmuja/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86 ~amd64-linux ~x86-linux" +IUSE="cuda doc examples mpi octave openmp" + +BDEPEND=" + app-arch/unzip + doc? ( dev-tex/latex2html ) +" +DEPEND=" + app-arch/lz4:= + cuda? ( >=dev-util/nvidia-cuda-toolkit-5.5 ) + mpi? ( + dev-libs/boost:=[mpi] + sci-libs/hdf5[mpi] + ) + !mpi? ( !sci-libs/hdf5[mpi] ) + octave? ( >=sci-mathematics/octave-3.6.4-r1:= ) +" +RDEPEND="${DEPEND}" +# TODO: +# readd dependencies for test suite, +# requires multiple ruby dependencies + +PATCHES=( + "${FILESDIR}"/${P}-cmake-3.11{,-1}.patch # bug 678030 + "${FILESDIR}"/${P}-cuda-9.patch + "${FILESDIR}"/${P}-system-lz4.patch # bug 681898 + "${FILESDIR}"/${P}-system-lz4-pkgconfig.patch # bug 827263 + "${FILESDIR}"/${P}-build-oct-rather-than-mex-files-for-octave.patch # bug 830424 +) + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +src_prepare() { + # bug #302621 + use mpi && export CXX=mpicxx + + use cuda && cuda_src_prepare + + cmake_src_prepare +} + +src_configure() { + append-cxxflags -std=c++11 + + # python bindings are split off into dev-python/pyflann + local mycmakeargs=( + -DBUILD_C_BINDINGS=ON + -DBUILD_PYTHON_BINDINGS=OFF + -DPYTHON_EXECUTABLE= + -DBUILD_CUDA_LIB=$(usex cuda) + -DBUILD_EXAMPLES=$(usex examples) + -DBUILD_DOC=$(usex doc) + -DBUILD_TESTS=OFF + -DBUILD_MATLAB_BINDINGS=$(usex octave) + -DUSE_MPI=$(usex mpi) + -DUSE_OPENMP=$(usex openmp) + ) + use cuda && mycmakeargs+=( + -DCUDA_NVCC_FLAGS="${NVCCFLAGS} --linker-options \"-arsch\"" + ) + use doc && mycmakeargs+=( -DDOCDIR=share/doc/${PF} ) + + cmake_src_configure +} + +src_install() { + cmake_src_install + find "${D}" -name 'lib*.a' -delete || die +} -- cgit v1.2.3-65-gdbad