error: no matching function for call to 'fpclassify' AND error: no matching function for call to 'hypot'
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):
- I am using python 3.9
- I am using MacOS
- I set
pyyamlto5.3.1inrequirements.txtas I was having issues with5.4 - I put
add_definitions(-DVL_DISABLE_SSE2)intoCMakeLists.txtas I was having issues with SSE2 - I also put
set(OpenMP_libomp_LIBRARY "/opt/homebrew/opt/libomp/lib/libomp.dylib")andset(OpenMP_CXX_INCLUDE_DIR "/opt/homebrew/opt/libomp/include")in CMakeLists.txt - I'm using
set(CMAKE_CXX_STANDARD 17)inCMakeLists.txt - I changed the directories in the
#includestatements inrotation.hto 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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