Prefer apt packages over building from source when available

Co-authored-by: squassina <8495707+squassina@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-02-18 10:35:52 +00:00
parent e21ae7e013
commit f2b3b1bd73
2 changed files with 55 additions and 12 deletions

View file

@ -20,19 +20,26 @@ This directory contains the GitHub Actions workflows for the MangoWC project.
**What it does**:
1. Installs system dependencies (libinput, libdrm, etc.)
2. Builds wayland 1.23.1 from source (Ubuntu has older 1.22)
3. Builds wlroots 0.19 from source
4. Builds scenefx 0.4.1 from source
2. Installs wayland (tries apt first, builds 1.23.1 from source if needed)
3. Installs wlroots (tries apt first, builds 0.19 from source if needed)
4. Builds scenefx 0.4.1 from source (not available in apt)
5. Configures the project with meson
6. Builds the project with ninja
7. Verifies the executables were created
**Install Strategy**:
- Prefers apt packages when available and version requirements are met
- Falls back to building from source only when necessary
- wayland: requires >= 1.23.1 (Ubuntu apt has 1.22, builds from source)
- wlroots: requires >= 0.19.0 (checks apt version, builds from source if too old)
- scenefx: not in apt repositories (always builds from source)
**Dependencies**:
- Ubuntu latest runner
- Meson build system
- Ninja build tool
- Wayland 1.23.1 (built from source)
- wlroots 0.19
- Wayland >= 1.23.1
- wlroots >= 0.19.0
- scenefx 0.4.1
### docs.yml

View file

@ -37,7 +37,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
@ -61,9 +61,25 @@ jobs:
libxml2-dev \
pkg-config
- name: Build and install wayland 1.23.1
- name: Install wayland (try apt first, build from source if needed)
run: |
# Build wayland 1.23.1 from source since Ubuntu has older version
# Try to install wayland from apt
if sudo apt-get install -y libwayland-dev 2>/dev/null; then
WAYLAND_VERSION=$(pkg-config --modversion wayland-server 2>/dev/null || echo "0.0.0")
echo "Installed wayland version: $WAYLAND_VERSION"
# Check if version meets requirement (>= 1.23.1)
if dpkg --compare-versions "$WAYLAND_VERSION" ge "1.23.1"; then
echo "✅ wayland $WAYLAND_VERSION from apt meets requirements"
exit 0
else
echo "⚠️ wayland $WAYLAND_VERSION from apt is too old, building from source..."
fi
else
echo "⚠️ wayland not available in apt, building from source..."
fi
# Build from source if apt package is unavailable or too old
git clone https://gitlab.freedesktop.org/wayland/wayland.git
cd wayland
git checkout 1.23.1
@ -71,10 +87,27 @@ jobs:
sudo ninja -C build/ install
sudo ldconfig
cd ..
echo "✅ Built wayland 1.23.1 from source"
- name: Install wlroots 0.19
- name: Install wlroots (try apt first, build from source if needed)
run: |
# Install wlroots 0.19 from source since it may not be in apt
# Try to install wlroots from apt
if sudo apt-get install -y libwlroots-dev 2>/dev/null; then
WLROOTS_VERSION=$(pkg-config --modversion wlroots 2>/dev/null || echo "0.0.0")
echo "Installed wlroots version: $WLROOTS_VERSION"
# Check if version meets requirement (>= 0.19.0)
if dpkg --compare-versions "$WLROOTS_VERSION" ge "0.19.0"; then
echo "✅ wlroots $WLROOTS_VERSION from apt meets requirements"
exit 0
else
echo "⚠️ wlroots $WLROOTS_VERSION from apt is too old, building from source..."
fi
else
echo "⚠️ wlroots not available in apt, building from source..."
fi
# Build from source if apt package is unavailable or too old
git clone https://gitlab.freedesktop.org/wlroots/wlroots.git
cd wlroots
git checkout 0.19.0
@ -82,16 +115,19 @@ jobs:
sudo ninja -C build/ install
sudo ldconfig
cd ..
echo "✅ Built wlroots 0.19.0 from source"
- name: Install scenefx 0.4.1
- name: Install scenefx (build from source - not in apt)
run: |
# Install scenefx from source
# scenefx is not available in Ubuntu apt repositories
# Build from source
git clone -b 0.4.1 https://github.com/wlrfx/scenefx.git
cd scenefx
meson setup build/ --prefix=/usr
sudo ninja -C build/ install
sudo ldconfig
cd ..
echo "✅ Built scenefx 0.4.1 from source"
- name: Configure meson
run: |