e970248602
Summary: This PR adds support for building on s390x including updating travis CI. It uses the previous work in https://github.com/facebook/rocksdb/pull/6168 and adds some more changes to get all current tests (make check and jni tests) to pass. The tests were run with snappy, lz4, bzip2 and zstd all compiled in. There are a few pieces still needed to get the travis build working that I don't think I can do. adamretter is this something you could help with? 1. A prebuilt https://rocksdb-deps.s3-us-west-2.amazonaws.com/cmake/cmake-3.14.5-Linux-s390x.deb package 2. A https://hub.docker.com/r/evolvedbinary/rocksjava s390x image Not sure if there is more required for travis. Happy to help in any way I can. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8962 Reviewed By: mrambacher Differential Revision: D31802198 Pulled By: pdillinger fbshipit-source-id: 683511466fa6b505f85ba5a9964a268c6151f0c2
306 lines
9.5 KiB
YAML
306 lines
9.5 KiB
YAML
dist: xenial
|
|
language: cpp
|
|
os:
|
|
- linux
|
|
arch:
|
|
- arm64
|
|
- ppc64le
|
|
- s390x
|
|
compiler:
|
|
- clang
|
|
- gcc
|
|
cache:
|
|
- ccache
|
|
|
|
addons:
|
|
apt:
|
|
update: true
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- libgflags-dev
|
|
- libbz2-dev
|
|
- liblz4-dev
|
|
- libsnappy-dev
|
|
- liblzma-dev # xv
|
|
- libzstd-dev
|
|
- zlib1g-dev
|
|
|
|
env:
|
|
- TEST_GROUP=platform_dependent # 16-18 minutes
|
|
- TEST_GROUP=1 # 33-35 minutes
|
|
- TEST_GROUP=2 # 18-20 minutes
|
|
- TEST_GROUP=3 # 20-22 minutes
|
|
- TEST_GROUP=4 # 12-14 minutes
|
|
# Run java tests
|
|
- JOB_NAME=java_test # 4-11 minutes
|
|
# Build ROCKSDB_LITE
|
|
- JOB_NAME=lite_build # 3-4 minutes
|
|
# Build examples
|
|
- JOB_NAME=examples # 5-7 minutes
|
|
- JOB_NAME=cmake # 3-5 minutes
|
|
- JOB_NAME=cmake-gcc8 # 3-5 minutes
|
|
- JOB_NAME=cmake-gcc9 # 3-5 minutes
|
|
- JOB_NAME=cmake-gcc9-c++20 # 3-5 minutes
|
|
- JOB_NAME=cmake-mingw # 3 minutes
|
|
- JOB_NAME=make-gcc4.8
|
|
- JOB_NAME=status_checked
|
|
|
|
matrix:
|
|
exclude:
|
|
- os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=cmake-mingw
|
|
- os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=make-gcc4.8
|
|
- os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=cmake-mingw
|
|
- os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=make-gcc4.8
|
|
- os: linux
|
|
arch: s390x
|
|
env: JOB_NAME=cmake-mingw
|
|
- os: linux
|
|
arch: s390x
|
|
env: JOB_NAME=make-gcc4.8
|
|
- os: linux
|
|
compiler: clang
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: arm64
|
|
env: TEST_GROUP=platform_dependent
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: TEST_GROUP=1
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: TEST_GROUP=1
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: s390x
|
|
env: TEST_GROUP=1
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: TEST_GROUP=2
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: TEST_GROUP=2
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: s390x
|
|
env: TEST_GROUP=2
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: TEST_GROUP=3
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: TEST_GROUP=3
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: s390x
|
|
env: TEST_GROUP=3
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: TEST_GROUP=4
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: TEST_GROUP=4
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: s390x
|
|
env: TEST_GROUP=4
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=cmake
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/ AND commit_message !~ /java/
|
|
os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=java_test
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/ AND commit_message !~ /java/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=java_test
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/ AND commit_message !~ /java/
|
|
os: linux
|
|
arch: s390x
|
|
env: JOB_NAME=java_test
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=lite_build
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=lite_build
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: s390x
|
|
env: JOB_NAME=lite_build
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=examples
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=examples
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: s390x
|
|
env: JOB_NAME=examples
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=cmake-gcc8
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=cmake-gcc8
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: s390x
|
|
env: JOB_NAME=cmake-gcc8
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=cmake-gcc9
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=cmake-gcc9
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: s390x
|
|
env: JOB_NAME=cmake-gcc9
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=cmake-gcc9-c++20
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=cmake-gcc9-c++20
|
|
- if: type = pull_request AND commit_message !~ /FULL_CI/
|
|
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:
|
|
- if [ "${JOB_NAME}" == cmake-gcc8 ]; then
|
|
sudo apt-get install -y g++-8 || exit $?;
|
|
CC=gcc-8 && CXX=g++-8;
|
|
fi
|
|
- if [ "${JOB_NAME}" == cmake-gcc9 ] || [ "${JOB_NAME}" == cmake-gcc9-c++20 ]; then
|
|
sudo apt-get install -y g++-9 || exit $?;
|
|
CC=gcc-9 && CXX=g++-9;
|
|
fi
|
|
- if [ "${JOB_NAME}" == cmake-mingw ]; then
|
|
sudo apt-get install -y mingw-w64 || exit $?;
|
|
fi
|
|
- if [ "${JOB_NAME}" == make-gcc4.8 ]; then
|
|
sudo apt-get install -y g++-4.8 || exit $?;
|
|
CC=gcc-4.8 && CXX=g++-4.8;
|
|
fi
|
|
- |
|
|
if [[ "${JOB_NAME}" == cmake* ]]; then
|
|
sudo apt-get remove -y cmake cmake-data
|
|
export CMAKE_DEB="cmake-3.14.5-Linux-$(uname -m).deb"
|
|
export CMAKE_DEB_URL="https://rocksdb-deps.s3-us-west-2.amazonaws.com/cmake/${CMAKE_DEB}"
|
|
curl --silent --fail --show-error --location --output "${CMAKE_DEB}" "${CMAKE_DEB_URL}" || exit $?
|
|
sudo dpkg -i "${CMAKE_DEB}" || exit $?
|
|
which cmake && cmake --version
|
|
fi
|
|
- |
|
|
if [[ "${JOB_NAME}" == java_test || "${JOB_NAME}" == cmake* ]]; then
|
|
# Ensure JDK 8
|
|
sudo apt-get install -y openjdk-8-jdk || exit $?
|
|
export PATH=/usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture)/bin:$PATH
|
|
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture)
|
|
echo "JAVA_HOME=${JAVA_HOME}"
|
|
which java && java -version
|
|
which javac && javac -version
|
|
fi
|
|
|
|
before_script:
|
|
# Increase the maximum number of open file descriptors, since some tests use
|
|
# more FDs than the default limit.
|
|
- ulimit -n 8192
|
|
|
|
script:
|
|
- date; ${CXX} --version
|
|
- if [ `command -v ccache` ]; then ccache -C; 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
|
|
;;
|
|
1)
|
|
OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_END=backupable_db_test make -j4 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
|
|
;;
|
|
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
|
|
;;
|
|
4)
|
|
OPT=-DTRAVIS LIB_MODE=shared V=1 ROCKSDBTESTS_PLATFORM_DEPENDENT=exclude ROCKSDBTESTS_START=table_properties_collector_test make -j4 check_some
|
|
;;
|
|
esac
|
|
- case $JOB_NAME in
|
|
java_test)
|
|
OPT=-DTRAVIS LIB_MODE=shared V=1 make rocksdbjava jtest
|
|
;;
|
|
lite_build)
|
|
OPT='-DTRAVIS -DROCKSDB_LITE' LIB_MODE=shared V=1 make -j4 all
|
|
;;
|
|
examples)
|
|
OPT=-DTRAVIS LIB_MODE=shared V=1 make -j4 static_lib && cd examples && make -j4
|
|
;;
|
|
cmake-mingw)
|
|
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix;
|
|
mkdir build && cd build && cmake -DJNI=1 -DWITH_GFLAGS=OFF .. -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows && make -j4 rocksdb rocksdbjni
|
|
;;
|
|
cmake*)
|
|
case $JOB_NAME in
|
|
*-c++20)
|
|
OPT=-DCMAKE_CXX_STANDARD=20
|
|
;;
|
|
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
|
|
;;
|
|
make-gcc4.8)
|
|
OPT=-DTRAVIS LIB_MODE=shared V=1 SKIP_LINK=1 make -j4 all && [ "Linking broken because libgflags compiled with newer ABI" ]
|
|
;;
|
|
status_checked)
|
|
OPT=-DTRAVIS LIB_MODE=shared V=1 ASSERT_STATUS_CHECKED=1 make -j4 check_some
|
|
;;
|
|
esac
|
|
notifications:
|
|
email:
|
|
- leveldb@fb.com
|