blob: 0b21daa10e0393a8e85487dc84bb0da612d0ad48 [file] [log] [blame]
Marc Kupietz97ada392022-04-10 14:06:00 +02001image: gcc
2
Marc Kupietzf3b1db02023-12-21 13:13:16 +01003variables:
4 # Set `CCACHE_BASEDIR` and `CCACHE_DIR` to point `ccache` towards the cached
5 # path on the gitlab-runner. This enables to cache the output of `ccache`
6 # between various runs.
7 CCACHE_BASEDIR: "${CI_PROJECT_DIR}"
8 CCACHE_DIR: "${CI_PROJECT_DIR}/ccache"
9 # Set `ccache` to `content` to prevent rebuilding of the CI/CD containers to
10 # trigger a recreate of the cache. By using `content` the compiler's `mtime`
11 # is not considered as part of the hash.
12 CCACHE_COMPILERCHECK: "content"
13 # Enable caching for `apt-get`.
14 APT_CACHE_DIR: "${CI_PROJECT_DIR}/apt-cache"
15 # Export `noninteractive` frontend to prevent requesting user input.
16 DEBIAN_FRONTEND: "noninteractive"
17
Marc Kupietz2a93f3a2022-04-10 15:11:16 +020018build-and-test:
Marc Kupietz97ada392022-04-10 14:06:00 +020019 stage: build
Marc Kupietz2a0c25a2022-04-13 12:41:59 +020020 cache:
Marc Kupietzf3b1db02023-12-21 13:13:16 +010021 # Cache is shared between branches, but has a unique cache per job.
22 key: dereko2vec
23 paths:
24 # Note: directories should align with `$APT_CACHE_DIR` and `$CCACHE_DIR`.
25 - apt-cache/
26 - ccache/
27
Marc Kupietz97ada392022-04-10 14:06:00 +020028 before_script:
Marc Kupietz485be1c2022-04-10 14:21:45 +020029 - pwd
30 - source `find .. -name section_helper.sh`
31
32 - start_section install_linux_packages "Installing missing Linux packages"
Marc Kupietzf3b1db02023-12-21 13:13:16 +010033 - mkdir -pv $APT_CACHE_DIR ccache
34 - 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
35 - ln -s $(which ccache) /usr/local/sbin/gcc
36 - ln -s $(which ccache) /usr/local/sbin/g++
Marc Kupietz485be1c2022-04-10 14:21:45 +020037 - end_section install_linux_packages
38
39 - start_section install_rocksdb_static "Building and installing rocksdb-static"
Marc Kupietz6eab2f42023-12-21 11:15:14 +010040 - git clone --branch 5.11.fb https://github.com/facebook/rocksdb.git
41 - cd rocksdb
42 - 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
43 - export PROCS=$(nproc)
Marc Kupietz97ada392022-04-10 14:06:00 +020044 - make -j $PROCS static_lib DISABLE_WARNING_AS_ERROR=1 WARNING_FLAGS=-w
Marc Kupietzf3b1db02023-12-21 13:13:16 +010045 - ccache --show-stats
Marc Kupietz97ada392022-04-10 14:06:00 +020046 - make install-static DISABLE_WARNING_AS_ERROR=1 WARNING_FLAGS=-w
Marc Kupietz485be1c2022-04-10 14:21:45 +020047 - end_section install_rocksdb_static
48
49 - start_section install_rocksdb_shared "Building and installing rocksdb-shared"
Marc Kupietz97ada392022-04-10 14:06:00 +020050 - make -j $PROCS shared_lib DISABLE_WARNING_AS_ERROR=1 WARNING_FLAGS=-w
51 - make install-shared DISABLE_WARNING_AS_ERROR=1 WARNING_FLAGS=-w
Marc Kupietz2a0c25a2022-04-13 12:41:59 +020052 - ldconfig
Marc Kupietz97ada392022-04-10 14:06:00 +020053 - cd ..
Marc Kupietz485be1c2022-04-10 14:21:45 +020054 - end_section rocksdb_shared
55
56 - start_section install_collocatordb "Building and installing collocatordb"
Marc Kupietzb738ec72022-04-13 12:42:17 +020057 - git clone "https://korap.ids-mannheim.de/gerrit/ids-kl/collocatordb"
Marc Kupietz97ada392022-04-10 14:06:00 +020058 - cd collocatordb
59 - mkdir -p build
60 - cd build
Marc Kupietzf3b1db02023-12-21 13:13:16 +010061 - cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache ..
Marc Kupietz485be1c2022-04-10 14:21:45 +020062 - make
Marc Kupietzf3b1db02023-12-21 13:13:16 +010063 - ccache --show-stats
Marc Kupietz485be1c2022-04-10 14:21:45 +020064 - make install # && ctest --extra-verbose
Marc Kupietz2a0c25a2022-04-13 12:41:59 +020065 - ldconfig
Marc Kupietz485be1c2022-04-10 14:21:45 +020066 - end_section install_collocatordb
67 - cd ../..
68
Marc Kupietz97ada392022-04-10 14:06:00 +020069 script:
Marc Kupietz2a93f3a2022-04-10 15:11:16 +020070 - start_section build_dereko2vec "Building and testing dereko2vec"
Marc Kupietz485be1c2022-04-10 14:21:45 +020071 - pwd
Marc Kupietz97ada392022-04-10 14:06:00 +020072 - mkdir build
73 - cd build
Marc Kupietzf3b1db02023-12-21 13:13:16 +010074 - cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache ..
Marc Kupietz97ada392022-04-10 14:06:00 +020075 - make
Marc Kupietzf3b1db02023-12-21 13:13:16 +010076 - ccache --show-stats
Marc Kupietz2a93f3a2022-04-10 15:11:16 +020077 - ctest --extra-verbose
78 - end_section build_dereko2vec
Marc Kupietz485be1c2022-04-10 14:21:45 +020079
Marc Kupietz97ada392022-04-10 14:06:00 +020080 artifacts:
81 paths:
82 - build/dereko2vec
Marc Kupietz97ada392022-04-10 14:06:00 +020083