Switch CI to Arch Linux container for better package availability

Co-authored-by: squassina <8495707+squassina@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-02-18 13:03:59 +00:00
parent fa51bed55a
commit 6a209101a0
2 changed files with 43 additions and 70 deletions

View file

@ -23,20 +23,20 @@ This directory contains the GitHub Actions workflows for the MangoWC project.
**What it does**:
1. Installs system dependencies (libdrm, libevdev, etc.)
2. Builds libinput 1.27.1 from source
3. Builds wayland 1.23.1 from source
4. Builds wlroots 0.19.0 from source
5. Builds scenefx 0.4.1 from source
6. Uses `meson subprojects download` to fetch any required subproject dependencies
7. Configures the project with meson
8. Builds the project with ninja
9. Verifies the executables were created
1. Runs in Arch Linux container (archlinux:latest)
2. Updates system and installs dependencies via pacman
3. Builds wlroots 0.19.0 from source
4. Builds scenefx 0.4.1 from source
5. Uses `meson subprojects download` to fetch any required subproject
dependencies
6. Configures the project with meson
7. Builds the project with ninja
8. Verifies the executables were created
**Build Strategy**:
- All major dependencies (libinput, wayland, wlroots, scenefx) are built from
their source repositories
- Uses Arch Linux for up-to-date system packages (wayland, libinput, etc.)
- Only builds wlroots and scenefx from source (not available in pacman)
- Uses `meson subprojects download` before each meson setup to fetch required
subprojects
- Allows meson wrap mode for automatic subproject handling
@ -44,11 +44,10 @@ This directory contains the GitHub Actions workflows for the MangoWC project.
**Dependencies**:
- Ubuntu latest runner
- Arch Linux container (archlinux:latest)
- Meson build system
- Ninja build tool
- libinput 1.27.1 (built from source)
- Wayland 1.23.1 (built from source)
- System packages from pacman (wayland, libinput, mesa, etc.)
- wlroots 0.19.0 (built from source)
- scenefx 0.4.1 (built from source)

View file

@ -30,6 +30,8 @@ on:
jobs:
build:
runs-on: ubuntu-latest
container:
image: archlinux:latest
permissions:
contents: read
@ -37,85 +39,57 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
- name: Update system and install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
# Update package database
pacman -Syu --noconfirm
# Install build tools and dependencies
pacman -S --noconfirm \
base-devel \
git \
meson \
ninja-build \
ninja \
wayland \
wayland-protocols \
libxkbcommon-dev \
libpcre2-dev \
libpixman-1-dev \
libdrm-dev \
libxcb1-dev \
libxcb-icccm4-dev \
xwayland \
libinput \
libxkbcommon \
pcre2 \
pixman \
libdrm \
libxcb \
xcb-util-wm \
xorg-xwayland \
hwdata \
libliftoff-dev \
libdisplay-info-dev \
libseat-dev \
libffi-dev \
libexpat1-dev \
libxml2-dev \
libgles2-mesa-dev \
libegl1-mesa-dev \
libgbm-dev \
libevdev-dev \
libmtdev-dev \
libudev-dev \
libsystemd-dev \
libliftoff \
libdisplay-info \
seatd \
mesa \
pkg-config
- name: Build and install libinput 1.27.1
run: |
# Build libinput 1.27.1 from source since Ubuntu has older version
git clone https://gitlab.freedesktop.org/libinput/libinput.git
cd libinput
git checkout 1.27.1
# Download meson subprojects if needed
meson subprojects download || true
meson setup build/ --prefix=/usr
sudo ninja -C build/ install
sudo ldconfig
cd ..
- name: Build and install wayland 1.23.1
run: |
# Build wayland 1.23.1 from source
git clone https://gitlab.freedesktop.org/wayland/wayland.git
cd wayland
git checkout 1.23.1
# Download meson subprojects if needed
meson subprojects download || true
meson setup build/ --prefix=/usr -Ddocumentation=false
sudo ninja -C build/ install
sudo ldconfig
cd ..
- name: Install wlroots 0.19.0
run: |
# Install wlroots 0.19 from source
# Build wlroots 0.19.0 from source
git clone https://gitlab.freedesktop.org/wlroots/wlroots.git
cd wlroots
git checkout 0.19.0
# Download meson subprojects if needed
meson subprojects download || true
meson setup build/ --prefix=/usr
sudo ninja -C build/ install
sudo ldconfig
ninja -C build/ install
ldconfig
cd ..
- name: Install scenefx 0.4.1
run: |
# Install scenefx from source
# Build scenefx from source
git clone -b 0.4.1 https://github.com/wlrfx/scenefx.git
cd scenefx
# Download meson subprojects if needed
meson subprojects download || true
meson setup build/ --prefix=/usr
sudo ninja -C build/ install
sudo ldconfig
ninja -C build/ install
ldconfig
cd ..
- name: Configure meson