[Tarantool-patches] [PATCH v1] build: implement SuSE build with testing
Alexander V. Tikhonov
avtikhon at tarantool.org
Thu Apr 23 12:03:44 MSK 2020
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
More information about the Tarantool-patches
mailing list