Skip to content
Snippets Groups Projects
  1. Apr 29, 2019
    • Alexander Turenko's avatar
      travis-ci: set right flags in release testing jobs · c308f35d
      Alexander Turenko authored
      It is important to have testing jobs that build the project with both
      -Werror and -O2 to keep the code clean. -O2 is needed, because some
      compiler warnings are available only after extra analyzing passes that
      are disabled with lesser optimization levels.
      
      The first attempt to add -Werror for release testing jobs was made in
      da505ee7 ('Add -Werror for CI (1.10
      part)'), but it mistakely doesn't enable -O2 for RelWithDebInfoWError
      build. It is possible to fix it in this way:
      
       | --- a/cmake/compiler.cmake
       | +++ b/cmake/compiler.cmake
       | @@ -113,10 +113,14 @@ set (CMAKE_C_FLAGS_DEBUG
       |      "${CMAKE_C_FLAGS_DEBUG} ${CC_DEBUG_OPT} -O0")
       |  set (CMAKE_C_FLAGS_RELWITHDEBINFO
       |      "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${CC_DEBUG_OPT} -O2")
       | +set (CMAKE_C_FLAGS_RELWITHDEBINFOWERROR
       | +    "${CMAKE_C_FLAGS_RELWITHDEBINFOWERROR} ${CC_DEBUG_OPT} -O2")
       |  set (CMAKE_CXX_FLAGS_DEBUG
       |      "${CMAKE_CXX_FLAGS_DEBUG} ${CC_DEBUG_OPT} -O0")
       |  set (CMAKE_CXX_FLAGS_RELWITHDEBINFO
       |      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${CC_DEBUG_OPT} -O2")
       | +set (CMAKE_CXX_FLAGS_RELWITHDEBINFOWERROR
       | +    "${CMAKE_CXX_FLAGS_RELWITHDEBINFOWERROR} ${CC_DEBUG_OPT} -O2")
       |
       |  unset(CC_DEBUG_OPT)
      
      However I think that a build type (and so `tarantool --version`) should
      not show whether -Werror was passed or not. So I have added
      ENABLE_WERROR CMake option for that. It can be set like so:
      
       | cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON
      
      Enabled the option in testing Travis-CI jobs with the RelWithDebInfo
      build type. Deploy jobs don't include it as before.
      
      Fixed all -Wmaybe-uninitialized and -Wunused-result warnings. A few
      notes about the fixes:
      
      * net.box does not validate received data in general, so I don't add a
        check for autoincrement IDs too. Set the ID to INT64_MIN, because this
        value is less probably will appear here in a normal case and so is the
        best one to signal a user that something probably going wrongly.
      * xrow_decode_*() functions could read uninitialized data from
        row->body[0].iov_base in xrow_on_decode_err() when printing a hex code
        for a row. It could be possible when the received msgpack was empty
        (row->bodycnt == 0), but there were expected keys (key_map != 0).
      * getcwd() is marked with __attribute__((__warn_unused_result__)) in
        glibc, but the buffer filled by this call is not used anywhere and so
        just removed.
      * Vinyl -Wmaybe-uninitialized warnings are false positive ones.
      
      Added comments and quotes into .travis.yml to ease reading. Removed
      "test" word from the CentOS 6 job name, because we don't run tests on
      this distro (disabled in the RPM spec).
      
      Fixes #4178.
      c308f35d
  2. Mar 15, 2019
    • Alexander V. Tikhonov's avatar
      travis-ci: fix OS X Mojave 10.14 build · eb964471
      Alexander V. Tikhonov authored
      Fixed Mojave Mac build with setting MACOSX_DEPLOYMENT_TARGET environment
      variable for LuaJIT's Makefile. This variable specifies the minimum
      version of OS X on which the target binaries are to be deployed.
      
      The reason why we need to set MACOSX_DEPLOYMENT_TARGET to at least 10.6
      is that 10.4 SDK (which is set by default in LuaJIT's Makefile) is not
      longer included in Mac OS X Mojave 10.14.
      
      See also https://github.com/LuaJIT/LuaJIT/issues/484
      
      We already set -Wl,-macosx_version_min,10.6 (-macosx_version_min and
      MACOSX_DEPLOYMENT_TARGET are synonymous), but it affects only a linker.
      We possibly should remove -macosx_version_min, because it superseded by
      MACOSX_DEPLOYMENT_TARGET, but it should be done with verification that
      the original problem really fixed by the new way to set a deployment
      target. This is not part of this patch.
      
      Removed virtualenv usage in CI for OS X (so pip just installs packages
      into a system), because OS X Mojave 10.14 does not offer virtualenv by
      default.
      
      Fixed #3797
      Unverified
      eb964471
  3. Dec 24, 2018
  4. Dec 21, 2018
  5. Nov 03, 2018
  6. Oct 25, 2018
  7. Oct 05, 2018
    • Alexander Turenko's avatar
      Add -Werror for CI (1.10 part) · da505ee7
      Alexander Turenko authored
      Added MAKE_BUILD_TYPE=RelWithDebInfoWError option, which means enabling
      -DNDEBUG=1, -O2 and -Wall -Wextra -Werror. This ensures we have clean
      release build without warnings.
      
      Fixed found -Wunused-variable and -Wunused-parameter warnings.
      
      Part of #3238.
      da505ee7
  8. Sep 20, 2018
  9. Sep 10, 2018
    • Kirill Yukhin's avatar
      Fix libgomp linking for static build · 0a3186c4
      Kirill Yukhin authored
      Since addition of -fopenmp to compiler also means
      addition of -lgomp to the link stage, pass -fno-openmp
      to the linking stage in case of static build. In that
      case OMP functions are statically linked into libmisc.
      
      Also, emit error if trying to perform static build using
      clang.
      0a3186c4
  10. Sep 06, 2018
    • Konstantin Osipov's avatar
    • Georgy Kirichenko's avatar
      Tarantool static build ability · cb1c72da
      Georgy Kirichenko authored
      A possibility to build tarantool with included library dependencies.
      Use the flag -DBUILD_STATIC=ON to build statically against curl, readline,
      ncurses, icu and z.
      Use the flag -DOPENSSL_USE_STATIC_LIBS=ON to build with static
      openssl
      
      Changes:
        * Add FindOpenSSL.cmake because some distributions do not support the use of
        openssl static libraries.
        * Find libssl before curl because of build dependency.
        * Catch all bundled libraries API and export then it in case of static
        build.
        * Rename crc32 internal functions to avoid a name clash with linked libraries.
      
      Notes:
        * Bundled libyaml is not properly exported, use the system one.
        * Dockerfile to build static with docker is included
      
      Fixes #3445
      cb1c72da
  11. Aug 21, 2018
    • Konstantin Belyavskiy's avatar
      Add FindICONV and iconv wrapper · dcac64af
      Konstantin Belyavskiy authored
      Fixing build under FreeBSD:
      Undefined symbol "iconv_open"
      Add compile time build check with FindICONV.cmake
      and a wrapper to import relevant symbol names with include file.
      
      Closes #3441
      dcac64af
  12. Aug 02, 2018
  13. Mar 01, 2018
  14. Jan 27, 2018
  15. Oct 13, 2017
    • Alexandr Lyapunov's avatar
      Fix build with old ICU library · 5e1fde37
      Alexandr Lyapunov authored
      Fast ucol_strcollUTF8 function was introduced in ICU 50. In older
      ICU versions we have to use slower ucol_strcollIter with properly
      initialized UTF8 iterators.
      
      Fix #2820
      5e1fde37
  16. Oct 09, 2017
  17. Oct 06, 2017
  18. Oct 05, 2017
  19. Sep 26, 2017
    • Alexander Turenko's avatar
      Add an option to allow using system ZStd · 664fc51e
      Alexander Turenko authored
      The option is '-DENABLE_BUNDLED_ZSTD' and defaults to ON.
      
      There are two goals of making this conditional, both related to building
      Tarantool on Gentoo Linux from an ebuild:
      
      * Avoid bundled ZStd building issue w/o pay to investivage it.
      * Allow user to choose between system and bundled library.
      664fc51e
  20. Sep 22, 2017
  21. Sep 18, 2017
  22. Sep 12, 2017
    • Roman Tsisyk's avatar
      Add FALLTHROUGH macro · 3ce62ef8
      Roman Tsisyk authored
      The fallthrough attribute with a null statement serves as a fallthrough
      statement. It hints to the compiler that a statement that falls through
      to another case label, or user-defined label in a switch statement is
      intentional and thus the -Wimplicit-fallthrough warning must not trigger.
      The fallthrough attribute may appear at most once in each attribute list,
      and may not be mixed with other attributes. It can only be used in a switch
      statement (the compiler will issue an error otherwise), after a preceding
      statement and before a logically succeeding case label, or user-defined
      label.
      
      https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/
      3ce62ef8
  23. Aug 22, 2017
    • Roman Tsisyk's avatar
      Replace gopt with getopt_long() · f6370335
      Roman Tsisyk authored
      getopt_long() is available on all supported platforms.
      Get rid of legacy gopt and use getopt_long().
      
      Incompatible changes:
      
       * `tarantool --version --no-such-option` printed
          "unrecognized option '--no-such-option'", now it displays version.
          `tarantool --no-such-option --version` still prints an error message.
      
      Needed for #1265
      f6370335
  24. Aug 03, 2017
    • Roman Tsisyk's avatar
      CMake: add -DLUAJIT_ENABLE_GC64 option · ee71b9f7
      Roman Tsisyk authored
      Add an option to enable LuaJIT's GC64 mode and enable this option
      by default on OS X.
      
      Closes #2643
      ee71b9f7
    • Roman Tsisyk's avatar
      CMake: fix LUAJIT_USE_XXX definitions · 8bc16692
      Roman Tsisyk authored
      LuaJIT has some configuration flags which can be switched via
      -DLUAJIT_USE_OPTION defines, e.g. USE_ASAN or USE_VALGRIND.
      Before this patch these definitions were added by CMake to XCFLAGS
      variable and passed to LuaJIT's Makefile. However, some of these
      flags also affect the content of lj_xxx.h internal header files,
      which were included by Tarantool (see utils.c) and compiled WITHOUT
      proper flags. This situation might lead to inconsistent ABI between
      compiled libluajit.a and Tarantool.
      
      This patch adds all LUAJIT_USE_XXX defines to CMake's COMPILE_FLAGS
      in order to enable these flags globally, then parses COMPILE_FLAGS
      and adds them to LuaJIT's XCFLAGS.
      
      Needed for #2643
      8bc16692
  25. Jul 28, 2017
  26. Jul 27, 2017
  27. Jul 24, 2017
  28. Jul 20, 2017
  29. Jul 10, 2017
    • alyapunov's avatar
      Use open MP sort optimisation only for huge arrays · 2e864b5a
      alyapunov authored
      Now open MP sort is used for any size of an array.
      For small arrays it's an overkill and even can cause overhead
      due to thread pool creation.
      
      Invoke open MP sort only for big arrays and use old good
      single-thread qsort for small arrays.
      
      Fix #2431
      2e864b5a
  30. May 29, 2017
  31. Mar 23, 2017
    • Roman Tsisyk's avatar
      Fix compilation warnings altogether · 512dd466
      Roman Tsisyk authored
      * Supress warnings in third-party code.
      * Fix false-positive "variable may be used uninitialized in this function"
      * Add MAYBE_UNUSED to variables used only for assertions
      * Fix compilation on GCC 6.3.0 20170205
      * Fix compilation on GCC 7.0.1 20170316
      * Fix compilation on Clang 5.0.0-svn294894-1
      512dd466
  32. Mar 14, 2017
  33. Feb 21, 2017
    • Roman Tsisyk's avatar
      Refactor pthread_attr_get_np/pthread_getattr_np usage · c66450af
      Roman Tsisyk authored
      * Move platform-specific defines to tt_pthread.h
      * Set sched.coro.stack only with ENABLE_ASAN
      
      Please note that pthread_getattr_np() + pthread_attr_destroy()
      combination is totaly broken on Glibc 2.12 (RHELL 6.x).
      
      Fixes #2085
      c66450af
  34. Feb 15, 2017
Loading