From a450681a8f75a9924705fc8481ad65a2316dc8e6 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Fri, 6 Dec 2019 23:32:16 -0500 Subject: [PATCH] Merge #17635: ci: Add CentOS 7 build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 711e0449cf4a0f15cabe0d64094e3add24ad44b0 ci: Remove trusty build (Hennadii Stepanov) 7f3ae224685efaeb6fe714de90e8871d12e55f34 ci: Add CentOS 7 build (Hennadii Stepanov) Pull request description: Arguably, CentOS is the most conservative distro of all the popular ones. Thus, it could be a good way to check the Bitcoin Core compatibility with aged dependencies. Currently, CentOS 7 has: - Berkeley DB == 4.8.30 - Boost == 1.53.0 - GCC == 4.8.5 - libevent == 2.0.21 < minimum required [2.0.22](https://github.com/bitcoin/bitcoin/blob/master/doc/dependencies.md), but tests passed - MiniUPnPc == 2.0 - Python == 3.6.8 - qrencode == 3.4.1 - Qt == 5.9.7 - ZeroMQ == 4.1.4 ~Please note that this PR is based on the bugfix #17634.~ Also trusty build has been removed for the following reasons: - https://github.com/bitcoin/bitcoin/issues/17628#issuecomment-559448201: > Maybe it'd make sense to replace Ubuntu Trusty with Centos 7 as the "check ancient backward compatibililty" Travis run. It's supported until 2024, apparently. - https://github.com/bitcoin/bitcoin/pull/17635#discussion_r354811792: > Our travis is currently running at its limit and this doesn't seem like it is adding a lot new coverage compared to the other builds. Close #17628 ACKs for top commit: MarcoFalke: ACK 711e0449cf4a0f15cabe0d64094e3add24ad44b0 🚠 Tree-SHA512: 614ec8394943f482a5867067f7119bffd052924a51e32ffda9a08e10c392c4a955a3539e2f8907cb65bfd9347dadf0ba62f6d1530bbc49927c347360a5a7f73c --- .travis.yml | 10 +++++----- ci/test/00_setup_env_native_centos.sh | 14 ++++++++++++++ ci/test/04_install.sh | 9 ++++++++- 3 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 ci/test/00_setup_env_native_centos.sh diff --git a/.travis.yml b/.travis.yml index 17b8773ae2..4037ffac7f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -233,16 +233,16 @@ after_success: env: >- FILE_ENV="./ci/test/00_setup_env_i686.sh" + - stage: test + name: 'x86_64 Linux [GOAL: install] [CentOS 7] [no depends, only system libs]' + env: >- + FILE_ENV="./ci/test/00_setup_env_native_centos.sh" + - stage: test name: 'x86_64 Linux [GOAL: install] [bionic] [uses qt5 dev package instead of depends Qt to speed up build and avoid timeout] [unsigned char]' env: >- FILE_ENV="./ci/test/00_setup_env_native_qt5.sh" # x86_64 Linux (xenial, no depends, only system libs, sanitizers: thread (TSan)) - - stage: test - name: 'x86_64 Linux [GOAL: install] [trusty] [no functional tests, no depends, only system libs]' - env: >- - FILE_ENV="./ci/test/00_setup_env_native_trusty.sh" - - stage: test name: 'x86_64 Linux [GOAL: install] [xenial] [no depends, only system libs, sanitizers: thread (TSan), no wallet]' env: >- diff --git a/ci/test/00_setup_env_native_centos.sh b/ci/test/00_setup_env_native_centos.sh new file mode 100644 index 0000000000..56b915b6c7 --- /dev/null +++ b/ci/test/00_setup_env_native_centos.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# +# Copyright (c) 2019 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +export LC_ALL=C.UTF-8 + +export DOCKER_NAME_TAG=centos:7 +export DOCKER_PACKAGES="gcc-c++ libtool make git python3 python36-zmq" +export PACKAGES="boost-devel libevent-devel libdb4-devel libdb4-cxx-devel miniupnpc-devel zeromq-devel qt5-qtbase-devel qt5-qttools-devel qrencode-devel" +export NO_DEPENDS=1 +export GOAL="install" +export BITCOIN_CONFIG="--enable-reduce-exports" diff --git a/ci/test/04_install.sh b/ci/test/04_install.sh index 5a87cf06d9..21df74f483 100755 --- a/ci/test/04_install.sh +++ b/ci/test/04_install.sh @@ -6,6 +6,10 @@ export LC_ALL=C.UTF-8 +if [[ $DOCKER_NAME_TAG == centos* ]]; then + export LC_ALL=en_US.utf8 +fi + if [ "$TRAVIS_OS_NAME" == "osx" ]; then set +o errexit pushd /usr/local/Homebrew || exit 1 @@ -81,7 +85,10 @@ if [ -n "$DPKG_ADD_ARCH" ]; then DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH" fi -if [ "$TRAVIS_OS_NAME" != "osx" ]; then +if [[ $DOCKER_NAME_TAG == centos* ]]; then + ${CI_RETRY_EXE} DOCKER_EXEC yum -y install epel-release + ${CI_RETRY_EXE} DOCKER_EXEC yum -y install $DOCKER_PACKAGES $PACKAGES +elif [ "$TRAVIS_OS_NAME" != "osx" ]; then ${CI_RETRY_EXE} DOCKER_EXEC apt-get update ${CI_RETRY_EXE} DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -y $PACKAGES $DOCKER_PACKAGES fi