[Tarantool-patches] [PATCH v1] build: implement SuSE build with testing

Sergey Bronnikov sergeyb at tarantool.org
Wed Apr 29 15:25:27 MSK 2020


LGTM

On 12:03 Thu 23 Apr , Alexander V. Tikhonov wrote:
> Added makefile to build the SuSE based packages.
> Implemented build with testing for opensuse images:
> SuSE 15.0, 15.1, 15.2
> 
> Tarantool spec file changed with:
> Added checks of %{sle_version} according to
> https://en.opensuse.org/openSUSE:Packaging_for_Leap#RPM_Distro_Version_Macros
> 
> Found that opensuse adding linker flag like '--no-undefined' which
> produces the fails on building test modules at app-tap/app/box-tap
> suites. Decided to block this flag.
> 
> Running tests by make test, because opensuse uses out-of-source
> build by default.
> Set complete testing except replication suite.
> Test box-tap/cfg fails and temporary blocked according to the
> issue created for it #4594.
> 
> Closes #4562
> ---
> 
> Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-4562-suse-pack-full-ci
> Issue: https://github.com/tarantool/tarantool/issues/4562
> 
>  rpm/tarantool.spec          | 26 ++++++++++++++++++++------
>  test/app-tap/CMakeLists.txt |  1 +
>  test/app/CMakeLists.txt     |  1 +
>  test/box-tap/cfg.skipcond   |  6 ++++++
>  test/box/CMakeLists.txt     |  1 +
>  5 files changed, 29 insertions(+), 6 deletions(-)
> 
> diff --git a/rpm/tarantool.spec b/rpm/tarantool.spec
> index ff95ed646..09de015e2 100644
> --- a/rpm/tarantool.spec
> +++ b/rpm/tarantool.spec
> @@ -1,5 +1,5 @@
>  # Enable systemd for on RHEL >= 7 and Fedora >= 15
> -%if (0%{?fedora} >= 15 || 0%{?rhel} >= 7)
> +%if (0%{?fedora} >= 15 || 0%{?rhel} >= 7 || 0%{?sle_version} >= 1500)
>  %bcond_without systemd
>  %else
>  %bcond_with systemd
> @@ -7,7 +7,7 @@
>  
>  BuildRequires: cmake >= 2.8
>  BuildRequires: make
> -%if (0%{?fedora} >= 22 || 0%{?rhel} >= 7)
> +%if (0%{?fedora} >= 22 || 0%{?rhel} >= 7 || 0%{?sle_version} >= 1500)
>  # RHEL 6 requires devtoolset
>  BuildRequires: gcc >= 4.5
>  BuildRequires: gcc-c++ >= 4.5
> @@ -70,7 +70,7 @@ BuildRequires: libunwind-devel
>  %endif
>  
>  # For tests
> -%if (0%{?fedora} >= 22 || 0%{?rhel} == 7)
> +%if (0%{?fedora} >= 22 || 0%{?rhel} == 7 || 0%{?sle_version} >= 1500)
>  BuildRequires: python >= 2.7
>  BuildRequires: python-six >= 1.9.0
>  BuildRequires: python-gevent >= 1.0
> @@ -102,7 +102,7 @@ Requires: /etc/services
>  # Deps for built-in package manager
>  # https://github.com/tarantool/tarantool/issues/2612
>  Requires: openssl
> -%if (0%{?fedora} >= 22 || 0%{?rhel} >= 8)
> +%if (0%{?fedora} >= 22 || 0%{?rhel} >= 8 || 0%{?sle_version} >= 1500)
>  # RHEL <= 7 doesn't support Recommends:
>  Recommends: tarantool-devel
>  Recommends: git-core
> @@ -138,7 +138,14 @@ C and Lua/C modules.
>  
>  %build
>  # RHBZ #1301720: SYSCONFDIR an LOCALSTATEDIR must be specified explicitly
> -%cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo \
> +%if (0%{?sle_version} >= 1500)
> +# SuSE uses only out-of-source builds in its macros
> +%cmake .. \
> +         -DCMAKE_INSTALL_PREFIX:PATH=/usr \
> +%else
> +%cmake . \
> +%endif
> +	 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
>           -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=%{_localstatedir} \
>           -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \
>  %if %{with backtrace}
> @@ -154,20 +161,27 @@ C and Lua/C modules.
>           -DENABLE_DIST:BOOL=ON
>  make %{?_smp_mflags}
>  
> +%if (0%{?sle_version} == 0)
>  %install
> +%endif
>  %make_install
>  # %%doc and %%license macroses are used instead
>  rm -rf %{buildroot}%{_datarootdir}/doc/tarantool/
>  
>  %check
> -%if (0%{?fedora} >= 22 || 0%{?rhel} >= 7)
> +%if (0%{?fedora} >= 22 || 0%{?rhel} >= 7 || 0%{?sle_version} >= 1500)
>  # https://github.com/tarantool/tarantool/issues/1227
>  echo "self.skip = True" > ./test/app/socket.skipcond
>  # https://github.com/tarantool/tarantool/issues/1322
>  echo "self.skip = True" > ./test/app/digest.skipcond
>  # run a safe subset of the test suite
> +%if (0%{?sle_version} >= 1500)
> +# SuSE uses only out-of-source builds always at build/ subdir in its macros
> +cd build && TEST_RUN_EXCLUDE='replication/' make test-force
> +%else
>  cd test && ./test-run.py --force -j 1 unit/ app/ app-tap/ box/ box-tap/ engine/ vinyl/
>  %endif
> +%endif
>  
>  %pre
>  /usr/sbin/groupadd -r tarantool > /dev/null 2>&1 || :
> diff --git a/test/app-tap/CMakeLists.txt b/test/app-tap/CMakeLists.txt
> index ee67cf533..68aa3690b 100644
> --- a/test/app-tap/CMakeLists.txt
> +++ b/test/app-tap/CMakeLists.txt
> @@ -1 +1,2 @@
> +SET(CMAKE_SHARED_LINKER_FLAGS "")
>  build_module(module_api module_api.c)
> diff --git a/test/app/CMakeLists.txt b/test/app/CMakeLists.txt
> index 059ee8f3d..8bafa6516 100644
> --- a/test/app/CMakeLists.txt
> +++ b/test/app/CMakeLists.txt
> @@ -1 +1,2 @@
> +SET(CMAKE_SHARED_LINKER_FLAGS "")
>  build_module(loaderslib loaderslib.c)
> diff --git a/test/box-tap/cfg.skipcond b/test/box-tap/cfg.skipcond
> index 7950a5d93..9d5535f87 100644
> --- a/test/box-tap/cfg.skipcond
> +++ b/test/box-tap/cfg.skipcond
> @@ -1,8 +1,14 @@
> +import os
>  import platform
>  
>  # Disabled on FreeBSD due to fail #4271:
>  #   Data segment size exceeds process limit
>  if platform.system() == 'FreeBSD':
>      self.skip = 1
> +try:
> +    if os.popen('lsb_release -i').read().split(':')[1].strip() == 'openSUSE':
> +        self.skip = 1
> +except IndexError:
> +    pass
>  
>  # vim: set ft=python:
> diff --git a/test/box/CMakeLists.txt b/test/box/CMakeLists.txt
> index 06bfbbe9d..e65559e81 100644
> --- a/test/box/CMakeLists.txt
> +++ b/test/box/CMakeLists.txt
> @@ -1,3 +1,4 @@
> +SET(CMAKE_SHARED_LINKER_FLAGS "")
>  include_directories(${MSGPUCK_INCLUDE_DIRS})
>  build_module(function1 function1.c)
>  build_module(reload1 reload1.c)
> -- 
> 2.17.1
> 

-- 
sergeyb@


More information about the Tarantool-patches mailing list