| Marc Kupietz | 97ada39 | 2022-04-10 14:06:00 +0200 | [diff] [blame] | 1 | image: gcc |
| 2 | |
| Marc Kupietz | f3b1db0 | 2023-12-21 13:13:16 +0100 | [diff] [blame] | 3 | variables: |
| 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 Kupietz | 2a93f3a | 2022-04-10 15:11:16 +0200 | [diff] [blame] | 18 | build-and-test: |
| Marc Kupietz | 97ada39 | 2022-04-10 14:06:00 +0200 | [diff] [blame] | 19 | stage: build |
| Marc Kupietz | 2a0c25a | 2022-04-13 12:41:59 +0200 | [diff] [blame] | 20 | cache: |
| Marc Kupietz | f3b1db0 | 2023-12-21 13:13:16 +0100 | [diff] [blame] | 21 | # 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 Kupietz | 97ada39 | 2022-04-10 14:06:00 +0200 | [diff] [blame] | 28 | before_script: |
| Marc Kupietz | 485be1c | 2022-04-10 14:21:45 +0200 | [diff] [blame] | 29 | - pwd |
| 30 | - source `find .. -name section_helper.sh` |
| 31 | |
| 32 | - start_section install_linux_packages "Installing missing Linux packages" |
| Marc Kupietz | f3b1db0 | 2023-12-21 13:13:16 +0100 | [diff] [blame] | 33 | - mkdir -pv $APT_CACHE_DIR ccache |
| Marc Kupietz | f2aa92e | 2026-07-31 14:48:02 +0900 | [diff] [blame] | 34 | - 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 Kupietz | 485be1c | 2022-04-10 14:21:45 +0200 | [diff] [blame] | 38 | - end_section install_linux_packages |
| 39 | |
| Marc Kupietz | 485be1c | 2022-04-10 14:21:45 +0200 | [diff] [blame] | 40 | - start_section install_collocatordb "Building and installing collocatordb" |
| Marc Kupietz | b738ec7 | 2022-04-13 12:42:17 +0200 | [diff] [blame] | 41 | - git clone "https://korap.ids-mannheim.de/gerrit/ids-kl/collocatordb" |
| Marc Kupietz | 97ada39 | 2022-04-10 14:06:00 +0200 | [diff] [blame] | 42 | - cd collocatordb |
| 43 | - mkdir -p build |
| 44 | - cd build |
| Marc Kupietz | f2aa92e | 2026-07-31 14:48:02 +0900 | [diff] [blame] | 45 | - cmake $CCACHE_OPTS .. |
| Marc Kupietz | 485be1c | 2022-04-10 14:21:45 +0200 | [diff] [blame] | 46 | - make |
| Marc Kupietz | f2aa92e | 2026-07-31 14:48:02 +0900 | [diff] [blame] | 47 | - command -v ccache > /dev/null && ccache --show-stats || true |
| Marc Kupietz | 485be1c | 2022-04-10 14:21:45 +0200 | [diff] [blame] | 48 | - make install # && ctest --extra-verbose |
| Marc Kupietz | 2a0c25a | 2022-04-13 12:41:59 +0200 | [diff] [blame] | 49 | - ldconfig |
| Marc Kupietz | 485be1c | 2022-04-10 14:21:45 +0200 | [diff] [blame] | 50 | - end_section install_collocatordb |
| 51 | - cd ../.. |
| 52 | |
| Marc Kupietz | 97ada39 | 2022-04-10 14:06:00 +0200 | [diff] [blame] | 53 | script: |
| Marc Kupietz | 2a93f3a | 2022-04-10 15:11:16 +0200 | [diff] [blame] | 54 | - start_section build_dereko2vec "Building and testing dereko2vec" |
| Marc Kupietz | 485be1c | 2022-04-10 14:21:45 +0200 | [diff] [blame] | 55 | - pwd |
| Marc Kupietz | 97ada39 | 2022-04-10 14:06:00 +0200 | [diff] [blame] | 56 | - mkdir build |
| 57 | - cd build |
| Marc Kupietz | f2aa92e | 2026-07-31 14:48:02 +0900 | [diff] [blame] | 58 | - cmake -DSTATIC_DEREKO2VEC=ON $CCACHE_OPTS .. |
| 59 | - make || (cmake $CCACHE_OPTS .. && make) |
| 60 | - command -v ccache > /dev/null && ccache --show-stats || true |
| Marc Kupietz | 2a93f3a | 2022-04-10 15:11:16 +0200 | [diff] [blame] | 61 | - ctest --extra-verbose |
| 62 | - end_section build_dereko2vec |
| Marc Kupietz | 485be1c | 2022-04-10 14:21:45 +0200 | [diff] [blame] | 63 | |
| Marc Kupietz | 97ada39 | 2022-04-10 14:06:00 +0200 | [diff] [blame] | 64 | artifacts: |
| 65 | paths: |
| 66 | - build/dereko2vec |
| Marc Kupietz | 97ada39 | 2022-04-10 14:06:00 +0200 | [diff] [blame] | 67 | |