All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Thomas Huth" <thuth@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Daniel P. Berrangé" <berrange@redhat.com>
Subject: [PATCH 5/7] gitlab: enable ccache with Cirrus CI
Date: Wed,  4 Dec 2024 19:48:05 +0000	[thread overview]
Message-ID: <20241204194807.1472261-6-berrange@redhat.com> (raw)
In-Reply-To: <20241204194807.1472261-1-berrange@redhat.com>

Add rules to configure the use of ccache with Cirrus CI jobs,
and preserve the cache across jobs.

The HomeBrew PATH was already present, but incorrect, while
the FreeBSD PATH was missing.

About 1 GB is enough to get a 99% hit rate on a pristine rebuild
with no code changes. Setting it much higher than this will
trigger ENOSPC problems on the FreeBSD builders due to limited
disk size.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 .gitlab-ci.d/cirrus.yml       | 3 ++-
 .gitlab-ci.d/cirrus/build.yml | 9 +++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml
index 2bd3cb35c9..af20082a01 100644
--- a/.gitlab-ci.d/cirrus.yml
+++ b/.gitlab-ci.d/cirrus.yml
@@ -43,6 +43,7 @@ x64-freebsd-14-build:
     UPDATE_COMMAND: pkg update; pkg upgrade -y
     INSTALL_COMMAND: pkg install -y
     CLEAN_COMMAND: pkg clean -y --all
+    PATH_EXTRA: /usr/local/libexec/ccache
     CONFIGURE_ARGS: --target-list-exclude=arm-softmmu,i386-softmmu,microblaze-softmmu,mips64el-softmmu,mipsel-softmmu,mips-softmmu,ppc-softmmu,sh4eb-softmmu,xtensa-softmmu
     TEST_TARGETS: check
 
@@ -56,7 +57,7 @@ aarch64-macos-build:
     UPDATE_COMMAND: brew update
     INSTALL_COMMAND: brew install
     CLEAN_COMMAND: brew cleanup --prune=all
-    PATH_EXTRA: /opt/homebrew/ccache/libexec:/opt/homebrew/gettext/bin
+    PATH_EXTRA: /opt/homebrew/opt/ccache/libexec:/opt/homebrew/gettext/bin
     PKG_CONFIG_PATH: /opt/homebrew/curl/lib/pkgconfig:/opt/homebrew/ncurses/lib/pkgconfig:/opt/homebrew/readline/lib/pkgconfig
     CONFIGURE_ARGS: --target-list-exclude=arm-softmmu,i386-softmmu,microblazeel-softmmu,mips64-softmmu,mipsel-softmmu,mips-softmmu,ppc-softmmu,sh4-softmmu,xtensaeb-softmmu
     TEST_TARGETS: check-unit check-block check-qapi-schema check-softfloat check-qtest-x86_64
diff --git a/.gitlab-ci.d/cirrus/build.yml b/.gitlab-ci.d/cirrus/build.yml
index d26a2a788c..5c86278bf8 100644
--- a/.gitlab-ci.d/cirrus/build.yml
+++ b/.gitlab-ci.d/cirrus/build.yml
@@ -5,6 +5,7 @@
 
 env:
   CIRRUS_CLONE_DEPTH: 1
+  CCACHE: "@CCACHE@"
   CI_REPOSITORY_URL: "@CI_REPOSITORY_URL@"
   CI_COMMIT_REF_NAME: "@CI_COMMIT_REF_NAME@"
   CI_COMMIT_SHA: "@CI_COMMIT_SHA@"
@@ -27,7 +28,14 @@ build_task:
     - git clone --depth 100 "$CI_REPOSITORY_URL" .
     - git fetch origin "$CI_COMMIT_REF_NAME"
     - git reset --hard "$CI_COMMIT_SHA"
+  obj_cache:
+    folder: ccache
   step_script:
+    - export CCACHE_BASEDIR="$(pwd)"
+    - export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
+    - export CCACHE_MAXSIZE="1000M"
+    - ccache --zero-stats
+    - ccache --show-stats
     - mkdir build
     - cd build
     - ../configure --enable-werror $CONFIGURE_ARGS
@@ -38,6 +46,7 @@ build_task:
         $MAKE -j$(sysctl -n hw.ncpu) $TARGET V=1 ;
       done
     - find . -not -path 'meson-logs/*' -delete
+    - ccache --show-stats
   always:
     build_result_artifacts:
       path: build/meson-logs/*log.txt
-- 
2.46.0



  parent reply	other threads:[~2024-12-04 19:50 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-04 19:48 [PATCH 0/7] RFC: gitlab: enable use of ccache in FreeBSD / macOS Cirrus CI jobs Daniel P. Berrangé
2024-12-04 19:48 ` [PATCH 1/7] gitlab: don't fail cirrus CI jobs when credits are exhausted Daniel P. Berrangé
2024-12-05  8:38   ` Thomas Huth
2024-12-04 19:48 ` [PATCH 2/7] gitlab: use new(ish) cirrus-vars command for creating config Daniel P. Berrangé
2024-12-04 19:48 ` [PATCH 3/7] gitlab: clean packages in cirrus tasks Daniel P. Berrangé
2024-12-05  8:58   ` Thomas Huth
2024-12-05  9:19     ` Daniel P. Berrangé
2024-12-05 10:09       ` Thomas Huth
2024-12-05 11:00         ` Daniel P. Berrangé
2024-12-04 19:48 ` [PATCH 4/7] gitlab: purge build files from cirrus CI jobs Daniel P. Berrangé
2024-12-04 20:29   ` Philippe Mathieu-Daudé
2024-12-05 10:55   ` Thomas Huth
2024-12-05 11:01     ` Daniel P. Berrangé
2024-12-04 19:48 ` Daniel P. Berrangé [this message]
2024-12-05 10:58   ` [PATCH 5/7] gitlab: enable ccache with Cirrus CI Thomas Huth
2024-12-04 19:48 ` [PATCH 6/7] tests: update libvirt-ci submodule for newer ccache Daniel P. Berrangé
2024-12-04 19:48 ` [PATCH 7/7] gitlab: force ccache to validate compiler version Daniel P. Berrangé
2024-12-04 20:30   ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241204194807.1472261-6-berrange@redhat.com \
    --to=berrange@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.