Package Details: ceres-solver 2.0.0-1

Git Clone URL: https://aur.archlinux.org/ceres-solver.git (read-only, click to copy)
Package Base: ceres-solver
Description: Solver for nonlinear least squares problems
Upstream URL: http://ceres-solver.org/
Licenses: LGPL
Submitter: dtag
Maintainer: dtag
Last Packager: dtag
Votes: 17
Popularity: 0.028664
First Submitted: 2015-11-27 09:36
Last Updated: 2020-11-02 14:15

Latest Comments

1 2 3 4 Next › Last »

bartus commented on 2021-08-31 13:07

Could we have eigen version pined during build to prevent desync of eigen and ceres resulting in a cmake error:

CMake Error at /usr/lib64/cmake/Ceres/CeresConfig.cmake:85 (message):
Failed to find Ceres - Found Eigen dependency, but the version of Eigen
found (3.4.0) does not exactly match the version of Eigen Ceres was
compiled with (3.3.9).  This can cause subtle bugs by triggering violations
of the One Definition Rule.  See the Wikipedia article
http://en.wikipedia.org/wiki/One_Definition_Rule for more details

Sample implementation (future-proof yet sane ;) : http://ix.io/3xxk/diff

Merge with git am -s < <(curl -s http://ix.io/3xxk)

dtag commented on 2020-11-02 14:15

@greve: I have changed the PKGBUILD accordingly. Please try reinstalling.

greve commented on 2020-11-01 13:17

@dtag: Yes, it builds when adding the -DBUILD_BENCHMARKS=OFF flag to the cmake command.

dtag commented on 2020-10-31 07:17

@greve: I have looked into this. The errror-causing files are related to benchmarking functionality within ceres. This benchmarking part is only built when the Google 'benchmark' library is found. (At least, the AUR version benchmark-git does not appear to compile for me.) Why your seemingly valid configuration gets you these unresolved externals is not quite clear to me, but you could try to avoid the issue by adding -D BUILD_BENCHMARKS=OFF to see if that fixes things for you? If it does, I think we could just add BUILD_BENCHMARKS=OFF to the PKGBUILD, as I do not believe it is required for any functionality.

greve commented on 2020-10-30 23:43

Error when compiling (already retried with cleaned cache). Using yay:

[ 92%] Building CXX object internal/ceres/CMakeFiles/ceres.dir/generated/schur_eliminator_d_d_d.cc.o
[ 93%] Linking CXX shared library ../../lib/libceres.so
[ 93%] Built target ceres
Scanning dependencies of target schur_eliminator_benchmark
[ 93%] Building CXX object internal/ceres/CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o
/home/nico/.cache/yay/ceres-solver/src/ceres-solver-2.0.0/internal/ceres/schur_eliminator_benchmark.cc:130:6: warning: no previous declaration for ‘void ceres::internal::BM_SchurEliminatorEliminate(benchmark::State&)’ [-Wmissing-declarations]
  130 | void BM_SchurEliminatorEliminate(benchmark::State& state) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/nico/.cache/yay/ceres-solver/src/ceres-solver-2.0.0/internal/ceres/schur_eliminator_benchmark.cc:153:6: warning: no previous declaration for ‘void ceres::internal::BM_SchurEliminatorBackSubstitute(benchmark::State&)’ [-Wmissing-declarations]
  153 | void BM_SchurEliminatorBackSubstitute(benchmark::State& state) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/nico/.cache/yay/ceres-solver/src/ceres-solver-2.0.0/internal/ceres/schur_eliminator_benchmark.cc:181:6: warning: no previous declaration for ‘void ceres::internal::BM_SchurEliminatorForOneFBlockEliminate(benchmark::State&)’ [-Wmissing-declarations]
  181 | void BM_SchurEliminatorForOneFBlockEliminate(benchmark::State& state) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/nico/.cache/yay/ceres-solver/src/ceres-solver-2.0.0/internal/ceres/schur_eliminator_benchmark.cc:195:6: warning: no previous declaration for ‘void ceres::internal::BM_SchurEliminatorForOneFBlockBackSubstitute(benchmark::State&)’ [-Wmissing-declarations]
  195 | void BM_SchurEliminatorForOneFBlockBackSubstitute(benchmark::State& state) {
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 94%] Linking CXX executable ../../bin/schur_eliminator_benchmark
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::BM_SchurEliminatorEliminate(benchmark::State&)':
schur_eliminator_benchmark.cc:(.text+0x65): undefined reference to `ceres::internal::ThreadPool::ThreadPool()'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x109): undefined reference to `ceres::internal::SchurEliminatorBase::Create(ceres::internal::LinearSolver::Options const&)'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x11e): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x3a1): undefined reference to `ceres::internal::ThreadPool::~ThreadPool()'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x484): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::BM_SchurEliminatorBackSubstitute(benchmark::State&)':
schur_eliminator_benchmark.cc:(.text+0x675): undefined reference to `ceres::internal::ThreadPool::ThreadPool()'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x719): undefined reference to `ceres::internal::SchurEliminatorBase::Create(ceres::internal::LinearSolver::Options const&)'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x72e): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x92b): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0xa11): undefined reference to `ceres::internal::ThreadPool::~ThreadPool()'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0xaf2): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::BM_SchurEliminatorForOneFBlockEliminate(benchmark::State&)':
schur_eliminator_benchmark.cc:(.text+0xd22): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x1065): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::BM_SchurEliminatorForOneFBlockBackSubstitute(benchmark::State&)':
schur_eliminator_benchmark.cc:(.text+0x1262): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text+0x147f): undefined reference to `ceres::internal::BlockSparseMatrix::block_structure() const'
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o:schur_eliminator_benchmark.cc:(.text+0x15f5): more undefined references to `ceres::internal::BlockSparseMatrix::block_structure() const' follow
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::ContextImpl::~ContextImpl()':
schur_eliminator_benchmark.cc:(.text._ZN5ceres8internal11ContextImplD2Ev[_ZN5ceres8internal11ContextImplD5Ev]+0x11): undefined reference to `ceres::internal::ThreadPool::~ThreadPool()'
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::ContextImpl::~ContextImpl()':
schur_eliminator_benchmark.cc:(.text._ZN5ceres8internal11ContextImplD0Ev[_ZN5ceres8internal11ContextImplD5Ev]+0x15): undefined reference to `ceres::internal::ThreadPool::~ThreadPool()'
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::BenchmarkData::BenchmarkData(int)':
schur_eliminator_benchmark.cc:(.text._ZN5ceres8internal13BenchmarkDataC2Ei[_ZN5ceres8internal13BenchmarkDataC5Ei]+0x241): undefined reference to `ceres::internal::BlockSparseMatrix::BlockSparseMatrix(ceres::internal::CompressedRowBlockStructure*)'
/usr/bin/ld: schur_eliminator_benchmark.cc:(.text._ZN5ceres8internal13BenchmarkDataC2Ei[_ZN5ceres8internal13BenchmarkDataC5Ei]+0x3dc): undefined reference to `ceres::internal::BlockRandomAccessDenseMatrix::BlockRandomAccessDenseMatrix(std::vector<int, std::allocator<int> > const&)'
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::BM_SchurEliminatorEliminate(benchmark::State&) [clone .cold]':
schur_eliminator_benchmark.cc:(.text.unlikely+0x37): undefined reference to `ceres::internal::ThreadPool::~ThreadPool()'
/usr/bin/ld: CMakeFiles/schur_eliminator_benchmark.dir/schur_eliminator_benchmark.cc.o: in function `ceres::internal::BM_SchurEliminatorBackSubstitute(benchmark::State&) [clone .cold]':
schur_eliminator_benchmark.cc:(.text.unlikely+0x96): undefined reference to `ceres::internal::ThreadPool::~ThreadPool()'
collect2: error: ld returned 1 exit status
make[2]: *** [internal/ceres/CMakeFiles/schur_eliminator_benchmark.dir/build.make:108: bin/schur_eliminator_benchmark] Error 1
make[1]: *** [CMakeFiles/Makefile2:171: internal/ceres/CMakeFiles/schur_eliminator_benchmark.dir/all] Error 2
make: *** [Makefile:160: all] Error 2
==> ERROR: A failure occurred in build().
    Aborting...
error making: ceres-solver

The weird thing is, that it compiled without any errors on my laptop.

And when pulling the official ceres-solver repo and compiling the master branch like so, it compiles just fine.

dtag commented on 2020-10-08 10:45

@xantares: This appears to be a bug in the current Eigen release as you can see here: https://bugs.archlinux.org/task/68118 the link also lists a possible workaround. I guess we have to wait until this is fixed in the Eigen package?

Edit: Compilation works again as per eigen 3.3.8-3

xantares commented on 2020-10-08 10:09

hello, it seems it fails to build with the eigen update

edit nevermind, see eigen-qfix

schmidtbag commented on 2019-09-09 23:15

@dtag: I too noticed it was weird how it pointed to /share/eigen3/cmake, but /share is a symlink to /usr/share. That being said, I confirmed eigen3 is in /usr/share/eigen3/cmake; as expected. I'm not really sure when Arch started doing this symlink; I know I didn't do that. I actually didn't even notice it until right now. I wonder if perhaps this symlink is somehow screwing with the build? I'm a bit wary of deleting it, since I don't know why it exists in the first place.

dtag commented on 2019-09-09 11:26

@schmidtbag: Might be an issue on your end. I cannot reproduce this on multiple machines. Also, it is weird that it says "-- Found installed version of Eigen: /share/eigen3/cmake". This is not a location where you should have installed eigen. Specifically, the eigen package does not do that. It should be saying: "-- Found installed version of Eigen: /usr/share/eigen3/cmake".

schmidtbag commented on 2019-09-08 16:08

Seems to have issues finding eigen:

-- No preference for use of exported Eigen CMake configuration set, and no hints for include directory provided. Defaulting to preferring an installed/exported Eigen CMake configuration if available.
-- Found installed version of Eigen: /share/eigen3/cmake
CMake Error at cmake/FindEigen.cmake:89 (message):
Failed to find Eigen - Could not find file:
//include/eigen3/Eigen/src/Core/util/Macros.h containing version
information in Eigen install located at: //include/eigen3.
Call Stack (most recent call first):
cmake/FindEigen.cmake:219 (eigen_report_not_found)
CMakeLists.txt:212 (find_package)