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

View file

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