blob: 0b21daa10e0393a8e85487dc84bb0da612d0ad48 [file] [log] [blame]
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