[tarantool-patches] [PATCH 0/2] Build libcurl statically

Alexander Turenko alexander.turenko at tarantool.org
Fri Aug 16 05:32:34 MSK 2019


We decided to build libcurl statically to avoid problems with libcurl
versions that Linux distributives ships (see the list below). I also did
this for Mac OS and FreeBSD to provide more or less uniform build and
dependencies list across OSes.

This patchset holds libcurl-7.65.3. AFAIK there is no problems on this
version that affects our built-in http client. We tested this version
(also linked statically to tarantool) against the performance
degradation we observed by our customers on CentOS 7 (#4397) and it
works good. The following list of issues re built-in http client will
become unrelevant after this patchset:

* #4180 ('httpc: redirects are broken with libcurl-7.30 and older');
* #4389 ('libcurl memory leak');
* #4397 ('HTTPS seem to be unstable').

I didn't close them from a commit however, because it would be good to
do a little extra work on them: at least bisect and understand what is a
cause of a problem. Say, it is possible that a problem caused by a
libcurl build option, but not a specific version. This information would
be useful to be sure we really don't affected by the issues and will not
step into the problems in the future.

The patchset contains two patches.

The first one workarounds a systemd issue that affects built-in pwd
module when tarantool is linked against libcurl w/o GSS API support
(this is how we build libcurl to link it statically). The problem
appears on Fedora 29. This is prerequisite to push the second patch.

The second patch enables static libcurl build, enables it by default and
adjusts all relevant scripts and dependencies.

https://github.com/tarantool/tarantool/issues/4318
https://github.com/tarantool/tarantool/tree/imeevma/gh-4318-link-libcurl-statically-full-ci

CI now fails, because some SQL tests were not updated properly on
master. I'll rebase the branch when it will be fixed and will ensure
that everything work.

Alexander Turenko (1):
  lua: workaround pwd.getpwall() issue on Fedora 29

Mergen Imeev (1):
  build: link libcurl statically from a submodule

 .gitmodules              |   3 +
 .travis.mk               |   8 +--
 CMakeLists.txt           |  12 +++-
 Dockerfile.staticbuild   |  14 +----
 cmake/BuildLibCURL.cmake | 118 +++++++++++++++++++++++++++++++++++++++
 debian/control           |   9 ++-
 rpm/tarantool.spec       |   9 ++-
 src/CMakeLists.txt       |   3 +
 src/lua/pwd.lua          |  13 +++++
 test/unit/CMakeLists.txt |   1 +
 third_party/curl         |   1 +
 11 files changed, 169 insertions(+), 22 deletions(-)
 create mode 100644 cmake/BuildLibCURL.cmake
 create mode 160000 third_party/curl

-- 
2.22.0





More information about the Tarantool-patches mailing list