[Tarantool-patches] [PATCH v2] static build: create new build w/o dockerfile
Sergey Bronnikov
sergeyb at tarantool.org
Wed Apr 1 12:59:01 MSK 2020
LGTM
On 19:53 Thu 19 Dec , Alexander Tikhonov wrote:
>
>
>
> >Четверг, 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
--
sergeyb@
More information about the Tarantool-patches
mailing list