Refinitiv / Real-Time-SDK

Other
180 stars 128 forks source link

ETA 2.1.2.L1 doesn't build on Intel Red Hat 9 - UBI9 #250

Closed andysCaplin closed 2 weeks ago

andysCaplin commented 10 months ago

We build the latest release of the ETA library on several OS versions and the latest release built fine on Intel Red Hat 6,7 and 8 but failed with the issue below on Red Hat Enterprise Linux 9 UBI9 - which is available here - https://hub.docker.com/r/redhat/ubi9 as a docker image.

The issue is a warning in the code that fails the build because all warnings are treated as errors.

[ 87%] Performing install step for 'gtest'
[ 25%] Building CXX object googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
In file included from /builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-all.cc:42:
/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-death-test.cc: In function ‘bool testing::internal::StackGrowsDown()’:
/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-death-test.cc:1224:24: error: ‘dummy’ may be used uninitialized [-Werror=maybe-uninitialized]
 1224 |   StackLowerThanAddress(&dummy, &result);
      |   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-death-test.cc:1214:13: note: by argument 1 of type ‘const void*’ to ‘void testing::internal::StackLowerThanAddress(const void*, bool*)’ declared here
 1214 | static void StackLowerThanAddress(const void* ptr, bool* result) {
      |             ^~~~~~~~~~~~~~~~~~~~~
/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-death-test.cc:1222:7: note: ‘dummy’ declared here
 1222 |   int dummy;
      |       ^~~~~
cc1plus: all warnings being treated as errors
gmake[5]: *** [googletest/CMakeFiles/gtest.dir/build.make:76: googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o] Error 1
gmake[4]: *** [CMakeFiles/Makefile2:126: googletest/CMakeFiles/gtest.dir/all] Error 2
gmake[3]: *** [Makefile:146: all] Error 2
gmake[2]: *** [CMakeFiles/gtest.dir/build.make:105: gtest-prefix/src/gtest-stamp/gtest-install] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/gtest.dir/all] Error 2
gmake: *** [Makefile:91: all] Error 2
CMake Error at CMake/rcdevExternalUtils.cmake:189 (message):
  External Project Build step for gtest in
  /builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest
  failed: 2
Call Stack (most recent call first):
  CMake/addExternal_gtest.cmake:132 (rcdev_config_build_ep)
  CMakeLists.txt:32 (include)
-- Configuring incomplete, errors occurred!
See also "/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/CMakeFiles/CMakeOutput.log".
2023/09/11-17:08:49: [ERROR] Refinitiv: Cmake build step failed, code 1 (handle_return)
L-Karchevska commented 10 months ago

@andysCaplin Thank you for letting us know about this issue, we will run the tests and fix it in forthcoming releases.

andysCaplin commented 4 months ago

Do you know when this can be fixed. All it takes to work on EL9 is to initialise dummy to 0 .

andysCaplin commented 4 months ago

Also, when I apply that fix locally and attempt to build VAProvider I get this error

make[3]: *** No rule to make target 'RTSDK-BinaryPack_rsslVACache_LIBRARY-NOTFOUND', needed by '../Cpp-C/Eta/Executables/LIN5_64_GCC1141/Optimized/VAProvider'.  Stop.
make[2]: *** [CMakeFiles/Makefile2:4732: Cpp-C/Eta/Applications/Examples/VAProvider/CMakeFiles/VAProvider.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:4739: Cpp-C/Eta/Applications/Examples/VAProvider/CMakeFiles/VAProvider.dir/rule] Error 2
make: *** [Makefile:917: VAProvider] Error 2
andysCaplin commented 4 months ago

When I say setting dummy to 0 makes the build work I mean that if I do that I can complete cmake and build the 2 libraries I need to build. i.e.

But when I build other stuff like VAProvider - that still fails.

vlevendel commented 2 weeks ago

@andysCaplin Addressed with tag Real-Time-SDK-2.2.1.L1-CppC. Closing. Please reach out if there are more concerns.

andysCaplin commented 1 week ago

Real-Time-SDK-2.2.1.L1-CppC did not fix the issue. See details below for our build on EL9. It's still getting gtest 1.8.1.

Weirdly when I do the build on EL9 locally it gets https://github.com/abseil/googletest/archive/release-1.12.1.tar.gz and fails in a different way.

The patch fix I did still works.

CI build logs are below

Note: switching to 'tags/Real-Time-SDK-2.2.1.L1-CppC'
...

- Build files have been written to: /builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/build
[ 12%] Creating directories for 'gtest'
[ 25%] Performing download step (download, verify and extract) for 'gtest'
-- Downloading...
   dst='/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/dlcache/gtest-release-1.8.1.tar.gz'
   timeout='none'
   inactivity timeout='none'
-- Using src='https://github.com/abseil/googletest/archive/release-1.8.1.tar.gz'
-- verifying file...
       file='/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/dlcache/gtest-release-1.8.1.tar.gz'
-- Downloading... done
-- extracting...
     src='/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/dlcache/gtest-release-1.8.1.tar.gz'
     dst='/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source'

-- Found PythonInterp: /usr/local/bin/python (found version "2.7.18") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:
    gtest_force_shared_crt
-- Build files have been written to: /builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source
[ 75%] No build step for 'gtest'
[ 87%] Performing install step for 'gtest'
[ 25%] Building CXX object googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
In file included from /builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-all.cc:42:
/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-death-test.cc: In function ‘bool testing::internal::StackGrowsDown()’:
/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-death-test.cc:1224:24: error: ‘dummy’ may be used uninitialized [-Werror=maybe-uninitialized]
 1224 |   StackLowerThanAddress(&dummy, &result);
      |   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-death-test.cc:1214:13: note: by argument 1 of type ‘const void*’ to ‘void testing::internal::StackLowerThanAddress(const void*, bool*)’ declared here
 1214 | static void StackLowerThanAddress(const void* ptr, bool* result) {
      |             ^~~~~~~~~~~~~~~~~~~~~
/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest/source/googletest/src/gtest-death-test.cc:1222:7: note: ‘dummy’ declared here
 1222 |   int dummy;
      |       ^~~~~
cc1plus: all warnings being treated as errors
gmake[5]: *** [googletest/CMakeFiles/gtest.dir/build.make:76: googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o] Error 1
gmake[4]: *** [CMakeFiles/Makefile2:126: googletest/CMakeFiles/gtest.dir/all] Error 2
gmake[3]: *** [Makefile:146: all] Error 2
gmake[2]: *** [CMakeFiles/gtest.dir/build.make:105: gtest-prefix/src/gtest-stamp/gtest-install] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/gtest.dir/all] Error 2
gmake: *** [Makefile:91: all] Error 2
CMake Error at CMake/rcdevExternalUtils.cmake:189 (message):
  External Project Build step for gtest in
  /builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/external/BUILD/gtest
  failed: 2
Call Stack (most recent call first):
  CMake/addExternal_gtest.cmake:147 (rcdev_config_build_ep)
  CMakeLists.txt:32 (include)
-- Configuring incomplete, errors occurred!
See also "/builds/platform/c-development/3rd-party/refinitiv/Elektron-SDK/build-esdk/CMakeFiles/CMakeOutput.log".