diff --git a/.github/workflows/README.md b/.github/workflows/README.md index d5b857a8..e3a9e7ae 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 31d1dd5f..26ca7ad5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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: |