Skip to content
Snippets Groups Projects
  • Alexander V. Tikhonov's avatar
    fc7b0393
    static build: create new build w/o dockerfile · fc7b0393
    Alexander V. Tikhonov authored
    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
    
    (cherry picked from commit fc55875e)
    fc7b0393
    History
    static build: create new build w/o dockerfile
    Alexander V. Tikhonov authored
    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
    
    (cherry picked from commit fc55875e)