blob: f77d7e4c155de8c4003962c7d078aef5b1ff30c6 [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
Marc Kupietz11df7852026-08-09 14:59:09 +020035 # ccache only makes the build faster, it must never be able to make it
36 # fail, so it is wired in through compiler symlinks only when it is there
37 - if CCACHE=$(command -v ccache); then ln -sf "$CCACHE" /usr/local/sbin/gcc && ln -sf "$CCACHE" /usr/local/sbin/g++; else echo "ccache is not available - building without it"; fi
Marc Kupietz485be1c2022-04-10 14:21:45 +020038 - end_section install_linux_packages
39
Marc Kupietz97ada392022-04-10 14:06:00 +020040 script:
Marc Kupietz11df7852026-08-09 14:59:09 +020041 # Debian ships the static rocksdb in librocksdb-dev, so install.sh builds
42 # no rocksdb here. --static-binary keeps the artifact a completely static
43 # binary. ccache works through the compiler symlinks set up above.
Marc Kupietz2a93f3a2022-04-10 15:11:16 +020044 - start_section build_dereko2vec "Building and testing dereko2vec"
Marc Kupietz11df7852026-08-09 14:59:09 +020045 - scripts/install.sh --skip-deps --static-binary
Marc Kupietzf2aa92e2026-07-31 14:48:02 +090046 - command -v ccache > /dev/null && ccache --show-stats || true
Marc Kupietz2a93f3a2022-04-10 15:11:16 +020047 - end_section build_dereko2vec
Marc Kupietz485be1c2022-04-10 14:21:45 +020048
Marc Kupietz97ada392022-04-10 14:06:00 +020049 artifacts:
50 paths:
51 - build/dereko2vec
Marc Kupietz97ada392022-04-10 14:06:00 +020052