Bug 278191 - graphics/openimageio: Option TBB broken since update of misc/openvdb to 11.0.0
Summary: graphics/openimageio: Option TBB broken since update of misc/openvdb to 11.0.0
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-04-06 09:08 UTC by Rainer Hurling
Modified: 2024-05-02 11:36 UTC (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rainer Hurling freebsd_committer freebsd_triage 2024-04-06 09:08:51 UTC
It seems that option TBB is broken since the update of misc/openvdb to 11.0.0. I get the following error on a recent 15.0-CURRENT:

[ 10% 1/10] /usr/bin/c++ -DEMBED_PLUGINS=1 -DOIIO_INTERNAL=1 -DOIIO_USE_EXR_C_API=1 -DOpenImageIO_EXPORTS -DUSE_BOOST_FILESYSTEM -DUSE_DCMTK=1 -DUSE_FREETYPE=1 -DUSE_GIF -DUSE_HEIF=1 -DUSE_JPEG_TURBO=1 -DUSE_LIBRAW=1 -DUSE_OCIO=1 -DUSE_OPENCOLORIO=1 -DUSE_OPENCV=1 -DUSE_OPENJPEG -DUSE_OPENVDB=1 -DUSE_PTEX -DUSE_WEBP=1 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/usr/ports/graphics/openimageio/work/.build/include/OpenImageIO -I/usr/ports/graphics/openimageio/work/.build/include -I/usr/ports/graphics/openimageio/work/.build/src/include -I/usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/include -I/usr/local/include/openjpeg-2.5 -I/OpenEXR -I/usr/local/include/freetype2 -isystem /usr/local/include -isystem /usr/local/include/opencv4 -isystem /usr/local/include/Imath -isystem /usr/local/include/OpenEXR -isystem /usr/local/include/ptex -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -fstack-protector-strong -fno-strict-aliasing   -DNDEBUG -std=c++14 -fPIC -Wall -Wno-unused-function -Wno-overloaded-virtual -Wno-unneeded-internal-declaration -Wno-unused-private-field -Wno-tautological-compare -Qunused-arguments -Wunknown-warning-option -Wno-unused-local-typedefs -Wno-expansion-to-defined -fno-math-errno -pthread -MD -MT src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/openvdb.imageio/openvdbinput.cpp.o -MF src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/openvdb.imageio/openvdbinput.cpp.o.d -o src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/openvdb.imageio/openvdbinput.cpp.o -c /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp
FAILED: src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/openvdb.imageio/openvdbinput.cpp.o 
/usr/bin/c++ -DEMBED_PLUGINS=1 -DOIIO_INTERNAL=1 -DOIIO_USE_EXR_C_API=1 -DOpenImageIO_EXPORTS -DUSE_BOOST_FILESYSTEM -DUSE_DCMTK=1 -DUSE_FREETYPE=1 -DUSE_GIF -DUSE_HEIF=1 -DUSE_JPEG_TURBO=1 -DUSE_LIBRAW=1 -DUSE_OCIO=1 -DUSE_OPENCOLORIO=1 -DUSE_OPENCV=1 -DUSE_OPENJPEG -DUSE_OPENVDB=1 -DUSE_PTEX -DUSE_WEBP=1 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/usr/ports/graphics/openimageio/work/.build/include/OpenImageIO -I/usr/ports/graphics/openimageio/work/.build/include -I/usr/ports/graphics/openimageio/work/.build/src/include -I/usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/include -I/usr/local/include/openjpeg-2.5 -I/OpenEXR -I/usr/local/include/freetype2 -isystem /usr/local/include -isystem /usr/local/include/opencv4 -isystem /usr/local/include/Imath -isystem /usr/local/include/OpenEXR -isystem /usr/local/include/ptex -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -fstack-protector-strong -fno-strict-aliasing   -DNDEBUG -std=c++14 -fPIC -Wall -Wno-unused-function -Wno-overloaded-virtual -Wno-unneeded-internal-declaration -Wno-unused-private-field -Wno-tautological-compare -Qunused-arguments -Wunknown-warning-option -Wno-unused-local-typedefs -Wno-expansion-to-defined -fno-math-errno -pthread -MD -MT src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/openvdb.imageio/openvdbinput.cpp.o -MF src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/openvdb.imageio/openvdbinput.cpp.o.d -o src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/openvdb.imageio/openvdbinput.cpp.o -c /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp
In file included from /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp:14:
In file included from /usr/local/include/openvdb/openvdb.h:8:
In file included from /usr/local/include/openvdb/Types.h:9:
/usr/local/include/openvdb/TypeList.h:858:41: error: no template named 'tuple_size_v' in namespace 'std'; did you mean 'tuple_size'?
  858 |     constexpr auto size() { return std::tuple_size_v<TupleT>; }
      |                                    ~~~~~^
/usr/include/c++/v1/__tuple/tuple_size.h:25:50: note: 'tuple_size' declared here
   25 | template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size;
      |                                                  ^
In file included from /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp:14:
In file included from /usr/local/include/openvdb/openvdb.h:8:
In file included from /usr/local/include/openvdb/Types.h:9:
/usr/local/include/openvdb/TypeList.h:858:61: error: expected '(' for function-style cast or type construction
  858 |     constexpr auto size() { return std::tuple_size_v<TupleT>; }
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/openvdb/TypeList.h:962:41: error: no template named 'tuple_size_v' in namespace 'std'; did you mean 'tuple_size'?
  962 |     constexpr auto size() { return std::tuple_size_v<TupleT>; }
      |                                    ~~~~~^
/usr/include/c++/v1/__tuple/tuple_size.h:25:50: note: 'tuple_size' declared here
   25 | template <class _Tp> struct _LIBCPP_TEMPLATE_VIS tuple_size;
      |                                                  ^
In file included from /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp:14:
In file included from /usr/local/include/openvdb/openvdb.h:8:
In file included from /usr/local/include/openvdb/Types.h:9:
/usr/local/include/openvdb/TypeList.h:962:61: error: expected '(' for function-style cast or type construction
  962 |     constexpr auto size() { return std::tuple_size_v<TupleT>; }
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~^
In file included from /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp:14:
In file included from /usr/local/include/openvdb/openvdb.h:11:
In file included from /usr/local/include/openvdb/math/Maps.h:14:
/usr/local/include/openvdb/io/io.h:92:51: error: no member named 'any' in namespace 'std'
   92 |     using AuxDataMap = std::map<std::string, std::any>;
      |                                              ~~~~~^
/usr/local/include/openvdb/io/io.h:95:5: error: unknown type name 'AuxDataMap'
   95 |     AuxDataMap& auxData();
      |     ^
/usr/local/include/openvdb/io/io.h:96:11: error: unknown type name 'AuxDataMap'
   96 |     const AuxDataMap& auxData() const;
      |           ^
/usr/local/include/openvdb/io/io.h:116:63: error: no type named 'AuxDataMap' in 'openvdb::v11_0::io::StreamMetadata'
  116 | std::ostream& operator<<(std::ostream&, const StreamMetadata::AuxDataMap&);
      |                                               ~~~~~~~~~~~~~~~~^
In file included from /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp:14:
In file included from /usr/local/include/openvdb/openvdb.h:13:
In file included from /usr/local/include/openvdb/Grid.h:12:
In file included from /usr/local/include/openvdb/tree/Tree.h:21:
/usr/local/include/openvdb/tree/ValueAccessor.h:313:44: error: no member named 'scoped_lock' in namespace 'std'; did you mean 'adopt_lock'?
  313 |     inline auto lock() const { return std::scoped_lock(m); }
      |                                       ~~~~~^
/usr/include/c++/v1/__mutex/tag_types.h:41:24: note: 'adopt_lock' declared here
   41 | constexpr adopt_lock_t adopt_lock   = adopt_lock_t();
      |                        ^
In file included from /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp:14:
In file included from /usr/local/include/openvdb/openvdb.h:13:
In file included from /usr/local/include/openvdb/Grid.h:12:
In file included from /usr/local/include/openvdb/tree/Tree.h:21:
/usr/local/include/openvdb/tree/ValueAccessor.h:977:36: error: no type named 'invoke_result' in namespace 'std'
  977 |         using RetT = typename std::invoke_result<OpT, IndexT>::type;
      |                      ~~~~~~~~~~~~~~^~~~~~~~~~~~~
/usr/local/include/openvdb/tree/ValueAccessor.h:977:49: error: expected ';' after alias declaration
  977 |         using RetT = typename std::invoke_result<OpT, IndexT>::type;
      |                                                 ^
/usr/local/include/openvdb/tree/ValueAccessor.h:978:65: error: use of undeclared identifier 'RetT'
  978 |         return openvdb::evalFirstIndex<0, NumCacheLevels+1>(op, RetT(NULL));
      |                                                                 ^
/usr/local/include/openvdb/tree/ValueAccessor.h:992:36: error: no type named 'invoke_result' in namespace 'std'
  992 |         using RetT = typename std::invoke_result<OpT, RootNodeT*>::type;
      |                      ~~~~~~~~~~~~~~^~~~~~~~~~~~~
/usr/local/include/openvdb/tree/ValueAccessor.h:992:49: error: expected ';' after alias declaration
  992 |         using RetT = typename std::invoke_result<OpT, RootNodeT*>::type;
      |                                                 ^
/usr/local/include/openvdb/tree/ValueAccessor.h:993:36: error: use of undeclared identifier 'RetT'
  993 |         if constexpr(!std::is_same<RetT, void>::value) {
      |                                    ^
/usr/local/include/openvdb/tree/ValueAccessor.h:994:51: error: use of undeclared identifier 'RetT'
  994 |             return mNodes.evalFirstPred(pred, op, RetT(false));
      |                                                   ^
In file included from /usr/ports/graphics/openimageio/work/oiio-2.4.13.0/src/openvdb.imageio/openvdbinput.cpp:14:
In file included from /usr/local/include/openvdb/openvdb.h:15:
/usr/local/include/openvdb/points/PointDataGrid.h:1159:66: error: no type named 'AuxDataMap' in 'openvdb::v11_0::io::StreamMetadata'
 1159 |         static void destroyPagedStream(const io::StreamMetadata::AuxDataMap& auxData, const Index index)
      |                                              ~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/openvdb/points/PointDataGrid.h:1169:99: error: no type named 'AuxDataMap' in 'openvdb::v11_0::io::StreamMetadata'
 1169 |         static compression::PagedInputStream& getOrInsertPagedStream(   const io::StreamMetadata::AuxDataMap& auxData,
      |                                                                               ~~~~~~~~~~~~~~~~~~~~^
/usr/local/include/openvdb/points/PointDataGrid.h:1184:69: error: no type named 'AuxDataMap' in 'openvdb::v11_0::io::StreamMetadata'
 1184 |         static bool hasMatchingDescriptor(const io::StreamMetadata::AuxDataMap& auxData)
      |                                                 ~~~~~~~~~~~~~~~~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
ninja: build stopped: subcommand failed.
*** Error code 1
Comment 2 Yuri Victorovich freebsd_committer freebsd_triage 2024-04-06 15:10:03 UTC
I think that this has to do with the C++ standard level used by graphics/openimageio.

You can try to adjust it in graphics/openimageio to match what openvdb uses. I will try this once I have time.
Comment 3 Rainer Hurling freebsd_committer freebsd_triage 2024-04-06 15:32:49 UTC
(In reply to Yuri Victorovich from comment #2)

Only changing compiler:c++14-lang into compiler:c++17-lang (as in misc/openvdb) does not work for me :(
Comment 4 Yuri Victorovich freebsd_committer freebsd_triage 2024-04-06 16:29:23 UTC
(In reply to Rainer Hurling from comment #3)

Try
USE_CXXSTD=        c++17
or
USE_CXXSTD=        c++20

Yuri
Comment 5 Shane 2024-04-07 01:42:22 UTC
#bug 275818 already includes a change to use c++17 which was added to resolve the build with newer openvdb versions.
Comment 6 Rainer Hurling freebsd_committer freebsd_triage 2024-05-02 11:36:26 UTC
(In reply to Shane from comment #5)
Sorry for the late answer.

Yes, changing the cxx standard works for me on CURRENT. But 'CMAKE_ARGS+=-DCMAKE_CXX_STANDARD:INTEGER=17' is needed instead of 'USE_CXXSTD=c++17', as you did in #bug 275818.

I will close this PR, because #bug 275818 seem to handle my issue.