Refinitiv / Real-Time-SDK

Other
184 stars 129 forks source link

Building C++ Elektron SDK on our Linux platform #107

Closed envtkach19 closed 5 years ago

envtkach19 commented 5 years ago

Our case is most similar to https://github.com/Refinitiv/Elektron-SDK/issues/86 but there does not seem to be any final resolution there. The issue is that prebuilt libraries seem to come only in two flavors, as above issue name suggests "C++ SDK dependency: builds for non RHEL6_64_GCC444 or OL7_64_GCC482"

We initially attempted approach similar to above forum issue by creating symlinks so named ( LIN3_64_GCC485 ) pointing to RHEL6_64_GCC444 under a few places where cmake / build stumbled, like installdb ; Cpp-C/Eta/Libs and Cpp-C/Ema/Libs.

Having to create symlinks does not sound like a great solution but it got us over this initial hurdle and then we encountered below error related to Dacs;

[ 27%] Built target Provider_shared make[2]: No rule to make target Elektron-SDK-BinaryPack_dacs_LIBRARY-NOTFOUND', needed by/home/auser/Elektron-SDK-1.3.0.L1.linux/setup/Elektron-SDK-1.3.0.L1.linux.rrg/Cpp-C/Eta/Executables/LIN3_64_GCC485/Optimized/authlock'. Stop. make[1]: [Cpp-C/Eta/Applications/Examples/AuthLock/CMakeFiles/authlock.dir/all] Error 2

The root cause seems to be that for dacs and ansi Utils libraries cmake step computed target names that are LIBRARY-NOTFOUND.

So this is where my colleague and I stopped for now; I am reluctant to start changing cmake files for now as I feel this should just work.

If I examine CMakeCache.txt, for example, we see that include path for ansi and dacs looks good but for some reason library path is not computed correctly by cmake even though it exists as Libs/RHEL6_64_GCC444/Optimized/libdacs.a and we created symlink based Libs/LIN3_64_GCC485/Optimized/libdacs.a

What is the right way to approach both issues: (1) initial issue -- building on Linux/gcc but different from anticipated build targets and (2) specifics dacs Cmake LIBRARY_NOT_FOUND issue

Any suggestions?

geoffmallard commented 5 years ago

Yes, internally we only support pre-built libraries for a few Linux versions and flavors. However, the CMake build does attempt to normalize those dependencies to help with linking the pre-built libraries on other Linux platforms. The path created by the CMake build which contains, LIN3_64_GCC485, gives a hint you may not have lsb_release installed or in your path. If lsb_release is not found, then it will attempt to use 'uname' to identify the OS. The results from uname are best guess and as we identify new cases, it will be updated. Can you tell me on what Linux are you try to build?

envtkach19 commented 5 years ago

Hi,

Our Linux is 3.10.0-957.el7.x86_64 #1 SMP Thu Oct 4 20:48:51 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

We have a number of flavors including some older ones; I am attempting it on this one for now as I expect bigger problems on the older ones, so trying on this one.

I can try to get lsb_release installed if that helps.

From: geoffmallard [mailto:notifications@github.com] Sent: Friday, June 14, 2019 9:14 AM To: Refinitiv/Elektron-SDK Elektron-SDK@noreply.github.com Cc: Vladimir Tkach vladimir.tkach@fastmatchfx.com; Author author@noreply.github.com Subject: Re: [Refinitiv/Elektron-SDK] Building C++ Elektron SDK on our Linux platform (#107)

Yes, internally we only support pre-built libraries for a few Linux versions and flavors. However, the CMake build does attempt to normalize those dependencies to help with linking the pre-built libraries on other Linux platforms. The path created by the CMake build which contains, LIN3_64_GCC485, gives a hint you may not have lsb_release installed or in your path. If lsb_release is not found, then it will attempt to use 'uname' to identify the OS. The results from uname are best guess and as we identify new cases, it will be updated. Can you tell me on what Linux are you try to build?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/Refinitiv/Elektron-SDK/issues/107?email_source=notifications&email_token=AMLLQXZW4ZPDTADQMY6I2GLP2OKTFA5CNFSM4HYGND6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXWYEAQ#issuecomment-502104578, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMLLQXZO4B7HFGB7T4EZE6DP2OKTFANCNFSM4HYGND6A.

geoffmallard commented 5 years ago

Yes, that would be great if you could verify if building with lsb_release installed still produces this problem. The OS on my VirtualBox is the same as your machine. I was able to verify my build, using gcc v4.8.5, links with the dacs library: Elektron-SDK-BinaryPack/Cpp-C/Eta/Utils/Dacs/Libs/OL7_64_GCC482/Optimized/libdacs.a Let me know if you have different results.

envtkach19 commented 5 years ago

Hi, Thanks, I did a build from scratch and it looks like it works. I will now try to understand how to use the SDK for our purpose.

From: geoffmallard [mailto:notifications@github.com] Sent: Friday, June 14, 2019 11:40 AM To: Refinitiv/Elektron-SDK Elektron-SDK@noreply.github.com Cc: Vladimir Tkach vladimir.tkach@fastmatchfx.com; Author author@noreply.github.com Subject: Re: [Refinitiv/Elektron-SDK] Building C++ Elektron SDK on our Linux platform (#107)

Yes, that would be great if you could verify if building with lsb_release installed still produces this problem. The OS on my VirtualBox is the same as your machine. I was able to verify my build, using gcc v4.8.5, links with the dacs library: Elektron-SDK-BinaryPack/Cpp-C/Eta/Utils/Dacs/Libs/OL7_64_GCC482/Optimized/libdacs.a Let me know if you have different results.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/Refinitiv/Elektron-SDK/issues/107?email_source=notifications&email_token=AMLLQX7GDS2W6PBY3V4QCZTP2O3VBA5CNFSM4HYGND6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXXFGDY#issuecomment-502158095, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMLLQX3ZG432YJLXHRJ5DETP2O3VBANCNFSM4HYGND6A.