mirror of
https://github.com/facebook/rocksdb.git
synced 2024-11-26 07:30:54 +00:00
fd3e0f43b3
Summary: Drop support for some old compilers by requiring C++17 standard (or higher). See https://github.com/facebook/rocksdb/issues/9388 First modification based on this is to remove some conditional compilation in slice.h (also better for ODR) Also in this PR: * Fix some Makefile formatting that seems to affect ASSERT_STATUS_CHECKED config in some cases * Add c_test to NON_PARALLEL_TEST in Makefile * Fix a clang-analyze reported "potential leak" in lru_cache_test * Better "compatibility" definition of DEFINE_uint32 for old versions of gflags * Fix a linking problem with shared libraries in Makefile (`./random_test: error while loading shared libraries: librocksdb.so.6.29: cannot open shared object file: No such file or directory`) * Always set ROCKSDB_SUPPORT_THREAD_LOCAL and use thread_local (from C++11) * TODO in later PR: clean up that obsolete flag * Fix a cosmetic typo in c.h (https://github.com/facebook/rocksdb/issues/9488) Pull Request resolved: https://github.com/facebook/rocksdb/pull/9481 Test Plan: CircleCI config substantially updated. * Upgrade to latest Ubuntu images for each release * Generally prefer Ubuntu 20, but keep a couple Ubuntu 16 builds with oldest supported compilers, to ensure compatibility * Remove .circleci/cat_ignore_eagain except for Ubuntu 16 builds, because this is to work around a kernel bug that should not affect anything but Ubuntu 16. * Remove designated gcc-9 build, because the default linux build now uses GCC 9 from Ubuntu 20. * Add some `apt-key add` to fix some apt "couldn't be verified" errors * Generally drop SKIP_LINK=1; work-around no longer needed * Generally `add-apt-repository` before `apt-get update` as manual testing indicated the reverse might not work. Travis: * Use gcc-7 by default (remove specific gcc-7 and gcc-4.8 builds) * TODO in later PR: fix s390x "Assembler messages: Error: invalid switch -march=z14" failure AppVeyor: * Completely dropped because we are dropping VS2015 support and CircleCI covers VS >= 2017 Also local testing with old gflags (out of necessity when using ROCKSDB_NO_FBCODE=1). Reviewed By: mrambacher Differential Revision: D33946377 Pulled By: pdillinger fbshipit-source-id: ae077c823905b45370a26c0103ada119459da6c1
293 lines
9.1 KiB
YAML
293 lines
9.1 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=status_checked
|
|
|
|
matrix:
|
|
exclude:
|
|
- os : linux
|
|
arch: arm64
|
|
env: JOB_NAME=cmake-mingw
|
|
- os: linux
|
|
arch: ppc64le
|
|
env: JOB_NAME=cmake-mingw
|
|
- os: linux
|
|
arch: s390x
|
|
env: JOB_NAME=cmake-mingw
|
|
- 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:
|
|
- CC=gcc-7 && CXX=g++-7
|
|
- 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 [ "${CXX}" == "g++-7" ]; then
|
|
sudo apt-get install -y g++-7 || exit $?;
|
|
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
|
|
;;
|
|
status_checked)
|
|
OPT=-DTRAVIS LIB_MODE=shared V=1 ASSERT_STATUS_CHECKED=1 make -j4 check_some
|
|
;;
|
|
esac
|
|
notifications:
|
|
email:
|
|
- leveldb@fb.com
|