- Aug 27, 2019
-
-
Alexander Turenko authored
System-wide dynamic libraries usually (always?) have NEEDED and RUNPATH tags in a dynamic section (as `readelf -d /usr/lib/lib<...>.so` shows), so when we link, say, with libssl.so, which depends on libz.so, a linker does not complain against unresolved symbols that can be found in Z library (if it is installed within a system). Things are different when we linking with a static library. Say, when we linking with libssl.a, which contains an unresolved symbol from Z library, a linker reports an error. It is not possible to store an information where to find unresolved symbols (NEEDED / RUNPATH) in a static library (AFAIK). We depend on three libraries that are depend on Z library: libcurl, libssl and libcrypto (two latter are part of OpenSSL). When one of those libraries is linked statically we should link with libz.so or libz.a (depending on BUILD_STATIC flag). The patch doing exactly this. The patch changes OPENSSL_LIBRARIES variable to fix the issue with static linking of OpenSSL libraries. It also changes CURL_LIBRARIES in the same way, however this does not alter any visible behaviour, because OPENSSL_LIBRARIES is added to CURL_LIBRARIES. The latter change was made to unify the way to choose libraries to link with: it is pure refactoring part. Fixes #4437.
-
- Aug 21, 2019
-
-
Mergen Imeev authored
Hold libcurl-7.65.3. This version is not affected by the following issues: * #4180 ('httpc: redirects are broken with libcurl-7.30 and older'); * #4389 ('libcurl memory leak'); * #4397 ('HTTPS seem to be unstable'). After this patch libcurl will be statically linked when ENABLE_BUNDLED_LIBCURL option is set. This option is set by default. Closes #4318 @TarantoolBot document Title: Tarantool dependency list was changed * Added build dependencies: autoconf, automake, libtool, zlib-devel (zlib1g-dev on Debian). * Added runtime dependencies: zlib (zlib1g on Debian). * Removed build dependencies: libcurl-devel (libcurl4-openssl-dev on Debian). * Removed runtime dependencies: curl. The reason is that now we use compiled-in libcurl: so we don't depend on a system libcurl, but inherit its dependencies.
-
- Jun 13, 2019
-
-
Serge Petrenko authored
Add fixed-point decimal type to tarantool core. Adapt decNumber floating-point decimal library for the purpose, write a small wrapper and add unit tests. A new decimal type is an alias for decNumber numbers from the decNumber library. Arithmetic operations (+, -, *, /) and some mathematic functions (ln, log10, exp, pow, sqrt) are available together with methods to pack and unpack decimal to and from its packed representation (useful for serialization). We introduce a single context for all the arithmetic operations on decimals, which enforces both number precision and scale to be in range [0, 38]. NaNs and Infinities are restricted. Part of #692
-
Alexander V. Tikhonov authored
Added to cmake environment CMAKE_DL_LIBS (The name of the library that has dlopen and dlclose in it, usually -ldl) to openssl build to add DL library, to fix the following fails: Linking CXX executable crypto.test /usr/local/lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup': dso_dlfcn.c:(.text+0x11): undefined reference to `dlopen' dso_dlfcn.c:(.text+0x24): undefined reference to `dlsym' dso_dlfcn.c:(.text+0x2f): undefined reference to `dlclose' /usr/local/lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func': dso_dlfcn.c:(.text+0x334): undefined reference to `dlsym' dso_dlfcn.c:(.text+0x3f2): undefined reference to `dlerror' /usr/local/lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load': dso_dlfcn.c:(.text+0x459): undefined reference to `dlopen' dso_dlfcn.c:(.text+0x4c9): undefined reference to `dlclose' dso_dlfcn.c:(.text+0x502): undefined reference to `dlerror' /usr/local/lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr': dso_dlfcn.c:(.text+0x5a1): undefined reference to `dladdr' dso_dlfcn.c:(.text+0x601): undefined reference to `dlerror' /usr/local/lib64/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload': dso_dlfcn.c:(.text+0x662): undefined reference to `dlclose' collect2: error: ld returned 1 exit status make[2]: *** [test/unit/crypto.test] Error 1 make[1]: *** [test/unit/CMakeFiles/crypto.test.dir/all] Error 2 Closes #4245
-
- Apr 29, 2019
-
-
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.
-
- Mar 15, 2019
-
-
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
-
- Dec 24, 2018
-
-
Alexander Turenko authored
The build time error is confusing for users. The patch makes the error explicit and moves it to the cmake stage. Follow up of #3070.
-
- Dec 21, 2018
-
-
Vladislav Shpilevoy authored
-
Alexander Turenko authored
LLVM changes the API in the compiler-rt commit [1]. According to the date of the commit it is between clang-3.9.0 and clang-3.9.1. [1]: https://github.com/llvm-mirror/compiler-rt/commit/0b95585616bd28fc0b738289bcc5f7887d7c304e Fixes #3070.
-
- Nov 03, 2018
-
-
Alexander Turenko authored
FreeBSD 10.4 has no libdl.so. Fixes #3750.
-
- Oct 25, 2018
-
-
AKhatskevich authored
Added -DENABLE_LTO=ON/OFF cmake option, OFF by default. LTO speeds up cpu-intensive workloads by up to 20% (see [1] and [2]). Requirements to enable LTO: - cmake >= 3.9; - Linux: ld.bfd / ld.gold from binutils >= 2.31 (or later 2.30) (gold >= 1.15); - Mac OS: xcode >= 8 (earlier versions are not tested). The requirement of the recent ld version is due to bug with exporting symbols from dynamic list when LTO is enabled, see [3]. Note: -Wlto-type-mismatch on GCC (enabled by default with -flto) gives namy warnings. Filed [4] to investigate it. Note: LuaJIT will be compiled w/o LTO despite the option set, filed [5]. [1]: https://github.com/tarantool/tarantool/wiki/performance-research [2]: https://gist.github.com/Khatskevich/31a2da6ab46ce903120e7a03d65966db [3]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84901 [4]: https://github.com/tarantool/tarantool/issues/3742 [5]: https://github.com/tarantool/tarantool/issues/3743 Closes #3117 f
-
- Oct 05, 2018
-
-
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.
-
- Sep 20, 2018
-
-
Alexander Turenko authored
The problem is that clang does not support -Wno-cast-function-type flag. It is the regression from 8c538963. Follow up of #3685. Fixes #3701.
-
- Sep 10, 2018
-
-
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.
-
- Sep 06, 2018
-
-
Konstantin Osipov authored
-
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
-
- Aug 21, 2018
-
-
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
-
- Aug 02, 2018
-
-
Eugine Blikh authored
No more `include/yaml.h` and `lib/libyaml_static.a` installs. closes gh-3547
-
- Mar 01, 2018
-
-
Konstantin Osipov authored
If curl does not have SSL support, don't panic, honor CURL_FIND_REQUIRED variable, and panic only if it's set. Correct the grammar in the error message.
-
Konstantin Belyavskiy authored
On MAC several old curl versions don't support SSL by default. Try to check it and print error message if so. Close #3065
-
- Jan 27, 2018
-
-
IlyaMarkovMipt authored
-
- Oct 13, 2017
-
-
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
-
- Oct 09, 2017
-
-
Roman Tsisyk authored
-
- Oct 06, 2017
-
-
Alexandr Lyapunov authored
-
- Oct 05, 2017
-
-
Vladislav Shpilevoy authored
-
- Sep 26, 2017
-
-
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.
-
- Sep 22, 2017
-
-
Roman Tsisyk authored
Apple's version of libcurl is outdated and buggy. Use libcurl from homebrew by default. Closes #2772
-
- Sep 18, 2017
-
-
Georgy Kirichenko authored
Speed up zstd as much as possible.
-
Georgy Kirichenko authored
Update zstd submodule to v1.3.1 version.
-
- Sep 12, 2017
-
-
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/
-
- Aug 22, 2017
-
-
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
-
- Aug 03, 2017
-
-
Roman Tsisyk authored
Add an option to enable LuaJIT's GC64 mode and enable this option by default on OS X. Closes #2643
-
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
-
- Jul 28, 2017
-
-
Vladislav Shpilevoy authored
-
- Jul 27, 2017
-
-
Roman Tsisyk authored
Add missing #include <trivia/config.h> Fixes #2635
-
- Jul 24, 2017
-
-
Georgy Kirichenko authored
Remove libbfd from dependencies and use libunwind for stack traces. Closes #2103
-
- Jul 20, 2017
-
-
Roman Tsisyk authored
Now module.h is autogenerated automatically on `make all` if one or more source header files have changed. Closes #2481
-
- Jul 10, 2017
-
-
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
-
- May 29, 2017
-
-
Roman Tsisyk authored
In context of #2312 See #1906
-
- Mar 23, 2017
-
-
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
-