| image: gcc |
| |
| variables: |
| # Set `CCACHE_BASEDIR` and `CCACHE_DIR` to point `ccache` towards the cached |
| # path on the gitlab-runner. This enables to cache the output of `ccache` |
| # between various runs. |
| CCACHE_BASEDIR: "${CI_PROJECT_DIR}" |
| CCACHE_DIR: "${CI_PROJECT_DIR}/ccache" |
| # Set `ccache` to `content` to prevent rebuilding of the CI/CD containers to |
| # trigger a recreate of the cache. By using `content` the compiler's `mtime` |
| # is not considered as part of the hash. |
| CCACHE_COMPILERCHECK: "content" |
| # Enable caching for `apt-get`. |
| APT_CACHE_DIR: "${CI_PROJECT_DIR}/apt-cache" |
| # Export `noninteractive` frontend to prevent requesting user input. |
| DEBIAN_FRONTEND: "noninteractive" |
| |
| build-and-test: |
| stage: build |
| cache: |
| # Cache is shared between branches, but has a unique cache per job. |
| key: dereko2vec |
| paths: |
| # Note: directories should align with `$APT_CACHE_DIR` and `$CCACHE_DIR`. |
| - apt-cache/ |
| - ccache/ |
| |
| before_script: |
| - pwd |
| - source `find .. -name section_helper.sh` |
| |
| - start_section install_linux_packages "Installing missing Linux packages" |
| - mkdir -pv $APT_CACHE_DIR ccache |
| - apt-get update && apt-get -o dir::cache::archives="$APT_CACHE_DIR" -y install ccache cmake libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libomp-dev |
| - ln -s $(which ccache) /usr/local/sbin/gcc |
| - ln -s $(which ccache) /usr/local/sbin/g++ |
| - end_section install_linux_packages |
| |
| - start_section install_rocksdb_static "Building and installing rocksdb-static" |
| - git clone --branch 5.11.fb https://github.com/facebook/rocksdb.git |
| - cd rocksdb |
| - for f in db/compaction_iteration_stats.h include/rocksdb/utilities/checkpoint.h util/string_util.h; do echo $f; sed -Ei 's|^#pragma once|\0\n#include <cstdint>|' "$f"; done |
| - export PROCS=$(nproc) |
| - make -j $PROCS static_lib DISABLE_WARNING_AS_ERROR=1 WARNING_FLAGS=-w |
| - ccache --show-stats |
| - make install-static DISABLE_WARNING_AS_ERROR=1 WARNING_FLAGS=-w |
| - end_section install_rocksdb_static |
| |
| - start_section install_rocksdb_shared "Building and installing rocksdb-shared" |
| - make -j $PROCS shared_lib DISABLE_WARNING_AS_ERROR=1 WARNING_FLAGS=-w |
| - make install-shared DISABLE_WARNING_AS_ERROR=1 WARNING_FLAGS=-w |
| - ldconfig |
| - cd .. |
| - end_section rocksdb_shared |
| |
| - start_section install_collocatordb "Building and installing collocatordb" |
| - git clone "https://korap.ids-mannheim.de/gerrit/ids-kl/collocatordb" |
| - cd collocatordb |
| - mkdir -p build |
| - cd build |
| - cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache .. |
| - make |
| - ccache --show-stats |
| - make install # && ctest --extra-verbose |
| - ldconfig |
| - end_section install_collocatordb |
| - cd ../.. |
| |
| script: |
| - start_section build_dereko2vec "Building and testing dereko2vec" |
| - pwd |
| - mkdir build |
| - cd build |
| - cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache .. |
| - make |
| - ccache --show-stats |
| - ctest --extra-verbose |
| - end_section build_dereko2vec |
| |
| artifacts: |
| paths: |
| - build/dereko2vec |
| |