Skip to content

Commit

Permalink
Add sccache to all workflows
Browse files Browse the repository at this point in the history
Signed-off-by: Tin Švagelj <[email protected]>
  • Loading branch information
Caellian committed Jan 5, 2025
1 parent b77d801 commit e0cd00e
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 23 deletions.
70 changes: 70 additions & 0 deletions .github/scripts/setup-sccache.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#!/bin/sh

export SCCACHE_VERSION="${SCCACHE_VERSION:=0.9.0}"

export sccache_arch="x86_64"
if [ "$RUNNER_ARCH" = "X86" ]; then
export sccache_arch="i686"
elif [ "$RUNNER_ARCH" = "X64" ]; then
export sccache_arch="x86_64"
elif [ "$RUNNER_ARCH" = "ARM" ]; then
export sccache_arch="armv7"
elif [ "$RUNNER_ARCH" = "ARM64" ]; then
export sccache_arch="aarch64"
fi

install_sccache() {
export sccache_archive="sccache-v$SCCACHE_VERSION-$sccache_arch-$sccache_os"
export sccache_url="https://github.com/mozilla/sccache/releases/download/v$SCCACHE_VERSION/$sccache_archive.tar.gz"

echo "Downloading $sccache_url..."

if ! wget "$sccache_url"; then
echo "Can't download $sccache_url.">2
exit 1
fi
if ! tar -xzf "$sccache_archive.tar.gz"; then
echo "Can't extract $sccache_archive.tar.gz">2
exit 1
fi
chmod +x "$sccache_archive/sccache"
sudo cp "$sccache_archive/sccache" "/bin/sccache"
rm -rf "$sccache_archive.tar.gz"
rm -rf "$sccache_archive"
}

export sccache_os="unknown-linux-musl"
if [ "$RUNNER_OS" = "Linux" ]; then
export sccache_os="unknown-linux-musl"
if [ "$RUNNER_ARCH" = "ARM" ]; then
export sccache_os="unknown-linux-musleabi"
fi
if ! install_sccache; then
echo "Unable to install sccache!" >2
exit 1
fi
elif [ "$RUNNER_OS" = "macOS" ]; then
export sccache_os="apple-darwin"
if ! install_sccache; then
echo "Unable to install sccache!" >2
exit 1
fi
elif [ "$RUNNER_OS" = "Windows" ]; then
export sccache_os="pc-windows-msvc"
if ! install_sccache; then
echo "Unable to install sccache!" >2
exit 1
fi
fi

echo "sccache installed."

# Configure
mkdir $HOME/.sccache
echo "SCCACHE_DIR=$HOME/.sccache" >> $GITHUB_ENV
if [ "$RUNNER_DEBUG" = "1" ]; then
echo "Running with debug output; cached binary artifacts will be ignored to produce a cleaner build"
echo "SCCACHE_RECACHE=true" >> $GITHUB_ENV
fi

echo "sccache configured."
22 changes: 3 additions & 19 deletions .github/workflows/build-and-test-linux.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,22 +73,6 @@ jobs:
ncurses-dev \
ninja-build \
wayland-protocols
- name: Install sccache
working-directory: /home/runner
run: |
curl -s -L "https://github.com/mozilla/sccache/releases/download/v${{ env.SCCACHE_VERSION }}/sccache-v${{ env.SCCACHE_VERSION }}-x86_64-unknown-linux-musl.tar.gz" \
| tar xz -C .
chmod +x "sccache-v${{ env.SCCACHE_VERSION }}-x86_64-unknown-linux-musl/sccache"
sudo cp "sccache-v${{ env.SCCACHE_VERSION }}-x86_64-unknown-linux-musl/sccache" "/bin/sccache"
rm -rf "sccache-v${{ env.SCCACHE_VERSION }}-x86_64-unknown-linux-musl"
mkdir .sccache
echo "SCCACHE_DIR=$PWD/.sccache" >> $GITHUB_ENV
echo "SCCACHE_COMPRESS=true" >> $GITHUB_ENV
echo "SCCACHE_COMPRESSLEVEL=7" >> $GITHUB_ENV
if [ "$RUNNER_DEBUG" = "1" ]; then
echo "Running with debug output; cached binary artifacts will be ignored to produce a cleaner build"
echo "SCCACHE_RECACHE=true" >> $GITHUB_ENV
fi
- name: Install clang and libc++
if: matrix.compiler == 'clang'
run: |
Expand All @@ -104,6 +88,8 @@ jobs:
g++
- name: Checkout
uses: actions/checkout@v4
- name: Install sccache
run: .github/scripts/setup-sccache.sh
- name: Load cached compilation artifacts
id: compiler-cache
uses: actions/cache@v4
Expand All @@ -130,9 +116,7 @@ jobs:
# Reset sccache statistics
sccache --zero-stats
mkdir build
cd build
cmake .. -G Ninja \
cmake . -B build -G Ninja \
-DBUILD_AUDACIOUS=ON \
-DBUILD_HTTP=ON \
-DBUILD_ICAL=ON \
Expand Down
24 changes: 20 additions & 4 deletions .github/workflows/build-and-test-macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ on:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
SCCACHE_VERSION: "0.9.0"

jobs:
build:
env:
Expand Down Expand Up @@ -47,21 +51,33 @@ jobs:
lua \
ninja \
pkg-config \
sccache \
|| true # Ignore errors
- name: Checkout
uses: actions/checkout@v4
- run: mkdir build
- name: Configure sccache
run: .github/scripts/setup-sccache.sh
- name: Load cached compilation artifacts
id: compiler-cache
uses: actions/cache@v4
with:
path: "${{ env.SCCACHE_DIR }}"
key: sccache-${{ matrix.os }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
sccache-${{ matrix.os }}-${{ github.ref }}
- name: Configure with CMake
working-directory: build
run: |
cmake .. -G Ninja \
# Reset sccache statistics
sccache --zero-stats
cmake . -B build -G Ninja \
-DMAINTAINER_MODE=ON \
-DBUILD_WAYLAND=OFF \
-DBUILD_RSS=ON \
-DBUILD_CURL=ON
- name: Compile
run: cmake --build build
- name: Show sccache stats
run: sccache --show-stats
- name: Test
working-directory: build
run: ctest --output-on-failure
19 changes: 19 additions & 0 deletions .github/workflows/publish-appimage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
SCCACHE_VERSION: "0.9.0"

jobs:
build:
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -106,10 +109,26 @@ jobs:
libc++abi-${CLANG_VERSION}-dev
echo "CC=clang-${CLANG_VERSION}" | tee -a $GITHUB_ENV
echo "CXX=clang++-${CLANG_VERSION}" | tee -a $GITHUB_ENV
- name: Install sccache
if: startsWith(github.ref, 'refs/tags/') != true
run: .github/scripts/setup-sccache.sh
- name: Load cached compilation artifacts
if: startsWith(github.ref, 'refs/tags/') != true
id: compiler-cache
uses: actions/cache@v4
with:
path: "${{ env.SCCACHE_DIR }}"
key: sccache-${{ matrix.os }}-${{ matrix.arch }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
sccache-${{ matrix.os }}-${{ matrix.arch }}-${{ github.ref }}
- name: Build AppImage
run: ./appimage/build.sh
env:
RELEASE: "${{ startsWith(github.ref, 'refs/tags/') && 'ON' || 'OFF' }}"
- name: Show sccache stats
if: startsWith(github.ref, 'refs/tags/') != true
run: sccache --show-stats
- run: ./conky-x86_64.AppImage --version # print version
- name: Set CONKY_VERSION
run: echo "CONKY_VERSION=$(./conky-x86_64.AppImage --short-version)" | tee -a $GITHUB_ENV
Expand Down

0 comments on commit e0cd00e

Please sign in to comment.