mapillary / mapillary/OpenSfM

error: no matching function for call to 'fpclassify' AND error: no matching function for call to 'hypot'

Open
#1,071 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
3.8k
Forks
899
PR merge metrics
No merged PRs in 30d

Description

I am trying to run python3 setup.py build, and am getting the following output:

8 warnings generated.
[ 98%] Linking CXX shared module parent/OpenSfM/opensfm/pysfm.cpython-39-darwin.so
13 warnings and 2 errors generated.
make[2]: *** [bundle/CMakeFiles/bundle_test.dir/test/reprojection_errors_test.cc.o] Error 1
make[1]: *** [bundle/CMakeFiles/bundle_test.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 98%] Built target pysfm
make: *** [all] Error 2
Traceback (most recent call last):
  File "parent/OpenSfM/setup.py", line 60, in <module>
    build_c_extension()
  File "parent/OpenSfM/setup.py", line 54, in build_c_extension
    subprocess.check_call(
  File "/opt/homebrew/Cellar/python@3.9/3.9.19_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/subprocess.py", line 373, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['make', '-j8']' returned non-zero exit status 2.

I scrolled up and found the two errors are /opt/homebrew/Cellar/ceres-solver/2.2.0_1/include/ceres/rotation.h:801:7: error: no matching function for call to 'fpclassify' and /opt/homebrew/Cellar/ceres-solver/2.2.0_1/include/ceres/rotation.h:799:19: error: no matching function for call to 'hypot'.

I looked into rotation.h and noted these functions are pulled from <cmath>. I tried executing these functions in a separate cpp file and had no issue.

A few things to note (unsure if related or not):

  1. I am using python 3.9
  2. I am using MacOS
  3. I set pyyaml to 5.3.1 in requirements.txt as I was having issues with 5.4
  4. I put add_definitions(-DVL_DISABLE_SSE2) into CMakeLists.txt as I was having issues with SSE2
  5. I also put set(OpenMP_libomp_LIBRARY "/opt/homebrew/opt/libomp/lib/libomp.dylib") and set(OpenMP_CXX_INCLUDE_DIR "/opt/homebrew/opt/libomp/include") in CMakeLists.txt
  6. I'm using set(CMAKE_CXX_STANDARD 17) in CMakeLists.txt
  7. I changed the directories in the #include statements in rotation.h to point to the correct directories of the specified files as such:
#include "constants.h"
#include "internal/euler_angles.h"
#include "../../../../glog/0.6.0/include/glog/logging.h"

Any help on this would be greatly appreciated!

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with python3 setup.py build and inspect the CMakeLists.txt configuration alongside the diagnostics from ceres/rotation.h. Check the bundle/test/reprojection_errors_test.cc compilation and the configured C++17, OpenMP, and SSE2 settings; done means the bundle_test target and overall build complete successfully without the fpclassify and hypot errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp, python
Domain
build-system, computer-vision
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.