<HTML><BODY><br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Четверг, 19 декабря 2019, 15:45 +03:00 от Igor Munkin <imun@tarantool.org>:<br><br><div id=""><div class="js-helper js-readmsg-msg"><div><div id="style_15767595531439392443_BODY">Sasha,<br><br>
Thanks, LGTM. Please consider several side notes below.<br><br>
On 10.12.19, Alexander V. Tikhonov wrote:<br>
                                 > Fixed static build with '-DBUILD_STATIC=ON' option:<br>
> <br>
>  - installed liblzma-dev library for libunwind static, due to found that<br>
>    static libunwind library uses undefined lzma functions:<br>
>      nm -a /usr/lib/x86_64-linux-gnu/libunwind-x86_64.a | grep lzma<br>
>                  U lzma_index_buffer_decode<br>
>                  U lzma_index_end<br>
>                  U lzma_index_size<br>
>                  U lzma_index_uncompressed_size<br>
>                  U lzma_stream_buffer_decode<br>
>                  U lzma_stream_footer_decode<br>
>    while dynamic libunwind correctly sees liblzma installed:<br>
>      ldd /usr/lib/x86_64-linux-gnu/libunwind-x86_64.so | grep lzma<br>
>        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f8fd1c23000)<br>
>    so to fix it the static library of lzma was needed.<br>
> <br>
>  - added lzma library to unwind library for Tarantool build at file:<br>
>      cmake/compiler.cmake<br>
>    due to fail:<br>
>      /usr/lib/x86_64-linux-gnu/libunwind-x86_64.a(elf64.o):<br>
>        In function `xz_uncompressed_size':<br>
>      ./src/elfxx.c:194: undefined reference to `lzma_stream_footer_decode'<br>
>      ./src/elfxx.c:201: undefined reference to `lzma_index_buffer_decode'<br>
>      ./src/elfxx.c:205: undefined reference to `lzma_index_size'<br>
>      ./src/elfxx.c:210: undefined reference to `lzma_index_end'<br>
>      ./src/elfxx.c:207: undefined reference to `lzma_index_uncompressed_size'<br>
>      ./src/elfxx.c:210: undefined reference to `lzma_index_end'<br>
>      /usr/lib/x86_64-linux-gnu/libunwind-x86_64.a(elf64.o):<br>
>        In function `_Uelf64_extract_minidebuginfo':<br>
>      ./src/elfxx.c:278: undefined reference to `lzma_stream_buffer_decode'<br>
>      collect2: error: ld returned 1 exit status<br>
>      test/unit/CMakeFiles/luaL_iterator.test.dir/build.make:134:<br>
>        recipe for target 'test/unit/luaL_iterator.test' failed<br>
>      make[2]: *** [test/unit/luaL_iterator.test] Error 1<br>
> <br>
>  - added dl library to gomp library for test/unit tests<br>
>    binaries builds at file:<br>
>      cmake/BuildMisc.cmake<br>
>    due to fail:<br>
>      /usr/lib/gcc/x86_64-linux-gnu/7/libgomp.a(target.o):(.text+0x34d):<br>
>        more undefined references to `dlsym' follow<br>
>      /usr/lib/gcc/x86_64-linux-gnu/7/libgomp.a(target.o): In function<br>
>        `gomp_target_init':<br>
>      (.text+0x9cc): undefined reference to `dlerror'<br>
>      collect2: error: ld returned 1 exit status<br>
> <br>
>   - added dl library to icu library for test/unit tests<br>
>    binaries builds at file:<br>
>      cmake/FindICU.cmake<br>
>    due to fail:<br>
>      /usr/x86_64-linux-gnu/libicuuc.a(putil.ao):<br>
>        In function `uprv_dl_open_60':<br>
>      (.text+0x1ce2): undefined reference to `dlopen'<br>
>      /usr/x86_64-linux-gnu/libicuuc.a(putil.ao):<br>
>        In function `uprv_dlsym_func_60':<br>
>      (.text+0x1d3d): undefined reference to `dlsym'<br>
>      /usr/x86_64-linux-gnu/libicuuc.a(putil.ao):<br>
>        In function `uprv_dl_close_60':<br>
>      (.text+0x1d21): undefined reference to `dlclose'<br>
>      collect2: error: ld returned 1 exit status<br>
> <br>
> Added static build to gitlab-ci in release check criteria named<br>
> as static_build job. Previously named static_build job renamed to<br>
> static_docker_build, due to it checks the build at Dockerfile.<br>
> <br>
> Also moved static build make targets from .gitlab.mk to .travis.mk<br>
> to store it in common place with the other test/build make targets.<br>
> Moved environement from .gitlab-ci.yml file into make targets to<br>
> make this targets true building in static w/o additional setup.<br>
> <br>
> Close #4551<br>
> ---<br>
> <br>
> Github: <a href="https://github.com/tarantool/tarantool/tree/avtikhon/gh-4551-static-build-full-ci" target="_blank">https://github.com/tarantool/tarantool/tree/avtikhon/gh-4551-static-build-full-ci</a><br>
> Issue: <a href="https://github.com/tarantool/tarantool/issues/4551" target="_blank">https://github.com/tarantool/tarantool/issues/4551</a><br>
> <br>
>  .gitlab-ci.yml        | 12 +++++++++---<br>
>  .gitlab.mk            |  9 +--------<br>
>  .travis.mk            | 16 ++++++++++++++++<br>
>  cmake/BuildMisc.cmake |  2 +-<br>
>  cmake/FindICU.cmake   |  2 +-<br>
>  cmake/compiler.cmake  | 11 +++++++++++<br>
>  6 files changed, 39 insertions(+), 13 deletions(-)<br><br>
<snipped><br><br>
>  # Pass *_no_deps goals to .travis.mk.<br>
> -test_%_no_deps: git_submodule_update<br>
> +test_%: git_submodule_update<br>
>    ${TRAVIS_MAKE} $@<br>
>  <br><br>
Side note: As discussed offline, please create a ticket for the<br>
follow up activity to reduce a mess with the make target naming.<br></div></div></div></div></blockquote><p>Right, created the issue<br></p><p><a href="https://github.com/tarantool/tarantool/issues/4694" data-mce-href="https://github.com/tarantool/tarantool/issues/4694">https://github.com/tarantool/tarantool/issues/4694</a><br data-mce-bogus="1"></p><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_15767595531439392443_BODY"><br>
>  # #######################################################<br><br>
<snipped><br><br>
> diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake<br>
> index c9ad2b092..56429dc20 100644<br>
> --- a/cmake/compiler.cmake<br>
> +++ b/cmake/compiler.cmake<br>
> @@ -171,6 +171,17 @@ if (ENABLE_BACKTRACE)<br>
>              NAMES ${UNWIND_PLATFORM_LIB_NAME})<br>
>          set(UNWIND_LIBRARIES ${UNWIND_PLATFORM_LIBRARY} ${UNWIND_LIBRARY})<br>
>      endif()<br>
> +    if (BUILD_STATIC)<br>
> +        # some versions of libunwind need liblzma, and we don't use pkg-config<br>
> +        # so we just look whether liblzma is installed, and add it if it is.<br>
> +        # It might not be actually needed, but doesn't hurt if it is not.<br>
> +        # We don't need any headers, just the lib, as it's privately needed.<br>
> +        find_library(LZMA_LIBRARY PATH_SUFFIXES system NAMES liblzma.a)<br>
> +        if (NOT LZMA_LIBRARY STREQUAL "LZMA_LIBRARY-NOTFOUND")<br>
> +            message(STATUS "liblzma found")<br>
> +            set(UNWIND_LIBRARIES ${UNWIND_LIBRARIES} ${LZMA_LIBRARY})<br>
> +        endif()<br>
> +    endif()<br><br>
Side note: We discussed offline with Sasha Tu. whether there is a better<br>
way to maintain such indirect dependencies and decided to proceed with<br>
the research within a separate issue.<br></div></div></div></div></blockquote><p>Sure, created issue<br></p><p><a href="https://github.com/tarantool/tarantool/issues/4695" data-mce-href="https://github.com/tarantool/tarantool/issues/4695">https://github.com/tarantool/tarantool/issues/4695</a><br data-mce-bogus="1"></p><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_15767595531439392443_BODY"><br>
>      find_package_message(UNWIND_LIBRARIES "Found unwind" "${UNWIND_LIBRARIES}")<br>
>  endif()<br>
>  <br>
> -- <br>
> 2.17.1<br>
> <br><br>
-- <br>
Best regards,<br>
IM<br></div></div></div></div></blockquote>
<br>
<br>-- <br>Alexander Tikhonov<br></BODY></HTML>