Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Datapanic opened this issue Jun 20, 2024 · 2 comments

Comments

@Datapanic
Copy link

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 -D__STDC_CONSTANT_MACROS -D__STDC_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::hashoidn::DeviceType'
: 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::hashoidn::DeviceType>' 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::hashoidn::DeviceType, 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::hashoidn::DeviceType>' 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::hashoidn::DeviceType, std::equal_tooidn::DeviceType, std::allocatoroidn::DeviceType>' 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_setoidn::DeviceType' 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
Copy link

we are seeing the same build failure on the homebrew side

Homebrew/homebrew-core#174767

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

@atafra
Copy link
Collaborator

atafra commented Jun 21, 2024

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: e5e52d3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants