From 4d8d433eb894a88e5019a010dc68dee0108722d5 Mon Sep 17 00:00:00 2001 From: Ramon Nou Date: Thu, 3 Oct 2024 15:06:01 +0200 Subject: [PATCH 1/3] Add ccache prep before all cmakes --- .gitlab-ci.yml | 21 +++++++++++++++++++++ docker/0.9.4/core/Dockerfile | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c948610b6..25a54515b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,6 +22,7 @@ variables: LIBGKFS_LOG: "all" LIBGKFS_LOG_OUTPUT: "${CI_PROJECT_DIR}/logs/gkfs_client.log" GIT_SUBMODULE_STRATEGY: recursive + CCACHE_DIR: "$CI_PROJECT_DIR/ccache" # base image image: gekkofs/core:0.9.4-dev @@ -55,6 +56,10 @@ gkfs: - sed -i 's/constexpr auto use_mtime = false;/constexpr auto use_mtime = true;/g' "${CI_PROJECT_DIR}/include/config.hpp" - sed -i 's/constexpr auto use_link_cnt = false;/constexpr auto use_link_cnt = true;/g' "${CI_PROJECT_DIR}/include/config.hpp" - sed -i 's/constexpr auto use_blocks = false;/constexpr auto use_blocks = true;/g' "${CI_PROJECT_DIR}/include/config.hpp" + # use ccache + - ccache --zero-stats + - /usr/sbin/update-ccache-symlinks + - export PATH="/usr/lib/ccache:$PATH" - cmake --preset ci-coverage -DCOVERAGE_OUTPUT_DIR=${COVERAGE_PATH} - cmake --build ${BUILD_PATH} -j $(nproc) --target install # reduce artifacts size @@ -108,6 +113,9 @@ gkfs:integration: ## capture coverage information for this test and write it to ## $COVERAGE_PATH/$SUBTEST.info - cd ${CI_PROJECT_DIR} + # use ccache + - /usr/sbin/update-ccache-symlinks + - export PATH="/usr/lib/ccache:$PATH" - cmake --preset ci-coverage -DCOVERAGE_OUTPUT_DIR=${COVERAGE_PATH} -DCOVERAGE_CAPTURE_TRACEFILE=${COVERAGE_PATH}/${SUBTEST}.info @@ -158,6 +166,9 @@ gkfwd:integration: ## capture coverage information for this test and write it to ## $COVERAGE_PATH/$SUBTEST.info - cd ${CI_PROJECT_DIR} + # use ccache + - /usr/sbin/update-ccache-symlinks + - export PATH="/usr/lib/ccache:$PATH" - cmake --preset ci-coverage -DCOVERAGE_OUTPUT_DIR=${COVERAGE_PATH} -DCOVERAGE_CAPTURE_TRACEFILE=${COVERAGE_PATH}/${SUBTEST}.info @@ -202,6 +213,9 @@ gkfs:unit: ## capture coverage information for this test and write it to ## $COVERAGE_PATH/unit.info - cd ${CI_PROJECT_DIR} + # use ccache + - /usr/sbin/update-ccache-symlinks + - export PATH="/usr/lib/ccache:$PATH" - cmake --preset ci-coverage -DCOVERAGE_OUTPUT_DIR=${COVERAGE_PATH} -DCOVERAGE_CAPTURE_TRACEFILE=${COVERAGE_PATH}/unit.info @@ -240,6 +254,9 @@ documentation: when: always script: + # use ccache + - /usr/sbin/update-ccache-symlinks + - export PATH="/usr/lib/ccache:$PATH" - cmake --preset ci-docs - cmake --build ${BUILD_PATH} --target docs artifacts: @@ -286,6 +303,10 @@ coverage: # 'gkfs:unit' ] needs: [ 'coverage:baseline', 'gkfs:integration', 'gkfs:unit', 'gkfwd:integration'] script: + # use ccache + - ccache --zero-stats + - /usr/sbin/update-ccache-symlinks + - export PATH="/usr/lib/ccache:$PATH" - cd ${CI_PROJECT_DIR} - cmake --preset ci-coverage diff --git a/docker/0.9.4/core/Dockerfile b/docker/0.9.4/core/Dockerfile index a55434924..ced6c14a3 100644 --- a/docker/0.9.4/core/Dockerfile +++ b/docker/0.9.4/core/Dockerfile @@ -28,7 +28,7 @@ RUN apt-get update && \ libcapstone-dev \ # GekkoFS dependencies libboost-program-options-dev \ - uuid-dev && \ + uuid-dev ccache && \ # install cmake 3.14+ since it's needed for some dependencies curl -OL https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-Linux-x86_64.sh && \ chmod u+x ./cmake-3.25.2-Linux-x86_64.sh && \ -- GitLab From 026e6922187114b19a98aa430c9501c5a5883657 Mon Sep 17 00:00:00 2001 From: Ramon Nou Date: Thu, 3 Oct 2024 15:14:23 +0200 Subject: [PATCH 2/3] Add ccache path to save in ci cache --- .gitlab-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 25a54515b..3204e4e17 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,6 +23,9 @@ variables: LIBGKFS_LOG_OUTPUT: "${CI_PROJECT_DIR}/logs/gkfs_client.log" GIT_SUBMODULE_STRATEGY: recursive CCACHE_DIR: "$CI_PROJECT_DIR/ccache" +cache: + paths: + - $CCACHE_DIR # base image image: gekkofs/core:0.9.4-dev @@ -62,6 +65,7 @@ gkfs: - export PATH="/usr/lib/ccache:$PATH" - cmake --preset ci-coverage -DCOVERAGE_OUTPUT_DIR=${COVERAGE_PATH} - cmake --build ${BUILD_PATH} -j $(nproc) --target install + - ccache --show-stats # reduce artifacts size - ${CI_SCRIPTS_DIR}/trim_build_artifacts.sh ${BUILD_PATH} artifacts: -- GitLab From 9b76c3d86492dace07db155a7a3a7d4e9be68b98 Mon Sep 17 00:00:00 2001 From: Ramon Nou Date: Thu, 3 Oct 2024 15:39:49 +0200 Subject: [PATCH 3/3] enable ccache for the compilation phase only. --- .gitlab-ci.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3204e4e17..cdaa7cd9c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,9 +23,7 @@ variables: LIBGKFS_LOG_OUTPUT: "${CI_PROJECT_DIR}/logs/gkfs_client.log" GIT_SUBMODULE_STRATEGY: recursive CCACHE_DIR: "$CI_PROJECT_DIR/ccache" -cache: - paths: - - $CCACHE_DIR + # base image image: gekkofs/core:0.9.4-dev @@ -73,6 +71,10 @@ gkfs: - ${BUILD_PATH} - ${INSTALL_PATH} expire_in: 1 week + cache: + key: ccache-gekko + paths: + - $CCACHE_DIR ################################################################################ ## Testing @@ -283,6 +285,10 @@ coverage:baseline: script: ## capture initial coverage information to establish a baseline ## and write it to $COVERAGE_PATH/zerocount.info + # use ccache + - ccache --zero-stats + - /usr/sbin/update-ccache-symlinks + - export PATH="/usr/lib/ccache:$PATH" - cd ${CI_PROJECT_DIR} - cmake --preset ci-coverage -DCOVERAGE_OUTPUT_DIR=${COVERAGE_PATH} -- GitLab