Skip to content

add comprehensive AI-INSTRUCTIONS.md document #179

add comprehensive AI-INSTRUCTIONS.md document

add comprehensive AI-INSTRUCTIONS.md document #179

Workflow file for this run

name: Run Tests
on:
push:
branches: [ "**" ]
pull_request:
branches: [ "**" ]
workflow_dispatch:
inputs:
test_ubuntu:
description: 'Test on Ubuntu'
type: boolean
default: true
test_debian:
description: 'Test on Debian'
type: boolean
default: false
test_arch:
description: 'Test on Arch Linux'
type: boolean
default: false
test_alpine:
description: 'Test on Alpine Linux'
type: boolean
default: false
test_void:
description: 'Test on Void Linux'
type: boolean
default: false
test_gentoo:
description: 'Test on Gentoo Linux'
type: boolean
default: false
test_freebsd:
description: 'Test on FreeBSD'
type: boolean
default: false
test_openbsd:
description: 'Test on OpenBSD'
type: boolean
default: false
test_netbsd:
description: 'Test on NetBSD'
type: boolean
default: false
jobs:
ubuntu:
if: github.event_name != 'workflow_dispatch' || inputs.test_ubuntu
name: Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Cache APT packages
uses: actions/cache@v4
with:
path: /var/cache/apt/archives
key: apt-ubuntu-${{ hashFiles('.github/workflows/run-tests.yml') }}
restore-keys: |
apt-ubuntu-
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
ccache \
luajit \
libluajit-5.1-dev \
libjavascriptcoregtk-4.1-dev \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libglib2.0-dev \
lua-check \
lua-luassert \
lua-filesystem \
lua-socket \
git
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ubuntu-ccache
max-size: 500M
- name: Cache build artifacts
uses: actions/cache@v4
with:
path: |
**/*.o
common/tokenize.h
common/tokenize.c
buildopts.h
key: build-ubuntu-${{ hashFiles('**/*.c', '**/*.h', 'Makefile') }}
restore-keys: |
build-ubuntu-
- name: Build
id: build
continue-on-error: true
run: |
export CC="ccache gcc"
export CXX="ccache g++"
make -j1
- name: Test
id: test
continue-on-error: true
if: steps.build.outcome == 'success'
run: xvfb-run -a make -j1 run-tests
- name: Show ccache statistics
if: always()
run: ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "${{ steps.build.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "${{ steps.test.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build.outcome }}" = "success" ] && [ "${{ steps.test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge
path: badge.json
- name: Fail job if build or test failed
if: steps.build.outcome == 'failure' || steps.test.outcome == 'failure'
run: exit 1
freebsd:
if: github.event_name == 'workflow_dispatch' && inputs.test_freebsd
name: FreeBSD
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Build and test on FreeBSD
id: build_test
continue-on-error: true
uses: cross-platform-actions/action@v0.24.0
with:
operating_system: freebsd
version: '14.0'
shell: bash
sync_files: runner-to-vm
run: |
echo "========================================"
echo "Installing dependencies on FreeBSD"
echo "========================================"
sudo pkg install -y \
ccache \
dbus \
gcc \
git \
glib \
gmake \
gtk3 \
libsoup3 \
lua51-luafilesystem \
lua51-luasocket \
lua51 \
luajit \
sqlite3 \
webkit2-gtk_41 \
pkgconf \
xorg-vfbserver
echo ""
echo "========================================"
echo "Installing luassert + luacheck manually"
echo "========================================"
# Install say dependency
git clone --depth 1 https://github.com/Olivine-Labs/say.git /tmp/say || exit 1
sudo mkdir -p /usr/local/share/lua/5.1/say
sudo cp -R /tmp/say/src/say/ /usr/local/share/lua/5.1/say/ || exit 1
# Install luassert
git clone --depth 1 https://github.com/lunarmodules/luassert.git /tmp/luassert || exit 1
sudo mkdir -p /usr/local/share/lua/5.1/luassert
sudo cp -R /tmp/luassert/src/ /usr/local/share/lua/5.1/luassert/ || exit 1
# Install luacheck
git clone --depth 1 https://github.com/mpeterv/luacheck.git /tmp/luacheck || exit 1
sudo mkdir -p /usr/local/share/lua/5.1/luacheck
sudo cp -R /tmp/luacheck/src/luacheck/ /usr/local/share/lua/5.1/luacheck/ || exit 1
# Copy 'luacheck' to a location in your PATH
sudo cp -R /tmp/luacheck/bin/luacheck.lua /usr/local/bin/luacheck
sudo sed -I.bak 's,#!/usr/bin/env lua$,#!/usr/bin/env lua51,' /usr/local/bin/luacheck
sudo chmod +x /usr/local/bin/luacheck
echo ""
echo "========================================"
echo "Setting up ccache"
echo "========================================"
export CC="ccache gcc"
export CXX="ccache g++"
echo ""
echo "========================================"
echo "Building luakit"
echo "========================================"
gmake -j1 || (echo "BUILD_FAILED=true" >> $GITHUB_ENV && exit 1)
echo ""
echo "========================================"
echo "Running tests"
echo "========================================"
gmake -j1 run-tests || (echo "TEST_FAILED=true" >> $GITHUB_ENV && exit 1)
echo ""
echo "========================================"
echo "ccache statistics"
echo "========================================"
ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "$BUILD_FAILED" = "true" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "$TEST_FAILED" = "true" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build_test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge-freebsd
path: badge.json
- name: Fail job if build or test failed
if: steps.build_test.outcome == 'failure'
run: exit 1
openbsd:
if: github.event_name == 'workflow_dispatch' && inputs.test_openbsd
name: OpenBSD
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Build and test on OpenBSD
id: build_test
continue-on-error: true
uses: cross-platform-actions/action@v0.24.0
with:
operating_system: openbsd
version: '7.5'
shell: bash
sync_files: runner-to-vm
run: |
echo "========================================"
echo "Installing dependencies on OpenBSD"
echo "========================================"
sudo pkg_add \
ccache \
git \
glib2 \
gmake \
gtk+3 \
luafs \
luasocket \
luassert \
luacheck \
luajit \
sqlite3 \
webkitgtk41
echo ""
echo "========================================"
echo "Setting up ccache"
echo "========================================"
export CC="ccache clang"
export CXX="ccache clang"
echo ""
echo "========================================"
echo "Building luakit"
echo "========================================"
gmake -j1 || (echo "BUILD_FAILED=true" >> $GITHUB_ENV && exit 1)
echo ""
echo "========================================"
echo "Running tests"
echo "========================================"
gmake -j1 run-tests || (echo "TEST_FAILED=true" >> $GITHUB_ENV && exit 1)
echo ""
echo "========================================"
echo "ccache statistics"
echo "========================================"
ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "$BUILD_FAILED" = "true" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "$TEST_FAILED" = "true" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build_test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge-openbsd
path: badge.json
- name: Fail job if build or test failed
if: steps.build_test.outcome == 'failure'
run: exit 1
netbsd:
if: github.event_name == 'workflow_dispatch' && inputs.test_netbsd
name: NetBSD
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Build and test on NetBSD
id: build_test
continue-on-error: true
uses: cross-platform-actions/action@v0.24.0
with:
operating_system: netbsd
version: '10.0'
shell: bash
sync_files: runner-to-vm
run: |
echo "========================================"
echo "Installing dependencies on NetBSD"
echo "========================================"
sudo pkgin -y install \
ccache \
git \
glib2 \
gmake \
gtk3+ \
lua51-filesystem \
lua51-socket \
LuaJIT2 \
sqlite3 \
webkit-gtk \
pkg-config \
git || (cat /var/db/pkgin/pkg_install-err.log && false)
echo ""
echo "========================================"
echo "Setting up ccache"
echo "========================================"
export CC="ccache gcc"
export CXX="ccache g++"
echo ""
echo "========================================"
echo "Building luakit"
echo "========================================"
gmake -j1 || (echo "BUILD_FAILED=true" >> $GITHUB_ENV && exit 1)
echo ""
echo "========================================"
echo "Running tests"
echo "========================================"
gmake -j1 run-tests || (echo "TEST_FAILED=true" >> $GITHUB_ENV && exit 1)
echo ""
echo "========================================"
echo "ccache statistics"
echo "========================================"
ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "$BUILD_FAILED" = "true" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "$TEST_FAILED" = "true" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build_test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge-netbsd
path: badge.json
- name: Fail job if build or test failed
if: steps.build_test.outcome == 'failure'
run: exit 1
debian:
if: github.event_name == 'workflow_dispatch' && inputs.test_debian
name: Debian Stable
runs-on: ubuntu-latest
container: debian:stable
steps:
- name: Install git
run: |
apt-get update
apt-get install -y git
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Cache APT packages
uses: actions/cache@v4
with:
path: /var/cache/apt/archives
key: apt-debian-${{ hashFiles('.github/workflows/run-tests.yml') }}
restore-keys: |
apt-debian-
- name: Install dependencies
run: |
apt-get update
apt-get install -y \
build-essential \
ccache \
luajit \
libluajit-5.1-dev \
libjavascriptcoregtk-4.1-dev \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libglib2.0-dev \
lua-check \
lua-luassert \
lua-filesystem \
lua-socket \
xvfb \
git
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: debian-ccache
max-size: 500M
- name: Cache build artifacts
uses: actions/cache@v4
with:
path: |
**/*.o
common/tokenize.h
common/tokenize.c
buildopts.h
key: build-debian-${{ hashFiles('**/*.c', '**/*.h', 'Makefile') }}
restore-keys: |
build-debian-
- name: Build
id: build
continue-on-error: true
run: |
export CC="ccache gcc"
export CXX="ccache g++"
make -j1
- name: Test
id: test
continue-on-error: true
if: steps.build.outcome == 'success'
run: make -j1 run-tests
- name: Show ccache statistics
if: always()
run: ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "${{ steps.build.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "${{ steps.test.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build.outcome }}" = "success" ] && [ "${{ steps.test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge-debian
path: badge.json
- name: Fail job if build or test failed
if: steps.build.outcome == 'failure' || steps.test.outcome == 'failure'
run: exit 1
arch:
if: github.event_name == 'workflow_dispatch' && inputs.test_arch
name: Arch Linux
runs-on: ubuntu-latest
container: archlinux:latest
steps:
- name: Install git
run: |
pacman -Syu --noconfirm
pacman -S --noconfirm git
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Cache Pacman packages
uses: actions/cache@v4
with:
path: /var/cache/pacman/pkg
key: pacman-${{ hashFiles('.github/workflows/run-tests.yml') }}
restore-keys: |
pacman-
- name: Install dependencies
run: |
pacman -S --noconfirm \
base-devel \
ccache \
dbus \
git \
gtk3 \
lua51-filesystem \
lua51-socket \
lua51-luassert \
luacheck \
luajit \
sqlite \
webkit2gtk-4.1 \
xorg-server-xvfb
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: arch-ccache
max-size: 500M
- name: Cache build artifacts
uses: actions/cache@v4
with:
path: |
**/*.o
common/tokenize.h
common/tokenize.c
buildopts.h
key: build-arch-${{ hashFiles('**/*.c', '**/*.h', 'Makefile') }}
restore-keys: |
build-arch-
- name: Build
id: build
continue-on-error: true
run: |
export CC="ccache gcc"
export CXX="ccache g++"
make -j1
- name: Test
id: test
continue-on-error: true
if: steps.build.outcome == 'success'
run: make -j1 run-tests
- name: Show ccache statistics
if: always()
run: ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "${{ steps.build.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "${{ steps.test.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build.outcome }}" = "success" ] && [ "${{ steps.test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge-arch
path: badge.json
- name: Fail job if build or test failed
if: steps.build.outcome == 'failure' || steps.test.outcome == 'failure'
run: exit 1
alpine:
if: github.event_name == 'workflow_dispatch' && inputs.test_alpine
name: Alpine Linux
runs-on: ubuntu-latest
container: alpine:latest
steps:
- name: Install git
run: apk add --no-cache git
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Cache APK packages
uses: actions/cache@v4
with:
path: /var/cache/apk
key: apk-${{ hashFiles('.github/workflows/run-tests.yml') }}
restore-keys: |
apk-
- name: Install dependencies
run: |
# Ensure community repository is enabled
echo "https://dl-cdn.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories
apk update
apk add --no-cache \
bash \
build-base \
ccache \
dbus \
git \
glib-dev \
gtk+3.0-dev \
lua5.1-filesystem \
lua5.1-socket \
lua5.1-busted \
luacheck \
luajit-dev \
sqlite-dev \
webkit2gtk-4.1-dev \
xvfb-run
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: alpine-ccache
max-size: 500M
- name: Cache build artifacts
uses: actions/cache@v4
with:
path: |
**/*.o
common/tokenize.h
common/tokenize.c
buildopts.h
key: build-alpine-${{ hashFiles('**/*.c', '**/*.h', 'Makefile') }}
restore-keys: |
build-alpine-
- name: Build
id: build
continue-on-error: true
run: |
export CC="ccache gcc"
export CXX="ccache g++"
make -j1
- name: Test
id: test
continue-on-error: true
if: steps.build.outcome == 'success'
run: xvfb-run -a make -j1 run-tests
- name: Show ccache statistics
if: always()
run: ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "${{ steps.build.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "${{ steps.test.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build.outcome }}" = "success" ] && [ "${{ steps.test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge-alpine
path: badge.json
- name: Fail job if build or test failed
if: steps.build.outcome == 'failure' || steps.test.outcome == 'failure'
run: exit 1
void:
if: github.event_name == 'workflow_dispatch' && inputs.test_void
name: Void Linux
runs-on: ubuntu-latest
container: ghcr.io/void-linux/void-linux:latest-full-x86_64
steps:
- name: Install git
run: xbps-install -Syu xbps && xbps-install -y git
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Update container packages
run: xbps-install -Syu
- name: Cache xbps packages
uses: actions/cache@v4
with:
path: /var/cache/xbps
key: xbps-${{ hashFiles('.github/workflows/run-tests.yml') }}
restore-keys: |
xbps-
- name: Install dependencies
run: |
xbps-install -Sy \
LuaJIT \
LuaJIT-devel \
base-devel \
ccache \
glib-devel \
gtk+3-devel \
libwebkit2gtk41-devel \
lua51-luafilesystem \
lua51-luasocket \
luarocks \
pkg-config \
sqlite-devel \
xorg-server-xvfb
luarocks install luasay
luarocks install luassert
luarocks install luacheck
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: void-ccache
max-size: 500M
- name: Cache luarocks
uses: actions/cache@v4
with:
path: ~/.luarocks
key: luarocks-void-${{ hashFiles('.github/workflows/run-tests.yml') }}
restore-keys: |
luarocks-void-
- name: Cache build artifacts
uses: actions/cache@v4
with:
path: |
**/*.o
common/tokenize.h
common/tokenize.c
buildopts.h
key: build-void-${{ hashFiles('**/*.c', '**/*.h', 'Makefile') }}
restore-keys: |
build-void-
- name: Build
id: build
continue-on-error: true
run: |
export CC="ccache gcc"
export CXX="ccache g++"
make -j1
- name: Test
id: test
continue-on-error: true
if: steps.build.outcome == 'success'
run: make -j1 run-tests
- name: Show ccache statistics
if: always()
run: ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "${{ steps.build.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "${{ steps.test.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build.outcome }}" = "success" ] && [ "${{ steps.test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge-void
path: badge.json
- name: Fail job if build or test failed
if: steps.build.outcome == 'failure' || steps.test.outcome == 'failure'
run: exit 1
gentoo:
if: github.event_name == 'workflow_dispatch' && inputs.test_gentoo
name: Gentoo Linux
runs-on: ubuntu-latest
container: gentoo/stage3:latest
timeout-minutes: 120
steps:
- name: Setup binary packages and install git
run: |
# Enable binary packages
mkdir -p /etc/portage/binrepos.conf /etc/portage/package.use
echo -e "[gentoobinhost]\npriority = 9999\nsync-uri = https://distfiles.gentoo.org/releases/amd64/binpackages/17.1/x86-64/" > /etc/portage/binrepos.conf/gentoobinhost.conf
# Enable X USE flag for webkit-gtk
echo "net-libs/webkit-gtk X" >> /etc/portage/package.use/webkit-gtk
emerge --sync || emerge-webrsync
emerge --getbinpkg --ask=n dev-vcs/git
- name: Checkout code
uses: actions/checkout@v4
- name: Configure git safe directory
run: git config --global --add safe.directory /__w/luakit/luakit
- name: Cache binary packages
uses: actions/cache@v4
with:
path: /var/cache/binpkgs
key: gentoo-binpkgs-${{ hashFiles('.github/workflows/run-tests.yml') }}
restore-keys: |
gentoo-binpkgs-
- name: Cache distfiles
uses: actions/cache@v4
with:
path: /var/cache/distfiles
key: gentoo-distfiles-${{ hashFiles('.github/workflows/run-tests.yml') }}
restore-keys: |
gentoo-distfiles-
- name: Install ccache
run: emerge --update --newuse --deep ccache
- name: Install dependencies
run: |
emerge --getbinpkg --ask=n \
dev-db/sqlite \
dev-lang/luajit \
dev-libs/glib \
dev-lua/luafilesystem \
dev-lua/luasocket \
dev-util/ccache \
net-libs/webkit-gtk:4.1 \
sys-apps/dbus \
x11-base/xorg-server \
x11-libs/gtk+:3
- name: Setup ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: gentoo-ccache
max-size: 500M
- name: Cache build artifacts
uses: actions/cache@v4
with:
path: |
**/*.o
common/tokenize.h
common/tokenize.c
buildopts.h
key: build-gentoo-${{ hashFiles('**/*.c', '**/*.h', 'Makefile') }}
restore-keys: |
build-gentoo-
- name: Build
id: build
continue-on-error: true
run: |
export CC="ccache gcc"
export CXX="ccache g++"
make -j1
- name: Test
id: test
continue-on-error: true
if: steps.build.outcome == 'success'
run: make -j1 run-tests
- name: Show ccache statistics
if: always()
run: ccache -s
- name: Generate badge JSON
if: always()
run: |
if [ "${{ steps.build.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"build","message":"failed","color":"red"}' > badge.json
elif [ "${{ steps.test.outcome }}" = "failure" ]; then
echo '{"schemaVersion":1,"label":"tests","message":"failed","color":"orange"}' > badge.json
elif [ "${{ steps.build.outcome }}" = "success" ] && [ "${{ steps.test.outcome }}" = "success" ]; then
echo '{"schemaVersion":1,"label":"build","message":"passing","color":"green"}' > badge.json
else
echo '{"schemaVersion":1,"label":"build","message":"unknown","color":"lightgrey"}' > badge.json
fi
cat badge.json
- name: Upload badge
if: always()
uses: actions/upload-artifact@v4
with:
name: badge-gentoo
path: badge.json
- name: Fail job if build or test failed
if: steps.build.outcome == 'failure' || steps.test.outcome == 'failure'
run: exit 1