aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/linux-snap.patch44
-rw-r--r--.github/workflows/linux-snap.yml25
2 files changed, 69 insertions, 0 deletions
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: