Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
I recently encountered a few portability issues with libhdfs++ while trying to build it as a stand alone project (and also as part of another Apache project).
1. Method fixCase in configuration.h file produces a warning "conversion to ‘char’ from ‘int’ may alter its value [-Werror=conversion]" which does not allow libhdfs++ to be compiled as part of the codebase that treats such warnings as errors (can be fixed with a simple cast).
2. In CMakeLists.txt file (in libhdfspp directory) we do find_package(Threads) however we do not link it to the targets (e.g. hdfspp_static), which causes the build to fail with pthread errors. After the Threads package is found we need to link it using ${CMAKE_THREAD_LIBS_INIT}.
3. All the tools and examples fail to build as part of a standalone libhdfs++ because they are missing multiple libraries such as protobuf, ssl, pthread, etc. This happens because we link them to a shared library hdfspp instead of hdfspp_static library. We should either link all the tools and examples to hdfspp_static library or explicitly add linking to all missing libraries for each tool/example.