maomaowm/.github/workflows
copilot-swe-agent[bot] d2ae6c60ae Revert to building from source and use meson subprojects download
Co-authored-by: squassina <8495707+squassina@users.noreply.github.com>
2026-02-18 10:47:52 +00:00
..
build.yml Revert to building from source and use meson subprojects download 2026-02-18 10:47:52 +00:00
docs.yml Restrict markdown linter to repository files only 2026-02-18 10:43:31 +00:00
lock.yml github: add workflow action 2025-06-18 07:44:39 +08:00
README.md Revert to building from source and use meson subprojects download 2026-02-18 10:47:52 +00:00
stale.yml update github workflow 2025-06-20 11:07:12 +08:00

GitHub Actions Workflows

This directory contains the GitHub Actions workflows for the MangoWC project.

Workflows

build.yml

Purpose: Builds the project to ensure code changes compile successfully.

Triggers:

  • Push to main or master branch (only when code files change)
  • Pull requests to main or master branch (only when code files change)
  • Manual dispatch (workflow_dispatch)

Path filters (only runs when these change):

  • Source files: **.c, **.h, **.cpp, **.scm
  • Build files: meson.build, meson_options.txt, flake.nix
  • Protocol definitions: protocols/**
  • Workflow file itself: .github/workflows/build.yml

What it does:

  1. Installs system dependencies (libinput, libdrm, etc.)
  2. Builds wayland 1.23.1 from source
  3. Builds wlroots 0.19 from source
  4. Builds scenefx 0.4.1 from source
  5. Uses meson subprojects download to fetch any required subproject dependencies
  6. Configures the project with meson
  7. Builds the project with ninja
  8. Verifies the executables were created

Build Strategy:

  • All dependencies (wayland, wlroots, scenefx) are built from their source repositories
  • Uses meson subprojects download before each meson setup to fetch required subprojects
  • Allows meson wrap mode for automatic subproject handling (no --wrap-mode=nodownload)

Dependencies:

  • Ubuntu latest runner
  • Meson build system
  • Ninja build tool
  • Wayland 1.23.1 (built from source)
  • wlroots 0.19 (built from source)
  • scenefx 0.4.1 (built from source)

docs.yml

Purpose: Validates markdown documentation for style and formatting consistency.

Triggers:

  • Push to main or master branch (only when markdown files change)
  • Pull requests to main or master branch (only when markdown files change)
  • Manual dispatch (workflow_dispatch)

Path filters (only runs when these change):

  • Markdown files: **.md
  • Workflow file itself: .github/workflows/docs.yml

What it does:

  • Lints all markdown files using markdownlint-cli2
  • Checks for common markdown formatting issues
  • Ensures documentation follows consistent style guidelines

lock.yml

Purpose: Automatically locks inactive issues and PRs to keep the repository clean.

Triggers:

  • Scheduled daily at 12:30 UTC
  • Manual dispatch

What it does:

  • Locks issues, PRs, and discussions that have been closed for 30 days
  • Adds a comment explaining why the thread was locked

stale.yml

Purpose: Automatically closes issues that have been manually marked as stale.

Triggers:

  • Scheduled daily at 12:30 UTC

What it does:

  • Closes issues marked with the "stale" label after 7 days of inactivity
  • Adds "automatic-closing" label when closing
  • Does not automatically mark issues as stale (only processes manually marked ones)

Development Notes

The build workflow ensures that:

  • Only runs when actual code or build configuration changes
  • All dependencies are properly installed
  • The project compiles without errors
  • Both main executables (mango and mmsg) are built successfully

The docs workflow ensures that:

  • Only runs when markdown documentation changes
  • Documentation follows consistent formatting
  • Markdown files are well-formed and free of common issues

If the build workflow fails, check:

  1. Dependencies are up to date in the workflow file
  2. wlroots and scenefx versions match requirements in meson.build
  3. Build configuration in meson.build hasn't changed