diff options
Diffstat (limited to 'testing/source/vtown/deps/cryfs/.circleci/config.yml')
-rw-r--r-- | testing/source/vtown/deps/cryfs/.circleci/config.yml | 612 |
1 files changed, 612 insertions, 0 deletions
diff --git a/testing/source/vtown/deps/cryfs/.circleci/config.yml b/testing/source/vtown/deps/cryfs/.circleci/config.yml new file mode 100644 index 00000000..a06f7149 --- /dev/null +++ b/testing/source/vtown/deps/cryfs/.circleci/config.yml @@ -0,0 +1,612 @@ +version: 2.0 + +references: + container_config: &container_config + machine: true + cache_init: &cache_init + run: + name: Initialize Cache + command: | + echo "${APT_COMPILER_PACKAGE}_${BUILD_TOOLSET}_${CXX}_${CC}_${BUILD_TYPE}_${CXXFLAGS}" > /tmp/_build_env_vars + echo Build env vars used for cache keys: + cat /tmp/_build_env_vars + container_setup_pre: &container_setup_pre + restore_cache: + keys: + # Find the most recent cache from any branch + - v4_container_setup_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }} + container_setup_post: &container_setup_post + save_cache: + # Add _aptcache_contents to cache key so that it is re-uploaded each time the cache changes. + key: v4_container_setup_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ checksum "/tmp/_aptcache_contents" }} + paths: + - /tmp/aptcache + container_setup: &container_setup + run: + name: Setup Environment + command: | + if [ -d "/tmp/aptcache" ]; then + echo Using packages from apt cache + sudo cp -R /tmp/aptcache/* /var/cache/apt/archives/ + else + echo No apt cache found + fi + + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - + sudo touch /etc/apt/sources.list.d/clang.list + sudo chmod o+w /etc/apt/sources.list.d/clang.list + cat > /etc/apt/sources.list.d/clang.list << EOF + deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main + deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main + deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main + deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main + deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-6.0 main + deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-6.0 main + deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-7 main + deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-7 main + deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-8 main + deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-8 main + EOF + sudo chmod o-w /etc/apt/sources.list.d/clang.list + + DEBIAN_FRONTEND=noninteractive sudo apt-get update -qq + DEBIAN_FRONTEND=noninteractive sudo apt-get install -y git ccache $APT_COMPILER_PACKAGE cmake3 make libcurl4-openssl-dev libssl-dev libfuse-dev python + # Use /dev/urandom when /dev/random is accessed to use less entropy + sudo cp -a /dev/urandom /dev/random + + if [ "${BUILD_TOOLSET}" = "clang" ]; then + # They aren't set automatically unfortunately + sudo ln -s /usr/bin/$CC /usr/bin/clang + sudo ln -s /usr/bin/$CXX /usr/bin/clang++ + sudo ln -s /usr/bin/clang-tidy-8 /usr/bin/clang-tidy + sudo ln -s /usr/bin/run-clang-tidy-8.py /usr/bin/run-clang-tidy.py + + # Need a c++14 compliant STL for clang + sudo apt-get install -y g++-5 + sudo apt-get remove g++-4.8 gcc-4.8 + fi + + # Setup ccache + sudo ln -s /usr/bin/ccache /usr/local/bin/$CC + sudo ln -s /usr/bin/ccache /usr/local/bin/$CXX + sudo mkdir /ccache_data + sudo chown circleci:circleci /ccache_data + echo 'export CCACHE_COMPILERCHECK=content' >> $BASH_ENV + echo 'export CCACHE_COMPRESS=1' >> $BASH_ENV + echo 'export CCACHE_DIR=/ccache_data' >> $BASH_ENV + echo 'export CCACHE_SLOPPINESS=include_file_mtime' >> $BASH_ENV + + sudo mkdir -p /tmp/aptcache + sudo cp -R /var/cache/apt/archives/* /tmp/aptcache/ + ls /tmp/aptcache > /tmp/_aptcache_contents + + echo + echo System Info: + cat /etc/issue + uname -a + cmake --version + /usr/local/bin/$CC --version + /usr/local/bin/$CXX --version + upgrade_boost_pre: &upgrade_boost_pre + restore_cache: + keys: + # Find the most recent cache from any branch + - v4_upgrade_boost_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }} + upgrade_boost_post: &upgrade_boost_post + save_cache: + key: v4_upgrade_boost_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }} + paths: + - /tmp/boost_1_65_1 + upgrade_boost: &upgrade_boost + run: + name: Upgrade Boost + command: | + # Detect number of CPU cores + export NUMCORES=`nproc` + echo Using $NUMCORES cores + # Download and prepare boost (only if not already present from cache) + if [ ! -d "/tmp/boost_1_65_1" ]; then + echo "Didn't find boost in cache. Downloading and building." + wget -O /tmp/boost.tar.bz2 https://sourceforge.net/projects/boost/files/boost/1.65.1/boost_1_65_1.tar.bz2/download + if [ $(sha512sum /tmp/boost.tar.bz2 | awk '{print $1;}') == "a9e6866d3bb3e7c198f442ff09f5322f58064dca79bc420f2f0168eb63964226dfbc4f034a5a5e5958281fdf7518a1b057c894fbda0b61fced59c1661bf30f1a" ]; then + echo Correct sha512sum + else + echo Wrong sha512sum + sha512sum boost.tar.bz2 + exit 1 + fi + echo Extracting... + tar -xf /tmp/boost.tar.bz2 -C /tmp + rm -rf boost.tar.bz2 + cd /tmp/boost_1_65_1 + ./bootstrap.sh --with-toolset=${BUILD_TOOLSET} --with-libraries=filesystem,thread,chrono,program_options + cd .. + else + echo Found boost in cache. Use cache and build. + fi + # Compile and install boost (if cached, this should be fast) + cd /tmp/boost_1_65_1 + sudo ./b2 toolset=${BUILD_TOOLSET} link=static cxxflags=-fPIC -d0 -j$NUMCORES install + build_pre: &build_pre + restore_cache: + keys: + # Find most recent cache from any revision on the same branch (cache keys are prefix matched) + # CIRCLE_PR_NUMBER is only set if this is a pull request. + - v3_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }}_{{ .Environment.CIRCLE_PR_NUMBER }} + # Fallback to less specific caches if the one above wasn't found + - v3_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }} + - v3_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }} + build_post: &build_post + save_cache: + key: v3_build_cache_{{ checksum "/tmp/_build_env_vars" }}_{{ arch }}_{{ .Branch }}_{{ .Environment.CIRCLE_PR_NUMBER }}_{{ .Revision }} + paths: + - /ccache_data + build: &build + run: + name: Build + command: | + export NUMCORES=`nproc` && if [ ! -n "$NUMCORES" ]; then export NUMCORES=`sysctl -n hw.ncpu`; fi + echo Using $NUMCORES cores + # Use ccache + export CXX=/usr/local/bin/$CXX + export CC=/usr/local/bin/$CC + ccache --max-size=512M + ccache --show-stats + + # Disable OpenMP if it is clang, because Ubuntu 14.04 doesn't have the libomp-dev package needed to support OpenMP for clang. + if [[ ${APT_COMPILER_PACKAGE} == clang* ]]; then + OPENMP_PARAMS="-DDISABLE_OPENMP=ON" + else + OPENMP_PARAMS="" + fi + + # Build + mkdir cmake + cd cmake + cmake .. -DBUILD_TESTING=on -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${OPENMP_PARAMS} ${CMAKE_FLAGS} + make -j$NUMCORES + + ccache --show-stats + test: &test + run: + name: Test + no_output_timeout: 120m + command: | + if "${RUN_TESTS}"; then + cd cmake + ./test/gitversion/gitversion-test ${GTEST_ARGS} + ./test/cpp-utils/cpp-utils-test ${GTEST_ARGS} + if [ ! "$DISABLE_BROKEN_ASAN_TESTS" = true ] ; then ./test/fspp/fspp-test ${GTEST_ARGS} ; fi + ./test/parallelaccessstore/parallelaccessstore-test ${GTEST_ARGS} + ./test/blockstore/blockstore-test ${GTEST_ARGS} + ./test/blobstore/blobstore-test ${GTEST_ARGS} + ./test/cryfs/cryfs-test ${GTEST_ARGS} + ./test/cryfs-cli/cryfs-cli-test ${GTEST_ARGS} + fi + job_definition: &job_definition + <<: *container_config + steps: + - <<: *cache_init + - <<: *container_setup_pre + - <<: *container_setup + - <<: *container_setup_post + - <<: *upgrade_boost_pre + - <<: *upgrade_boost + - <<: *upgrade_boost_post + - checkout + - <<: *build_pre + - <<: *build + - <<: *build_post + - <<: *test + enable_for_tags: &enable_for_tags + filters: + tags: + only: /.*/ + +jobs: + gcc_5_debug: + <<: *job_definition + environment: + CC: gcc-5 + CXX: g++-5 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-5" + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_5_release: + <<: *job_definition + environment: + CC: gcc-5 + CXX: g++-5 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-5" + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_6_debug: + <<: *job_definition + environment: + CC: gcc-6 + CXX: g++-6 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-6" + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_6_release: + <<: *job_definition + environment: + CC: gcc-6 + CXX: g++-6 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-6" + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_7_debug: + <<: *job_definition + environment: + CC: gcc-7 + CXX: g++-7 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-7" + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_7_release: + <<: *job_definition + environment: + CC: gcc-7 + CXX: g++-7 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-7" + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_8_debug: + <<: *job_definition + environment: + CC: gcc-8 + CXX: g++-8 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-8" + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_8_release: + <<: *job_definition + environment: + CC: gcc-8 + CXX: g++-8 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-8" + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_9_debug: + <<: *job_definition + environment: + CC: gcc-9 + CXX: g++-9 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-9" + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + gcc_9_release: + <<: *job_definition + environment: + CC: gcc-9 + CXX: g++-9 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-9" + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_4_debug: + <<: *job_definition + environment: + CC: clang-4.0 + CXX: clang++-4.0 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-4.0 + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_4_release: + <<: *job_definition + environment: + CC: clang-4.0 + CXX: clang++-4.0 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-4.0 + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_5_debug: + <<: *job_definition + environment: + CC: clang-5.0 + CXX: clang++-5.0 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-5.0 + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_5_release: + <<: *job_definition + environment: + CC: clang-5.0 + CXX: clang++-5.0 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-5.0 + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_6_debug: + <<: *job_definition + environment: + CC: clang-6.0 + CXX: clang++-6.0 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-6.0 + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_6_release: + <<: *job_definition + environment: + CC: clang-6.0 + CXX: clang++-6.0 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-6.0 + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_7_debug: + <<: *job_definition + environment: + CC: clang-7 + CXX: clang++-7 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-7 + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_7_release: + <<: *job_definition + environment: + CC: clang-7 + CXX: clang++-7 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-7 + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_8_debug: + <<: *job_definition + environment: + CC: clang-8 + CXX: clang++-8 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-8 + CXXFLAGS: "" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_8_release: + <<: *job_definition + environment: + CC: clang-8 + CXX: clang++-8 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-8 + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_werror: + <<: *job_definition + environment: + CC: clang-8 + CXX: clang++-8 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-8 + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "-DUSE_WERROR=on" + RUN_TESTS: false + gcc_werror: + <<: *job_definition + environment: + CC: gcc-9 + CXX: g++-9 + BUILD_TOOLSET: gcc + APT_COMPILER_PACKAGE: "g++-9" + CXXFLAGS: "" + BUILD_TYPE: "Release" + GTEST_ARGS: "" + CMAKE_FLAGS: "-DUSE_WERROR=on" + RUN_TESTS: false + no_compatibility: + <<: *job_definition + environment: + CC: clang-8 + CXX: clang++-8 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-8 + CXXFLAGS: "-DCRYFS_NO_COMPATIBILITY" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + address_sanitizer: + <<: *job_definition + environment: + CC: clang-8 + CXX: clang++-8 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-8 + CXXFLAGS: "-O2 -fsanitize=address -fno-omit-frame-pointer -fno-common -fsanitize-address-use-after-scope" + BUILD_TYPE: "Debug" + ASAN_OPTIONS: "detect_leaks=1 check_initialization_order=1 detect_stack_use_after_return=1 detect_invalid_pointer_pairs=1 atexit=1" + DISABLE_BROKEN_ASAN_TESTS: true + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + ub_sanitizer: + <<: *job_definition + environment: + CC: clang-8 + CXX: clang++-8 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-8 + CXXFLAGS: "-O2 -fno-sanitize-recover=undefined,nullability,implicit-conversion,unsigned-integer-overflow -fno-omit-frame-pointer -fno-common" + BUILD_TYPE: "Debug" + GTEST_ARGS: "" + CMAKE_FLAGS: "" + RUN_TESTS: true + thread_sanitizer: + <<: *job_definition + environment: + CC: clang-8 + CXX: clang++-8 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: clang-8 + OMP_NUM_THREADS: "1" + CXXFLAGS: "-O2 -fsanitize=thread -fno-omit-frame-pointer" + BUILD_TYPE: "Debug" + GTEST_ARGS: "--gtest_filter=-LoggingTest.LoggingAlsoWorksAfterFork:AssertTest_*:BacktraceTest.*:SignalCatcherTest.*_thenDies:SignalHandlerTest.*_thenDies:SignalHandlerTest.givenMultipleSigIntHandlers_whenRaising_thenCatchesCorrectSignal:CliTest_Setup.*:CliTest_IntegrityCheck.*:*/CliTest_WrongEnvironment.*:CliTest_Unmount.*" + CMAKE_FLAGS: "" + RUN_TESTS: true + clang_tidy: + <<: *container_config + steps: + - <<: *cache_init + - <<: *container_setup_pre + - <<: *container_setup + - <<: *container_setup_post + - <<: *upgrade_boost_pre + - <<: *upgrade_boost + - <<: *upgrade_boost_post + - checkout + - run: + name: clang-tidy + command: | + # realpath, jq are needed for run-clang-tidy.sh, g++ is needed for pyyaml + sudo apt-get install realpath g++ jq + pip install pyyaml + mkdir cmake + cd cmake + if ! ../run-clang-tidy.sh -fix ; then + git diff > /tmp/clang-tidy-fixes + exit 1 + fi + - store_artifacts: + path: /tmp/clang-tidy-fixes + environment: + CC: clang-8 + CXX: clang++-8 + BUILD_TOOLSET: clang + APT_COMPILER_PACKAGE: "clang-8 clang-tidy-8" + +workflows: + version: 2 + + build_and_test: + jobs: + - gcc_5_debug: + <<: *enable_for_tags + - gcc_5_release: + <<: *enable_for_tags + - gcc_6_debug: + <<: *enable_for_tags + - gcc_6_release: + <<: *enable_for_tags + - gcc_7_debug: + <<: *enable_for_tags + - gcc_7_release: + <<: *enable_for_tags + - gcc_8_debug: + <<: *enable_for_tags + - gcc_8_release: + <<: *enable_for_tags + - gcc_9_debug: + <<: *enable_for_tags + - gcc_9_release: + <<: *enable_for_tags + - clang_4_debug: + <<: *enable_for_tags + - clang_4_release: + <<: *enable_for_tags + - clang_5_debug: + <<: *enable_for_tags + - clang_5_release: + <<: *enable_for_tags + - clang_6_debug: + <<: *enable_for_tags + - clang_6_release: + <<: *enable_for_tags + - clang_7_debug: + <<: *enable_for_tags + - clang_7_release: + <<: *enable_for_tags + - clang_8_debug: + <<: *enable_for_tags + - clang_8_release: + <<: *enable_for_tags + - clang_werror: + <<: *enable_for_tags + - gcc_werror: + <<: *enable_for_tags + - no_compatibility: + <<: *enable_for_tags + - address_sanitizer: + <<: *enable_for_tags + - ub_sanitizer: + <<: *enable_for_tags + - thread_sanitizer: + <<: *enable_for_tags + - clang_tidy: + <<: *enable_for_tags |