[tarantool-patches] Re: [PATCH] build: enable bundled libyaml for all systems.

Alexander Turenko alexander.turenko at tarantool.org
Mon Jul 22 10:09:57 MSK 2019


We have -DBUILD_SHARED_LIBS=ON cmake option globally enabled on CentOS /
Fedora, so libyaml is linked into src/tarantool dynamically.

$ git checkout origin/sp/gh-4090-enable-bundled-libyaml-full-ci
$ cmake . -DCMAKE_BUILD_TYPE=Debug -DENABLE_BACKTRACE=ON -DENABLE_DIST=ON -DBUILD_SHARED_LIBS=ON && make -j
$ ldd src/tarantool | grep yaml
	libyaml.so => /home/alex/p/tarantool-meta/r/t-2/third_party/libyaml/libyaml.so (0x00007ff0c96de000)
$ rm /home/alex/p/tarantool-meta/r/t-2/third_party/libyaml/libyaml.so
$ ldd src/tarantool | grep yaml
	libyaml.so => /usr/lib64/libyaml.so (0x00007f6cc379e000)

This means that tarantool executable cannot be relocated to another
system w/o libyaml.so. I see no reason to build a bundled library
dynamically, so maybe ENABLE_BUNDLED_LIBYAML should enable static build
for libyaml and should have precedence over BUILD_SHARED_LIBS. I don't
sure however that this is good practice, so I'll ask 2nd review from
someone else when you'll fix this problem in this or another way.

WBR, Alexander Turenko.

On Sun, Jul 21, 2019 at 04:25:57PM +0300, Serge Petrenko wrote:
> After we fixed bundled libyaml to correctly print 4-byte Unicode
> characters, it is no longer compatible with the upstream version, so
> enable building with bundled libyaml for every platform.
> This way the tests will pass.
> 
> Follow-up #4090
> ---
> https://github.com/tarantool/tarantool/issues/4090
> https://github.com/tarantool/tarantool/tree/sp/gh-4090-enable-bundled-libyaml-full-ci
> 
> apk/APKBUILD             | 2 --
>  cmake/BuildLibYAML.cmake | 2 +-
>  debian/rules             | 1 -
>  rpm/tarantool.spec       | 1 -
>  snapcraft.yaml           | 1 -
>  5 files changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/apk/APKBUILD b/apk/APKBUILD
> index e8ea5aa13..7d61aa4a5 100644
> --- a/apk/APKBUILD
> +++ b/apk/APKBUILD
> @@ -23,10 +23,8 @@ build() {
>      cd "$builddir"
>  
>      cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
> -          -DENABLE_BUNDLED_LIBYAML:BOOL=OFF \
>            -DENABLE_BACKTRACE:BOOL=ON \
>            -DENABLE_DIST:BOOL=ON \
> -          -DENABLE_BUNDLED_LIBYAML:BOOL=OFF \
>            -DCMAKE_INSTALL_PREFIX=/usr \
>            -DCMAKE_INSTALL_SYSCONFDIR=/etc \
>            -DCMAKE_INSTALL_LOCALSTATEDIR=/var \
> diff --git a/cmake/BuildLibYAML.cmake b/cmake/BuildLibYAML.cmake
> index 7caa1828c..95068d73a 100644
> --- a/cmake/BuildLibYAML.cmake
> +++ b/cmake/BuildLibYAML.cmake
> @@ -6,7 +6,7 @@ macro(libyaml_build)
>  
>      add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/libyaml EXCLUDE_FROM_ALL)
>      # See comments in BuildLibEV.cmake
> -    set_target_properties(yaml PROPERTIES COMPILE_FLAGS "-w")
> +    set_target_properties(yaml PROPERTIES COMPILE_FLAGS "-w -std=c99")
>  
>      find_package_message(LIBYAML
>          "Using bundled libyaml"
> diff --git a/debian/rules b/debian/rules
> index edfecfc33..904eaa719 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -15,7 +15,6 @@ DEB_CMAKE_EXTRA_FLAGS := \
>  	-DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
>  	-DCMAKE_INSTALL_SYSCONFDIR=/etc \
>  	-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
> -	-DENABLE_BUNDLED_LIBYAML=OFF \
>  	-DENABLE_DIST=ON \
>  	-DWITH_SYSVINIT=ON \
>  	-DWITH_SYSTEMD=$(WITH_SYSTEMD)
> diff --git a/rpm/tarantool.spec b/rpm/tarantool.spec
> index 8bee71ed0..002df26b1 100644
> --- a/rpm/tarantool.spec
> +++ b/rpm/tarantool.spec
> @@ -124,7 +124,6 @@ C and Lua/C modules.
>  %cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo \
>           -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=%{_localstatedir} \
>           -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \
> -         -DENABLE_BUNDLED_LIBYAML:BOOL=OFF \
>  %if %{with backtrace}
>           -DENABLE_BACKTRACE:BOOL=ON \
>  %else
> diff --git a/snapcraft.yaml b/snapcraft.yaml
> index a7ce540cb..48b32a890 100644
> --- a/snapcraft.yaml
> +++ b/snapcraft.yaml
> @@ -25,7 +25,6 @@ parts:
>          plugin: cmake
>          configflags:
>            - -DCMAKE_BUILD_TYPE=RelWithDebInfo
> -          - -DENABLE_BUNDLED_LIBYAML=OFF
>            - -DENABLE_DIST=OFF # Disable tarantoolctl, init scripts, etc.
>          build-packages:
>            - cmake
> -- 
> 2.20.1 (Apple Git-117)
> 




More information about the Tarantool-patches mailing list