Shorten build time: Move 'doc' generation into a separate job, and run only for Trixie. #41
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build for Linux (Bookworm, libwlroots-0.18) | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
env: | |
INSTALL_PATH: "${HOME}/wlmaker" | |
INSTALL_LIBRARY_PATH: "${HOME}/wlmaker/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)" | |
INSTALL_PKGCONFIG_PATH: "${HOME}/wlmaker/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/pkgconfig/:${HOME}/wlmaker/share/pkgconfig/" | |
jobs: | |
build_matrix: | |
strategy: | |
matrix: | |
compiler: [ "gcc" ] | |
runs-on: ubuntu-latest | |
container: | |
image: debian:bookworm | |
steps: | |
- name: Install package dependencies. | |
run: | | |
apt-get update | |
apt-get install -y \ | |
bison \ | |
clang \ | |
cmake \ | |
doxygen \ | |
flex \ | |
foot \ | |
git \ | |
glslang-dev \ | |
glslang-tools \ | |
gnustep-base-runtime \ | |
graphviz \ | |
libcairo2-dev \ | |
libgbm-dev \ | |
libinput-dev \ | |
libncurses-dev \ | |
libseat-dev \ | |
libudev-dev \ | |
libvulkan-dev \ | |
libwayland-dev \ | |
libxcb-composite0-dev \ | |
libxcb-dri3-dev \ | |
libxcb-ewmh-dev \ | |
libxcb-icccm4-dev \ | |
libxcb-present-dev \ | |
libxcb-render-util0-dev \ | |
libxcb-res0-dev \ | |
libxcb-xinput-dev \ | |
libxkbcommon-dev \ | |
libxml2-dev \ | |
meson \ | |
plantuml \ | |
seatd \ | |
wayland-protocols \ | |
xmlto \ | |
xsltproc \ | |
xwayland | |
- name: Checkout code, including git submodules. | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Configure and build dependencies/. | |
run: | | |
export CC="${{ matrix.compiler }}" | |
export PKG_CONFIG_PATH="${{ env.INSTALL_PKGCONFIG_PATH }}" | |
export LD_LIBRARY_PATH="${{ env.INSTALL_LIBRARY_PATH }}" | |
export PATH="${PATH}:${{ env.INSTALL_PATH }}/bin" | |
cmake -DCMAKE_INSTALL_PREFIX:PATH=${{ env.INSTALL_PATH }} dependencies/ -B dependencies/build/ | |
cmake --build dependencies/build | |
- name: Configure wlmaker through CMake. | |
run: | | |
export CC="${{ matrix.compiler }}" | |
export PKG_CONFIG_PATH="${{ env.INSTALL_PKGCONFIG_PATH }}" | |
export LD_LIBRARY_PATH="${{ env.INSTALL_LIBRARY_PATH }}" | |
export PATH="${PATH}:${{ env.INSTALL_PATH }}/bin" | |
cmake -DCMAKE_INSTALL_PREFIX:PATH=${{ env.INSTALL_PATH }} -Dconfig_DOXYGEN_CRITICAL=ON -B build/ | |
- name: Build wlmaker. | |
run: | | |
export CC="${{ matrix.compiler }}" | |
export LD_LIBRARY_PATH="${{ env.INSTALL_LIBRARY_PATH }}" | |
export PATH="${PATH}:${{ env.INSTALL_PATH }}/bin" | |
cmake --build build/ | |
- name: Build documentation. | |
run: cmake --build build/ --target doc | |
- name: Run all tests. | |
run: | | |
export LD_LIBRARY_PATH="${{ env.INSTALL_LIBRARY_PATH }}" | |
ctest --test-dir build/ --build-run-dir build/ -V |