Skip to content

refactor: move XWayland decoration handling into waylib #1983

refactor: move XWayland decoration handling into waylib

refactor: move XWayland decoration handling into waylib #1983

name: Build waylib on Arch Linux (independent)
on:
push:
paths:
- 'waylib/**'
- 'wlroots/**'
- '3rdparty/wlroots/**'
- '.github/workflows/waylib-archlinux-build.yml'
pull_request:
paths:
- 'waylib/**'
- 'wlroots/**'
- '3rdparty/wlroots/**'
- '.github/workflows/waylib-archlinux-build.yml'
jobs:
container:
runs-on: ubuntu-latest
container: archlinux:latest
steps:
- name: Run in container
run: |
cat /etc/pacman.d/mirrorlist
pacman-key --init
pacman --noconfirm --noprogressbar -Syu
- name: Install dependencies
run: |
# Vendored waylib-wlroots deps from Arch wlroots0.19 package metadata
# (do not install system wlroots0.19)
pacman -S --noconfirm --noprogressbar base-devel \
qt6-base qt6-declarative cmake pkgconfig ninja clang make git \
pixman wayland wayland-protocols wlr-protocols \
libxcb libx11 libxkbcommon libdrm libinput seatd \
libdisplay-info libliftoff lcms2 \
mesa libglvnd vulkan-headers vulkan-icd-loader \
glslang hwdata systemd \
xcb-util-errors xcb-util-renderutil xcb-util-wm \
xorg-xwayland
pacman -S --noconfirm --noprogressbar fakeroot meson sudo
- name: Build and Install treeland-protocols
run: |
echo "Building treeland-protocols from source..."
git clone https://github.com/linuxdeepin/treeland-protocols.git --depth 1
cd treeland-protocols
cmake -B build \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build
echo "✅ treeland-protocols built and installed from source"
- uses: actions/checkout@v4
- name: Configure and Build waylib with ci preset
working-directory: waylib
run: |
echo "Working directory:" $PWD
rm -rf build
cmake --preset ci
cmake --build --preset ci
- name: Run unit tests
working-directory: waylib
run: ctest --preset ci
- name: Install waylib to staging directory
working-directory: waylib
run: |
echo "Installing waylib to staging directory..."
mkdir -p /tmp/waylib-install
DESTDIR=/tmp/waylib-install cmake --install build
echo "✅ waylib installed to staging directory"
echo "Installed files:"
find /tmp/waylib-install -type f | head -20
echo "Total files installed: $(find /tmp/waylib-install -type f | wc -l)"
- name: Create waylib installation package
run: |
cd /tmp/waylib-install
# Install zip if not available
pacman -S --noconfirm zip
# Create package info
echo "Creating package info..."
cat > PACKAGE_INFO.txt << EOF
Package: waylib-archlinux-build
Version: $(date +%Y%m%d-%H%M%S)
Architecture: x86_64
Built-on: Arch Linux
Built-with: vendored wlroots 0.19.3
CMake-Config: vendored wlroots 0.19.3 via ../wlroots
Installation Instructions:
1. Extract this package to /
2. Run: sudo ldconfig (if libraries are included)
3. Ensure dependencies are installed on target system
Files included in this package:
EOF
find . -type f | sort >> PACKAGE_INFO.txt
# Create the zip package
zip -r /tmp/waylib-archlinux-$(date +%Y%m%d-%H%M%S).zip .
echo "✅ waylib installation package created"
ls -la /tmp/waylib-archlinux-*.zip
- name: Upload waylib ArchLinux build artifacts
uses: actions/upload-artifact@v4
with:
name: waylib-archlinux-build
path: "/tmp/waylib-archlinux-*.zip"
if-no-files-found: error
retention-days: 30