[ 
https://issues.apache.org/jira/browse/THRIFT-5785?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Petr Mánek updated THRIFT-5785:
-------------------------------
    Description: 
Hello, ever since upgrading from version 0.19 to 0.20, I am seeing a new error 
when compiling my Thrift-based software:
{code:java}
In file included from /redacted/RemoteControl.cpp:7:
In file included from /redacted/RemoteControl.h:10:
In file included from /opt/local/lib/../include/thrift/TDispatchProcessor.h:22:
In file included from /opt/local/lib/../include/thrift/TProcessor.h:24:
In file included from /opt/local/lib/../include/thrift/protocol/TProtocol.h:46:
In file included from 
/opt/local/lib/../include/thrift/transport/TTransport.h:25:
/opt/local/lib/../include/thrift/transport/TTransportException.h:23:10: fatal 
error: 'boost/numeric/conversion/cast.hpp' file not found
#include <boost/numeric/conversion/cast.hpp> {code}
I have confirmed that 'cast.hpp' is correctly installed in my system, but for 
some reason CMake does not add its include path to compiler invocation, so the 
file is not seen during compilation. Furthermore, based on synthesized compiler 
flags it seems that Thrift's CMake package does not declare public dependency 
on boost::numeric, but nonetheless includes it in public headers. This may be 
related to THRIFT-5660.

For now I mitigate this issue by making my CMake target explicitly depend on 
Apache Thrift as well as boost::numeric. However, since I do not directly use 
Boost whereas Thrift does, I should not have to do that. Instead, it seems much 
more cleaner to me if Thrift publicly depended on boost::numeric or removed the 
offending #include directive from its public headers.

  was:
Hello, ever since upgrading from version 0.19 to 0.20, I am seeing a new error 
when compiling my Thrift-based software:

 
{code:java}
In file included from /redacted/RemoteControl.h:10:
In file included from /opt/local/lib/../include/thrift/TDispatchProcessor.h:22:
In file included from /opt/local/lib/../include/thrift/TProcessor.h:24:
In file included from /opt/local/lib/../include/thrift/protocol/TProtocol.h:46:
In file included from 
/opt/local/lib/../include/thrift/transport/TTransport.h:23:
/opt/local/lib/../include/thrift/Thrift.h:54:19: warning: 
'iterator<std::forward_iterator_tag, std::pair<int, const char *>>' is 
deprecated [-Wdeprecated-declarations]
: public std::iterator<std::forward_iterator_tag, std::pair<int, const char*> > 
{
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__iterator/iterator.h:24:29:
 note: 'iterator<std::forward_iterator_tag, std::pair<int, const char *>>' has 
been explicitly marked deprecated here
struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 iterator
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__config:862:41:
 note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'

define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__config:835:49:
 note: expanded from macro '_LIBCPP_DEPRECATED' define LIBCPP_DEPRECATED 
__attribute_((deprecated))
^
In file included from 
/Users/admin/builds/dUGYoT7P/0/acquisition-framework/tracklab/build/plugins/microdaq/thrift/RemoteControl.cpp:7:
In file included from 
/Users/admin/builds/dUGYoT7P/0/acquisition-framework/tracklab/build/plugins/microdaq/thrift/RemoteControl.h:10:
In file included from /opt/local/lib/../include/thrift/TDispatchProcessor.h:22:
In file included from /opt/local/lib/../include/thrift/TProcessor.h:24:
In file included from /opt/local/lib/../include/thrift/protocol/TProtocol.h:46:
In file included from 
/opt/local/lib/../include/thrift/transport/TTransport.h:25:
/opt/local/lib/../include/thrift/transport/TTransportException.h:23:10: fatal 
error: 'boost/numeric/conversion/cast.hpp' file not found
#include <boost/numeric/conversion/cast.hpp> {code}
I have confirmed that 'cast.hpp' is correctly installed in my system, but for 
some reason CMake does not add its include path to compiler invocation, so the 
file is not seen during compilation. Furthermore, based on synthesized compiler 
flags it seems that Thrift's CMake package does not declare public dependency 
on boost::numeric, but nonetheless includes it in public headers. This may be 
related to THRIFT-5660.

For now I mitigate this issue by making my CMake target explicitly depend on 
Apache Thrift as well as boost::numeric. However, since I do not directly use 
Boost whereas Thrift does, I should not have to do that. Instead, it seems much 
more cleaner to me if Thrift publicly depended on boost::numeric or removed the 
offending #include directive from its public headers.


> TTransportException.h includes 'boost/numeric/conversion/cast.hpp' without 
> target depending on Boost
> ----------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-5785
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5785
>             Project: Thrift
>          Issue Type: Bug
>    Affects Versions: 0.20.0
>         Environment: * macOS 14 (Sonoma)
>  * Host is x86_64, cross-compiling universal binaries for x86_64+aarch64
>  * CMake 3.29, dependencies managed through conventional use of find_package()
>  * AppleClang 15.0.0.15000100
>  * Compiling with -std=gnu++20
>  * Boost 1.81 (from MacPorts)
>  * Apache Thrift 0.20 (from MacPorts, recently upgraded)
>            Reporter: Petr Mánek
>            Priority: Major
>
> Hello, ever since upgrading from version 0.19 to 0.20, I am seeing a new 
> error when compiling my Thrift-based software:
> {code:java}
> In file included from /redacted/RemoteControl.cpp:7:
> In file included from /redacted/RemoteControl.h:10:
> In file included from 
> /opt/local/lib/../include/thrift/TDispatchProcessor.h:22:
> In file included from /opt/local/lib/../include/thrift/TProcessor.h:24:
> In file included from 
> /opt/local/lib/../include/thrift/protocol/TProtocol.h:46:
> In file included from 
> /opt/local/lib/../include/thrift/transport/TTransport.h:25:
> /opt/local/lib/../include/thrift/transport/TTransportException.h:23:10: fatal 
> error: 'boost/numeric/conversion/cast.hpp' file not found
> #include <boost/numeric/conversion/cast.hpp> {code}
> I have confirmed that 'cast.hpp' is correctly installed in my system, but for 
> some reason CMake does not add its include path to compiler invocation, so 
> the file is not seen during compilation. Furthermore, based on synthesized 
> compiler flags it seems that Thrift's CMake package does not declare public 
> dependency on boost::numeric, but nonetheless includes it in public headers. 
> This may be related to THRIFT-5660.
> For now I mitigate this issue by making my CMake target explicitly depend on 
> Apache Thrift as well as boost::numeric. However, since I do not directly use 
> Boost whereas Thrift does, I should not have to do that. Instead, it seems 
> much more cleaner to me if Thrift publicly depended on boost::numeric or 
> removed the offending #include directive from its public headers.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to