maomaowm/.github/workflows/README.md
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

99 lines
3.4 KiB
Markdown

# 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