From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng1.m.smailru.net (smtpng1.m.smailru.net [94.100.181.251]) (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 0419A445324 for ; Tue, 7 Jul 2020 16:21:04 +0300 (MSK) From: "Alexander V. Tikhonov" Date: Tue, 7 Jul 2020 16:20:58 +0300 Message-Id: <3f11655b726d6ea5027f009f3eaf7190674ce314.1594126705.git.avtikhon@tarantool.org> In-Reply-To: References: In-Reply-To: References: Subject: [Tarantool-patches] [PATCH v2 3/3] gitlab-ci: add openSuSE packages build jobs List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kirill Yukhin , Alexander Turenko Cc: tarantool-patches@dev.tarantool.org Implemented openSuSE packages build with testing for images: opensuse-leap:15.[0-2] Added %{sle_version} checks in Tarantool spec file according to https://en.opensuse.org/openSUSE:Packaging_for_Leap#RPM_Distro_Version_Macros Found that openSuSE adding linker flag '--no-undefined' which produces the fails on building tests. Decided to block this flag due to dynamic libraries will be loaded from tarantool executable and will use symbols from it. So it is completely okay to have unresolved symbols at build time. Added opensuse-leap of 15.1 and 15.2 versions to Gitlab-CI packages building/deploing jobs. Closes #4562 --- .gitlab-ci.yml | 24 ++++++++++++++++++++++++ rpm/prebuild-opensuse-leap.sh | 7 +++++++ rpm/tarantool.spec | 16 +++++++++++----- test/app-tap/CMakeLists.txt | 4 ++++ test/app/CMakeLists.txt | 4 ++++ test/box-tap/cfg.skipcond | 10 ++++++++++ test/box/CMakeLists.txt | 4 ++++ tools/update_repo.sh | 6 ++++-- 8 files changed, 68 insertions(+), 7 deletions(-) create mode 100755 rpm/prebuild-opensuse-leap.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 962bbcbff..860a4706b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -415,6 +415,18 @@ debian_10: OS: 'debian' DIST: 'buster' +opensuse_15_1: + <<: *pack_definition + variables: + OS: 'opensuse-leap' + DIST: '15.1' + +opensuse_15_2: + <<: *pack_definition + variables: + OS: 'opensuse-leap' + DIST: '15.2' + # Deploy sources_deploy: @@ -512,6 +524,18 @@ debian_10_deploy: OS: 'debian' DIST: 'buster' +opensuse_15_1_deploy: + <<: *deploy_definition + variables: + OS: 'opensuse-leap' + DIST: '15.1' + +opensuse_15_2_deploy: + <<: *deploy_definition + variables: + OS: 'opensuse-leap' + DIST: '15.2' + # Static builds static_build: diff --git a/rpm/prebuild-opensuse-leap.sh b/rpm/prebuild-opensuse-leap.sh new file mode 100755 index 000000000..3861a5308 --- /dev/null +++ b/rpm/prebuild-opensuse-leap.sh @@ -0,0 +1,7 @@ +#!/bin/sh -ex + +# Found that packages repositories can have broken +# repositories in zypper cache. To fix it, zypper +# cache should be refreshed. +sudo zypper clean +sudo zypper refresh diff --git a/rpm/tarantool.spec b/rpm/tarantool.spec index 88b1d6b5c..eedc0312c 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 @@ -53,6 +53,12 @@ Requires(preun): initscripts %bcond_without backtrace %endif +# openSuSE sets its own build directory in its macros, but we +# want to use in-source build there to simplify the RPM spec. +%if (0%{?sle_version} >= 1500) +%global __builddir . +%endif + %if %{with backtrace} BuildRequires: libunwind-devel # @@ -78,7 +84,7 @@ BuildRequires: python2-six >= 1.9.0 BuildRequires: python2-gevent >= 1.0 BuildRequires: python2-yaml >= 3.0.9 %else -%if (0%{?rhel} != 6) +%if (0%{?rhel} != 6 || 0%{?sle_version} >= 1500) BuildRequires: python >= 2.7 BuildRequires: python-six >= 1.9.0 BuildRequires: python-gevent >= 1.0 @@ -105,7 +111,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 @@ -164,7 +170,7 @@ rm -rf %{buildroot}%{_datarootdir}/doc/tarantool/ %check %if "%{_ci}" == "travis" -%if (0%{?fedora} >= 22 || 0%{?rhel} >= 7) +%if (0%{?fedora} >= 22 || 0%{?rhel} >= 7 || 0%{?sle_version} >= 1500) cd test && ./test-run.py --force -j 1 unit/ app/ app-tap/ box/ box-tap/ engine/ vinyl/ %endif %else diff --git a/test/app-tap/CMakeLists.txt b/test/app-tap/CMakeLists.txt index ee67cf533..529ea055f 100644 --- a/test/app-tap/CMakeLists.txt +++ b/test/app-tap/CMakeLists.txt @@ -1 +1,5 @@ +# The dynamic libraries will be loaded from tarantool executable +# and will use symbols from it. So it is completely okay to have +# unresolved symbols at build time. +string(REPLACE "-Wl,--no-undefined" "" CMAKE_SHARED_LINKER_FLAGS "${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..28a2c0698 100644 --- a/test/app/CMakeLists.txt +++ b/test/app/CMakeLists.txt @@ -1 +1,5 @@ +# The dynamic libraries will be loaded from tarantool executable +# and will use symbols from it. So it is completely okay to have +# unresolved symbols at build time. +string(REPLACE "-Wl,--no-undefined" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}") build_module(loaderslib loaderslib.c) diff --git a/test/box-tap/cfg.skipcond b/test/box-tap/cfg.skipcond index 33cafc12b..5f4256b6a 100644 --- a/test/box-tap/cfg.skipcond +++ b/test/box-tap/cfg.skipcond @@ -1,3 +1,4 @@ +import os import platform # Disabled on FreeBSD due to fail #4271: @@ -5,6 +6,15 @@ import platform if platform.system() == 'FreeBSD': self.skip = 1 +# Disabled on openSuSE due to issue #4594: +# Test not ready to be used, because of problems +# around forking processes from Tarantool. +try: + if os.popen('lsb_release -i').read().split(':')[1].strip() == 'openSUSE': + self.skip = 1 +except IndexError: + pass + # Disabled on OpenBSD due to fail #XXXX: if platform.system() == 'OpenBSD': self.skip = 1 diff --git a/test/box/CMakeLists.txt b/test/box/CMakeLists.txt index 06bfbbe9d..8bc547f35 100644 --- a/test/box/CMakeLists.txt +++ b/test/box/CMakeLists.txt @@ -1,3 +1,7 @@ +# The dynamic libraries will be loaded from tarantool executable +# and will use symbols from it. So it is completely okay to have +# unresolved symbols at build time. +string(REPLACE "-Wl,--no-undefined" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}") include_directories(${MSGPUCK_INCLUDE_DIRS}) build_module(function1 function1.c) build_module(reload1 reload1.c) diff --git a/tools/update_repo.sh b/tools/update_repo.sh index 47eadd189..65bafe757 100755 --- a/tools/update_repo.sh +++ b/tools/update_repo.sh @@ -6,7 +6,7 @@ rm_dir='rm -rf' mk_dir='mkdir -p' ws_prefix=/tmp/tarantool_repo_s3 -alloss='ubuntu debian el fedora' +alloss='ubuntu debian el fedora opensuse-leap' product=tarantool remove= force= @@ -31,6 +31,8 @@ function get_os_dists { alldists='6 7 8' elif [ "$os" == "fedora" ]; then alldists='27 28 29 30 31' + elif [ "$os" == "opensuse-leap" ]; then + alldists='15.0 15.1 15.2' fi echo "$alldists" @@ -934,7 +936,7 @@ if [ "$os" == "ubuntu" -o "$os" == "debian" ]; then # unlock the publishing $rm_file $ws_lockfile popd -elif [ "$os" == "el" -o "$os" == "fedora" ]; then +elif [ "$os" == "el" -o "$os" == "fedora" -o "$os" == "opensuse-leap" ]; then # RPM packages structure needs different paths for binaries and sources # packages, in this way it is needed to call the packages registering # script twice with the given format: -- 2.17.1