[Tarantool-patches] [PATCH v2] static build: create new build w/o dockerfile

Alexander Tikhonov avtikhon at tarantool.org
Thu Dec 19 19:53:24 MSK 2019




>Четверг, 19 декабря 2019, 15:45 +03:00 от Igor Munkin <imun at 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(-)
>
><snipped>
>
>>  # 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
>
>>  # #######################################################
>
><snipped>
>
>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20191219/b3b01dc8/attachment.html>


More information about the Tarantool-patches mailing list