Revert to building from source and use meson subprojects download

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

View file

@ -20,27 +20,26 @@ This directory contains the GitHub Actions workflows for the MangoWC project.
**What it does**: **What it does**:
1. Installs system dependencies (libinput, libdrm, etc.) 1. Installs system dependencies (libinput, libdrm, etc.)
2. Installs wayland (tries apt first, builds 1.23.1 from source if needed) 2. Builds wayland 1.23.1 from source
3. Installs wlroots (tries apt first, builds 0.19 from source if needed) 3. Builds wlroots 0.19 from source
4. Builds scenefx 0.4.1 from source (not available in apt) 4. Builds scenefx 0.4.1 from source
5. Configures the project with meson 5. Uses `meson subprojects download` to fetch any required subproject dependencies
6. Builds the project with ninja 6. Configures the project with meson
7. Verifies the executables were created 7. Builds the project with ninja
8. Verifies the executables were created
**Install Strategy**: **Build Strategy**:
- Prefers apt packages when available and version requirements are met - All dependencies (wayland, wlroots, scenefx) are built from their source repositories
- Falls back to building from source only when necessary - Uses `meson subprojects download` before each meson setup to fetch required subprojects
- wayland: requires >= 1.23.1 (typically builds from source on Ubuntu 22.04/24.04) - Allows meson wrap mode for automatic subproject handling (no --wrap-mode=nodownload)
- wlroots: requires >= 0.19.0 (checks apt version, builds from source if too old)
- scenefx: not in apt repositories (always builds from source)
**Dependencies**: **Dependencies**:
- Ubuntu latest runner - Ubuntu latest runner
- Meson build system - Meson build system
- Ninja build tool - Ninja build tool
- Wayland >= 1.23.1 - Wayland 1.23.1 (built from source)
- wlroots >= 0.19.0 - wlroots 0.19 (built from source)
- scenefx 0.4.1 - scenefx 0.4.1 (built from source)
### docs.yml ### docs.yml
**Purpose**: Validates markdown documentation for style and formatting consistency. **Purpose**: Validates markdown documentation for style and formatting consistency.
@ -55,10 +54,9 @@ This directory contains the GitHub Actions workflows for the MangoWC project.
- Workflow file itself: `.github/workflows/docs.yml` - Workflow file itself: `.github/workflows/docs.yml`
**What it does**: **What it does**:
- Lints markdown files in the repository using markdownlint-cli2 - Lints all markdown files using markdownlint-cli2
- Checks for common markdown formatting issues - Checks for common markdown formatting issues
- Ensures documentation follows consistent style guidelines - Ensures documentation follows consistent style guidelines
- Excludes dependency directories (wayland, wlroots, scenefx) to only lint repository files
### lock.yml ### lock.yml
**Purpose**: Automatically locks inactive issues and PRs to keep the repository clean. **Purpose**: Automatically locks inactive issues and PRs to keep the repository clean.

View file

@ -37,7 +37,7 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Install system dependencies - name: Install dependencies
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y \ sudo apt-get install -y \
@ -61,84 +61,48 @@ jobs:
libxml2-dev \ libxml2-dev \
pkg-config pkg-config
- name: Install wayland (try apt first, build from source if needed) - name: Build and install wayland 1.23.1
run: | run: |
# Try to install wayland from apt # Build wayland 1.23.1 from source
if sudo apt-get install -y libwayland-dev 2>/dev/null; then
# Check if pkg-config can find wayland-server
if WAYLAND_VERSION=$(pkg-config --modversion wayland-server 2>/dev/null); then
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 "⚠️ pkg-config cannot find wayland-server, 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 git clone https://gitlab.freedesktop.org/wayland/wayland.git
cd wayland cd wayland
git checkout 1.23.1 git checkout 1.23.1
# Download meson subprojects if needed
meson subprojects download || true
meson setup build/ --prefix=/usr -Ddocumentation=false meson setup build/ --prefix=/usr -Ddocumentation=false
sudo ninja -C build/ install sudo ninja -C build/ install
sudo ldconfig sudo ldconfig
cd .. cd ..
echo "✅ Built wayland 1.23.1 from source"
- name: Install wlroots (try apt first, build from source if needed) - name: Install wlroots 0.19
run: | run: |
# Try to install wlroots from apt # Install wlroots 0.19 from source
if sudo apt-get install -y libwlroots-dev 2>/dev/null; then
# Check if pkg-config can find wlroots
if WLROOTS_VERSION=$(pkg-config --modversion wlroots 2>/dev/null); then
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 "⚠️ pkg-config cannot find wlroots, 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 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
meson subprojects download || true
meson setup build/ --prefix=/usr meson setup build/ --prefix=/usr
sudo ninja -C build/ install sudo ninja -C build/ install
sudo ldconfig sudo ldconfig
cd .. cd ..
echo "✅ Built wlroots 0.19.0 from source"
- name: Install scenefx (build from source - not in apt) - name: Install scenefx 0.4.1
run: | run: |
# scenefx is not available in Ubuntu apt repositories # Install scenefx from source
# Build 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
meson subprojects download || true
meson setup build/ --prefix=/usr meson setup build/ --prefix=/usr
sudo ninja -C build/ install sudo ninja -C build/ install
sudo ldconfig sudo ldconfig
cd .. cd ..
echo "✅ Built scenefx 0.4.1 from source"
- name: Configure meson - name: Configure meson
run: | run: |
# Download meson subprojects if needed
meson subprojects download || true
meson setup build/ --prefix=/usr meson setup build/ --prefix=/usr
- name: Build project - name: Build project