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