blob: 5ea23b77ae5c18ace5e7a0cb264062cb61b02440 [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
Marc Kupietzf2aa92e2026-07-31 14:48:02 +090034 - apt-get update && apt-get -o dir::cache::archives="$APT_CACHE_DIR" -y install ccache cmake librocksdb-dev libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libomp-dev
35 # ccache only makes the build faster, it must never be able to make it fail,
36 # so everything that uses it is guarded and CCACHE_OPTS stays empty without it
37 - if CCACHE=$(command -v ccache); then ln -sf "$CCACHE" /usr/local/sbin/gcc && ln -sf "$CCACHE" /usr/local/sbin/g++ && CCACHE_OPTS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"; else echo "ccache is not available - building without it"; CCACHE_OPTS=""; fi
Marc Kupietz485be1c2022-04-10 14:21:45 +020038 - end_section install_linux_packages
39
Marc Kupietz485be1c2022-04-10 14:21:45 +020040 - start_section install_collocatordb "Building and installing collocatordb"
Marc Kupietzb738ec72022-04-13 12:42:17 +020041 - git clone "https://korap.ids-mannheim.de/gerrit/ids-kl/collocatordb"
Marc Kupietz97ada392022-04-10 14:06:00 +020042 - cd collocatordb
43 - mkdir -p build
44 - cd build
Marc Kupietzf2aa92e2026-07-31 14:48:02 +090045 - cmake $CCACHE_OPTS ..
Marc Kupietz485be1c2022-04-10 14:21:45 +020046 - make
Marc Kupietzf2aa92e2026-07-31 14:48:02 +090047 - command -v ccache > /dev/null && ccache --show-stats || true
Marc Kupietz485be1c2022-04-10 14:21:45 +020048 - make install # && ctest --extra-verbose
Marc Kupietz2a0c25a2022-04-13 12:41:59 +020049 - ldconfig
Marc Kupietz485be1c2022-04-10 14:21:45 +020050 - end_section install_collocatordb
51 - cd ../..
52
Marc Kupietz97ada392022-04-10 14:06:00 +020053 script:
Marc Kupietz2a93f3a2022-04-10 15:11:16 +020054 - start_section build_dereko2vec "Building and testing dereko2vec"
Marc Kupietz485be1c2022-04-10 14:21:45 +020055 - pwd
Marc Kupietz97ada392022-04-10 14:06:00 +020056 - mkdir build
57 - cd build
Marc Kupietzf2aa92e2026-07-31 14:48:02 +090058 - cmake -DSTATIC_DEREKO2VEC=ON $CCACHE_OPTS ..
59 - make || (cmake $CCACHE_OPTS .. && make)
60 - command -v ccache > /dev/null && ccache --show-stats || true
Marc Kupietz2a93f3a2022-04-10 15:11:16 +020061 - ctest --extra-verbose
62 - end_section build_dereko2vec
Marc Kupietz485be1c2022-04-10 14:21:45 +020063
Marc Kupietz97ada392022-04-10 14:06:00 +020064 artifacts:
65 paths:
66 - build/dereko2vec
Marc Kupietz97ada392022-04-10 14:06:00 +020067