From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp61.i.mail.ru (smtp61.i.mail.ru [217.69.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id A82524696C3 for ; Thu, 23 Apr 2020 12:03:46 +0300 (MSK) From: "Alexander V. Tikhonov" Date: Thu, 23 Apr 2020 12:03:44 +0300 Message-Id: <1cb7469ca7d4ed1c345b32707fec46663c670fa4.1587632526.git.avtikhon@tarantool.org> Subject: [Tarantool-patches] [PATCH v1] build: implement SuSE build with testing List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Oleg Piskunov , Sergey Bronnikov Cc: tarantool-patches@dev.tarantool.org 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