From 4ecb8ba0cc828defad6f4278fac8998ab48a0b23 Mon Sep 17 00:00:00 2001 From: Michał Sawicz Date: Wed, 6 Jan 2021 18:06:17 +0100 Subject: [snap] enable ccache in Linux Snap workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also adding `push` to triggering events to populate the cache. Signed-off-by: Michał Sawicz --- .github/workflows/linux-snap.patch | 44 ++++++++++++++++++++++++++++++++++++++ .github/workflows/linux-snap.yml | 25 ++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 .github/workflows/linux-snap.patch diff --git a/.github/workflows/linux-snap.patch b/.github/workflows/linux-snap.patch new file mode 100644 index 000000000..67b270006 --- /dev/null +++ b/.github/workflows/linux-snap.patch @@ -0,0 +1,44 @@ +--- a/snap/snapcraft.yaml ++++ b/snap/snapcraft.yaml +@@ -32,6 +32,7 @@ parts: + googlemaps: + source: git://github.com/Subsurface/googlemaps.git + build-packages: ++ - ccache + - wget + override-pull: | + snapcraftctl pull +@@ -75,6 +76,8 @@ parts: + plugin: qmake + options: + - INCLUDEPATH+=QtHeaders ++ - QMAKE_CC=ccache gcc ++ - QMAKE_CXX=ccache g++ + + desktop-qt5: + source: https://github.com/ubuntu/snapcraft-desktop-helpers.git +@@ -105,7 +108,11 @@ parts: + source: . + source-type: git + source-subdir: libdivecomputer ++ configflags: ++ - CC=ccache gcc ++ - CXX=ccache g++ + build-packages: ++ - ccache + - libbluetooth-dev + - libhidapi-dev + - libusb-dev +@@ -127,9 +134,12 @@ parts: + - -DLIBGIT2_DYNAMIC=ON + - -DFTDISUPPORT=ON + - -DLIBDIVECOMPUTER_LIBRARIES=../../../stage/lib/libdivecomputer.so ++ - -DCMAKE_C_COMPILER_LAUNCHER=ccache ++ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + source-type: git + build-packages: + - build-essential ++ - ccache + - libcurl4-gnutls-dev + - libftdi1-dev + - libgit2-dev diff --git a/.github/workflows/linux-snap.yml b/.github/workflows/linux-snap.yml index e1718c55d..325318c0a 100644 --- a/.github/workflows/linux-snap.yml +++ b/.github/workflows/linux-snap.yml @@ -28,11 +28,36 @@ jobs: # Needed for version determination to work fetch-depth: 0 + - name: Set up CCache + id: setup-ccache + run: | + sudo apt-get install ccache + ccache --max-size=2G + sg lxd -c '/snap/bin/lxc profile device add default ccache disk source=${HOME}/.ccache/ path=/root/.ccache' + + # Patch snapcraft.yaml to enable ccache + patch -p1 < .github/workflows/linux-snap.patch + + # Find common base between master and HEAD to use as cache key. + git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules origin master + echo "::set-output name=key::$( git merge-base origin/master ${{ github.sha }} )" + + - name: CCache + uses: actions/cache@v2 + with: + key: ccache-${{ runner.os }}-${{ steps.setup-ccache.outputs.key }} + restore-keys: | + ccache-${{ runner.os }}- + path: ~/.ccache/** + - name: Build run: | # Build the `subsurface` part. sg lxd -c '/snap/bin/snapcraft build --use-lxd subsurface' + - name: Clear CCache stats + run: ccache --show-stats --zero-stats + - name: Build and verify the snap id: build-snap env: -- cgit v1.2.3-70-g09d2