From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp38.i.mail.ru (smtp38.i.mail.ru [94.100.177.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id F314E441840 for ; Wed, 1 Apr 2020 12:59:03 +0300 (MSK) Date: Wed, 1 Apr 2020 12:59:01 +0300 From: Sergey Bronnikov Message-ID: <20200401095901.GF11949@pony.bronevichok.ru> References: <550dd2918764269f001232814fb36b20409fcf2a.1575982467.git.avtikhon@tarantool.org> <20191219124343.GY1214@tarantool.org> <1576774404.22502288@f473.i.mail.ru> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1576774404.22502288@f473.i.mail.ru> Subject: Re: [Tarantool-patches] [PATCH v2] static build: create new build w/o dockerfile List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Tikhonov Cc: tarantool-patches@dev.tarantool.org LGTM On 19:53 Thu 19 Dec , Alexander Tikhonov wrote: > > > > >Четверг, 19 декабря 2019, 15:45 +03:00 от Igor Munkin : > > > >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 -- sergeyb@