From 3edbeeaa50d04ccd23ae502ff3eab881ae05b106 Mon Sep 17 00:00:00 2001 From: Jonathan Albrecht Date: Tue, 1 Mar 2022 13:50:41 -0800 Subject: [PATCH] Reenable s390x platform_dependent travis job (#9631) Summary: Fix g++ -march=native detection and reenable s390x in travis This PR fixes s390x assembler messages: ``` Error: invalid switch -march=z14 Error: unrecognized option -march=z14 ``` The s390x travis build was failing with gcc-7 because the assembler on ubuntu 16.04 is too old to recognize the z14 model so it doesn't work with -march=native on a z14 machine. It fixes the check for the -march=native flag so that the assembler will get called and correctly fail on ubuntu 16.04 which will cause the build to fall back to -march=z196 which works. The other changes are needed so builds work more consistently on s390x: 1. Set make parallelism to 1 for s390x: The default was 4 previously but I saw frequent internal compiler errors on travis probably due to low resources. The `platform_dependent` job works more consistently but is roughly 10 minutes slower although it varies. 2. Remove status_checked jobs, as we are relying on CircleCI for these now and do not really need platform coverage on them. Fixes https://github.com/facebook/rocksdb/issues/9524 Pull Request resolved: https://github.com/facebook/rocksdb/pull/9631 Test Plan: CI Reviewed By: ajkr Differential Revision: D34553989 Pulled By: pdillinger fbshipit-source-id: a6e3a7276446721c4c0bebc4ed217c2ca2b53f11 --- .travis.yml | 40 ++++++++++--------------------- build_tools/build_detect_platform | 2 +- 2 files changed, 13 insertions(+), 29 deletions(-) diff --git a/.travis.yml b/.travis.yml index d2dc331428..8c5ce5bb94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,7 +43,6 @@ env: - JOB_NAME=cmake-gcc9 # 3-5 minutes - JOB_NAME=cmake-gcc9-c++20 # 3-5 minutes - JOB_NAME=cmake-mingw # 3 minutes - - JOB_NAME=status_checked matrix: exclude: @@ -58,10 +57,6 @@ matrix: env: JOB_NAME=cmake-mingw - os: linux compiler: clang - - if: type = pull_request AND commit_message !~ /FULL_CI/ - os: linux - arch: s390x # Temporary while working through gcc-7 + assembler issue - env: TEST_GROUP=platform_dependent - if: type = pull_request AND commit_message !~ /FULL_CI/ os: linux arch: arm64 @@ -190,18 +185,6 @@ matrix: os: linux arch: s390x env: JOB_NAME=cmake-gcc9-c++20 - - if: type = pull_request AND commit_message !~ /FULL_CI/ - os : linux - arch: arm64 - env: JOB_NAME=status_checked - - if: type = pull_request AND commit_message !~ /FULL_CI/ - os: linux - arch: ppc64le - env: JOB_NAME=status_checked - - if: type = pull_request AND commit_message !~ /FULL_CI/ - os: linux - arch: s390x - env: JOB_NAME=status_checked install: - CC=gcc-7 && CXX=g++-7 @@ -247,21 +230,25 @@ before_script: script: - date; ${CXX} --version - if [ `command -v ccache` ]; then ccache -C; fi + - export MK_PARALLEL=4; + if [[ "$TRAVIS_CPU_ARCH" == s390x ]]; then + export MK_PARALLEL=1; + fi - case $TEST_GROUP in platform_dependent) - OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=only make -j4 all_but_some_tests check_some + OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=only make -j$MK_PARALLEL all_but_some_tests check_some ;; 1) - OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_END=backupable_db_test make -j4 check_some + OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_END=backupable_db_test make -j$MK_PARALLEL check_some ;; 2) - OPT="-DTRAVIS -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" LIB_MODE=shared V=1 make -j4 tools && OPT="-DTRAVIS -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_START=backupable_db_test ROCKSDBTESTS_END=db_universal_compaction_test make -j4 check_some + OPT="-DTRAVIS -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" LIB_MODE=shared V=1 make -j$MK_PARALLEL tools && OPT="-DTRAVIS -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_START=backupable_db_test ROCKSDBTESTS_END=db_universal_compaction_test make -j$MK_PARALLEL check_some ;; 3) - OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_START=db_universal_compaction_test ROCKSDBTESTS_END=table_properties_collector_test make -j4 check_some + OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_START=db_universal_compaction_test ROCKSDBTESTS_END=table_properties_collector_test make -j$MK_PARALLEL check_some ;; 4) - OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_START=table_properties_collector_test make -j4 check_some + OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_START=table_properties_collector_test make -j$MK_PARALLEL check_some ;; esac - case $JOB_NAME in @@ -269,10 +256,10 @@ script: OPT=-DTRAVIS LIB_MODE=shared V=1 make rocksdbjava jtest ;; lite_build) - OPT='-DTRAVIS -DROCKSDB_LITE' LIB_MODE=shared V=1 make -j4 all + OPT='-DTRAVIS -DROCKSDB_LITE' LIB_MODE=shared V=1 make -j$MK_PARALLEL all ;; examples) - OPT=-DTRAVIS LIB_MODE=shared V=1 make -j4 static_lib && cd examples && make -j4 + OPT=-DTRAVIS LIB_MODE=shared V=1 make -j$MK_PARALLEL static_lib && cd examples && make -j$MK_PARALLEL ;; cmake-mingw) sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; @@ -285,10 +272,7 @@ script: ;; esac - mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=0 -DWITH_GFLAGS=0 -DWITH_BENCHMARK_TOOLS=0 -DWITH_TOOLS=0 -DWITH_CORE_TOOLS=1 .. && make -j4 && cd .. && rm -rf build && mkdir build && cd build && cmake -DJNI=1 .. -DCMAKE_BUILD_TYPE=Release $OPT && make -j4 rocksdb rocksdbjni - ;; - status_checked) - OPT=-DTRAVIS LIB_MODE=shared V=1 ASSERT_STATUS_CHECKED=1 make -j4 check_some + mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TESTS=0 -DWITH_GFLAGS=0 -DWITH_BENCHMARK_TOOLS=0 -DWITH_TOOLS=0 -DWITH_CORE_TOOLS=1 .. && make -j$MK_PARALLEL && cd .. && rm -rf build && mkdir build && cd build && cmake -DJNI=1 .. -DCMAKE_BUILD_TYPE=Release $OPT && make -j$MK_PARALLEL rocksdb rocksdbjni ;; esac notifications: diff --git a/build_tools/build_detect_platform b/build_tools/build_detect_platform index 7aa079a364..4dc9dd31bc 100755 --- a/build_tools/build_detect_platform +++ b/build_tools/build_detect_platform @@ -632,7 +632,7 @@ if test "0$PORTABLE" -eq 0; then COMMON_FLAGS="$COMMON_FLAGS" elif test -n "`echo $TARGET_ARCHITECTURE | grep ^s390x`"; then if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ \ - -fsyntax-only -march=native - -o /dev/null 2>/dev/null; then + -march=native - -o /dev/null 2>/dev/null; then COMMON_FLAGS="$COMMON_FLAGS -march=native " else COMMON_FLAGS="$COMMON_FLAGS -march=z196 "