<HTML><BODY>Alexander,<br><br>Thanks for the review, updated commit message as you suggested.<br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Четверг,  5 декабря 2019, 4:49 +03:00 от Alexander Turenko <alexander.turenko@tarantool.org>:<br><br><div id=""><div class="js-helper js-readmsg-msg"><div><div id="style_15755105661900185799_BODY">LGTM.<br><br>
I'm okay with the approach I proposed, of course :) My review would be<br>
insufficient.<br><br>
Serge, can you do the second review?<br><br>
WBR, Alexander Turenko.<br><br>
                                 > build: fix unit tests build with lrt<br><br>
Nit: librt or -ltr<br><br>
Or just 'on CentOS 6'. All those details about librt are described in<br>
the commit message below, while the header would be better if it will<br>
give us an idea why the commit was made.<br></div></div></div></div></blockquote>Corrected commit message added 'on CentOS 6' add '-lrt', (use of 'librt' exceeded the limit of the commit message length)<br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;"><div id=""><div class="js-helper js-readmsg-msg"><div><div id="style_15755105661900185799_BODY"><br>
> After the commit 77fa45bd05f8cdd4c0f9bad85185ef5b61528d49<br>
> ('lua: add fiber.top() listing fiber cpu consumption')<br>
> the unit tests builds failed like:<br>
> <br>
> /opt/rh/devtoolset-6/root/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/ld:<br>
>   ../../src/lib/core/libcore.a(fiber.c.o): undefined reference to symbol<br>
>   'clock_gettime@@GLIBC_2.2.5'<br>
> //lib64/librt.so.1: error adding symbols: DSO missing from command line<br>
> collect2: error: ld returned 1 exit status<br>
> test/unit/CMakeFiles/cbus.test.dir/build.make:108: recipe for target<br>
>   'test/unit/cbus.test' failed<br>
> make[2]: *** [test/unit/cbus.test] Error 1<br>
> <br>
> Found that fiber.cc is using now clock_gettime(), which requires -lrt<br>
> with glibc. To fix it added librt dependency for core library for glibc.<br>
> Due to glibc requires for -lrt for clock_gettime() only for some<br>
> versions, check 'man clock_gettime.2':<br>
>   'Link with -lrt (only for glibc versions before 2.17).'<br>
> the check whether is able to use clock_gettime() w/o librt library is<br>
> added.<br>
> <br>
> Close #4639<br>
> ---<br>
> <br>
> Github: <a href="https://github.com/tarantool/tarantool/tree/avtikhon/gh-4639-lrt-suggested-full-ci" target="_blank">https://github.com/tarantool/tarantool/tree/avtikhon/gh-4639-lrt-suggested-full-ci</a><br>
> Issue: <a href="https://github.com/tarantool/tarantool/issues/4639" target="_blank">https://github.com/tarantool/tarantool/issues/4639</a><br>
> <br>
>  CMakeLists.txt              | 6 ++++++<br>
>  src/lib/core/CMakeLists.txt | 8 ++++++++<br>
>  2 files changed, 14 insertions(+)<br>
> <br>
> diff --git a/CMakeLists.txt b/CMakeLists.txt<br>
> index 7d6c0846e..ca968eb8d 100644<br>
> --- a/CMakeLists.txt<br>
> +++ b/CMakeLists.txt<br>
> @@ -116,6 +116,12 @@ else ()<br>
>      set(HAVE_CLOCK_GETTIME ${HAVE_CLOCK_GETTIME_DECL})<br>
>  endif ()<br>
>  set(CMAKE_REQUIRED_LIBRARIES "")<br>
> +# According to `man 2 clockgettime` the glibc wrapper requires<br>
> +# -lrt on glibc versions before 2.17. We need to check whether<br>
> +# the function is available without -lrt to set this linker option<br>
> +# conditionally.<br>
> +check_function_exists(clock_gettime HAVE_CLOCK_GETTIME_WITHOUT_RT)<br>
> +<br>
>  check_symbol_exists(__get_cpuid cpuid.h HAVE_CPUID)<br>
>  <br>
>  # Checks for libev<br>
> diff --git a/src/lib/core/CMakeLists.txt b/src/lib/core/CMakeLists.txt<br>
> index e60b5199e..8623aa0de 100644<br>
> --- a/src/lib/core/CMakeLists.txt<br>
> +++ b/src/lib/core/CMakeLists.txt<br>
> @@ -46,3 +46,11 @@ target_link_libraries(core salad small uri decNumber ${LIBEV_LIBRARIES}<br>
>  if (ENABLE_BACKTRACE AND NOT TARGET_OS_DARWIN)<br>
>      target_link_libraries(core gcc_s ${UNWIND_LIBRARIES})<br>
>  endif()<br>
> +<br>
> +# Since fiber.top() introduction, fiber.cc, which is part of core<br>
> +# library, depends on clock_gettime() syscall, so we should set<br>
> +# -lrt when it is appropriate. See a comment for<br>
> +# HAVE_CLOCK_GETTIME_WITHOUT_RT in ${REPO}/CMakeLists.txt.<br>
> +if ("${HAVE_CLOCK_GETTIME}" AND NOT "${HAVE_CLOCK_GETTIME_WITHOUT_RT}")<br>
> +    target_link_libraries(core rt)<br>
> +endif()<br>
> -- <br>
> 2.17.1<br>
> <br></div></div></div></div></blockquote>
<br>
<br>-- <br>Alexander Tikhonov<br></BODY></HTML>