RenderKit / oidn

Intel® Open Image Denoise library
https://www.openimagedenoise.org/
Apache License 2.0
1.72k stars 158 forks source link

graphics/oidn fails to build with "error: implicit instantiation of undefined template 'std::hash<oidn::DeviceType>'" #225

Open Datapanic opened 1 week ago

Datapanic commented 1 week ago

Platform: FreeBSD_13-2x64 amd64 Poudriere ports builder Log snippet: ... [ 50%] Building CXX object core/CMakeFiles/OpenImageDenoise_core.dir/context.cpp.o cd /wrkdirs/usr/ports/graphics/oidn/work/.build/core && /usr/local/libexec/ccache/c++ -DOIDN_LIBRARY_NAME=\"OpenImageDenoise\" -DOpenImageDenoise_core_EXPORTS -DSTDC_CONSTANT_MACROS -DSTDC_LIMIT_MACROS -I/wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0 -I/wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/external -I/wrkdirs/usr/ports/graphics/oidn/work/.build -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -Wall -Wno-unknown-pragmas -Wno-pass-failed -Wno-unneeded-internal-declaration -fPIC -Wformat -Wformat-security -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -DNDEBUG -fstack-protector -D_FORTIFY_SOURCE=2 -std=c++11 -fPIC -pthread -MD -MT core/CMakeFiles/OpenImageDenoise_core.dir/context.cpp.o -MF CMakeFiles/OpenImageDenoise_core.dir/context.cpp.o.d -o CMakeFiles/OpenImageDenoise_core.dir/context.cpp.o -c /wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/core/context.cpp In file included from /wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/core/context.cpp:4: In file included from /wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/core/context.h:6: In file included from /wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/core/module.h:6: In file included from /wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/common/common.h:6: In file included from /wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/common/oidn_utils.h:6: In file included from /wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/include/OpenImageDenoise/oidn.hpp:10: In file included from /usr/include/c++/v1/algorithm:664: In file included from /usr/include/c++/v1/debug:15: /usr/include/c++/v1/type_traits:1773:38: error: implicit instantiation of undefined template 'std::hash' : public integral_constant<bool, is_empty(_Tp)> {}; ^ /usr/include/c++/v1/memory/compressed_pair.h:31:15: note: in instantiation of template class 'std::is_empty<std::hash>' requested here is_empty<_Tp>::value && !libcpp_is_final<_Tp>::value> ^ /usr/include/c++/v1/memory/compressed_pair.h:104:35: note: in instantiation of default argument for 'compressed_pair_elem<std::hash, 1>' required here private compressed_pair_elem<_T2, 1> { ^~~~~~~~~~ /usr/include/c++/v1/hash_table:953:59: note: in instantiation of template class 'std::compressed_pair<unsigned long, std::hash>' requested here compressed_pair<size_type, hasher> p2_; ^ /usr/include/c++/v1/unordered_set:502:13: note: in instantiation of template class 'std::hash_table<oidn::DeviceType, std::hash, std::equal_to, std::allocator>' requested here table _table; ^ /wrkdirs/usr/ports/graphics/oidn/work/oidn-2.3.0/core/context.h:119:36: note: in instantiation of template class 'std::unordered_set' requested here std::unordered_set initedDeviceTypes; ^ /usr/include/c++/v1/memory/shared_ptr.h:1552:50: note: template is declared here template struct _LIBCPP_TEMPLATE_VIS hash; ^ 1 error generated. *** Error code 1

Stop. ...

chenrui333 commented 1 week ago

we are seeing the same build failure on the homebrew side

https://github.com/Homebrew/homebrew-core/pull/174767

full build log, https://github.com/Homebrew/homebrew-core/actions/runs/9550658641/job/26327782909

atafra commented 1 week ago

This seems to be caused by a known issue in older libc++ versions, which has been fixed in later versions. I pushed a workaround to devel: https://github.com/RenderKit/oidn/commit/e5e52d335c58365b6cbd91f9a8a6f9ee9a085bf5