From: Serge Petrenko <sergepetrenko@tarantool.org> To: Alexander Turenko <alexander.turenko@tarantool.org> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH] build: link bundled libcurl with c-ares Date: Tue, 21 Jan 2020 15:17:49 +0300 [thread overview] Message-ID: <F1DFFE1E-0AB3-4D8B-B56B-0D8DC337A3D9@tarantool.org> (raw) In-Reply-To: <20191218023335.6olxxxqeyj7qhyhb@tkn_work_nb> > 18 дек. 2019 г., в 5:33, Alexander Turenko <alexander.turenko@tarantool.org> написал(а): > > I brief: I would compare build times of c-ares with `./configure && make > -j` against `cmake . && make -j` and let's start with using ./configure > if the difference is not significant, but otherwise use CMake from > beginning. > > See other thoughts below. > > WBR, Alexander Turenko. > > —— Hi! Thank you for review! I sent v2 and fixed what you’ve pointed out. > > I guess that src/CMakeLists.txt will give a warning on static build: see > around `${libstatic} STREQUAL bundled-libcurl` line. Fixed. > > I also guess that using CMake for luajit, curl and c-ares may solve > several problems: build time, passing toolchain and Mac OS specific > flags, handling -DCMAKE_BUILD_TYPE in subprojects, clean out-of-source > build. Let's verify at least build time: if ./configure adds much time, > then we'll make other developers angry. Maybe it worth to use CMake for > c-ares from begnning. I’ve done that, and you’re right. Here are `time (cmake . && make -j)` outputs when using configure for c-ares real 3m16.989s user 4m45.145s sys 1m45.434s and cmake, respectively real 2m2.913s user 3m55.688s sys 1m17.485s > > Don't sure whether it worth to copy CMakeLists.txt from c-ares to our > cmake/ directory. Let's start w/o copy and consider to do it if we'll > need to change something. > > I don't sure which pros and cons have using of ExternalProject(), it > seems we should look a bit into this. > You see, we need c-ares installed, since curl depends on an existing c-ares installation. So, curl requires that c-ares is installed on build step already. We cannot use add_subdirectory. It will make cmake run build steps for all the subdirs first, and only then install them. ExternalProject_Add does exactly what we need. It runs both build and install steps of the external project on parent’s build step. > I also don't sure whether tarantool-specific flags will be passed for > c-ares when we'll use CMake (with / without ExternalProject()). Some of > them we should pass (such as -UNDEBUG that is set by > -DCMAKE_BUILD_TYPE=Debug), some maybe not (need to verify > add_compile_flags() macro calls at least). All the cmake options need to be passed to external project explicitly. > > Sergey V. will work on > https://github.com/tarantool/tarantool/issues/4444 , maybe it worth to > cooperate. (CCed him.) > > Is c-ares depends on some libraries? CMakeLists.txt extract: # Tell C-Ares about libraries to depend on IF (HAVE_LIBRESOLV) LIST (APPEND CARES_DEPENDENT_LIBS resolv) ENDIF () IF (HAVE_LIBNSL) LIST (APPEND CARES_DEPENDENT_LIBS nsl) ENDIF () IF (HAVE_LIBSOCKET) LIST (APPEND CARES_DEPENDENT_LIBS socket) ENDIF () IF (HAVE_LIBRT) LIST (APPEND CARES_DEPENDENT_LIBS rt) ENDIF () > > WBR, Alexander Turenko. > > On Mon, Nov 25, 2019 at 04:53:47PM +0300, Serge Petrenko wrote: >> libcurl has a built-in threaded resolver used for asynchronous DNS >> requests, however, when DNS server is slow to respond, the request still >> hangs tarantool until it is finished. The reason is that curl calls >> thread_join on the resolving thread internally upon timeout, making the >> calling thread hang until resolution has ended. >> Use c-ares as an asynchronous resolver instead to eliminate the problem. >> >> Closes #4591 >> --- >> https://github.com/tarantool/tarantool/issues/4591 >> https://github.com/tarantool/tarantool/tree/sp/gh-4591-link-curl-with-c-ares-full-ci -- Serge Petrenko sergepetrenko@tarantool.org
next prev parent reply other threads:[~2020-01-21 12:17 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-25 13:53 Serge Petrenko 2019-12-18 2:33 ` Alexander Turenko 2020-01-21 12:17 ` Serge Petrenko [this message] 2020-02-08 19:28 ` Alexander Turenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=F1DFFE1E-0AB3-4D8B-B56B-0D8DC337A3D9@tarantool.org \ --to=sergepetrenko@tarantool.org \ --cc=alexander.turenko@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH] build: link bundled libcurl with c-ares' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox