mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-05-03 06:46:38 -04:00
Rename build.yml to build-arch.yml and add different checks for each platform
Co-authored-by: squassina <8495707+squassina@users.noreply.github.com>
This commit is contained in:
parent
2c73142890
commit
8de9685457
3 changed files with 60 additions and 20 deletions
43
.github/workflows/README.md
vendored
43
.github/workflows/README.md
vendored
|
|
@ -4,10 +4,10 @@ This directory contains the GitHub Actions workflows for the MangoWC project.
|
|||
|
||||
## Workflows
|
||||
|
||||
### build.yml
|
||||
### build-arch.yml
|
||||
|
||||
**Purpose**: Builds the project on Arch Linux to ensure code changes compile
|
||||
successfully.
|
||||
successfully and code is properly formatted.
|
||||
|
||||
**Triggers**:
|
||||
|
||||
|
|
@ -20,17 +20,18 @@ successfully.
|
|||
- 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`
|
||||
- Workflow file itself: `.github/workflows/build-arch.yml`
|
||||
|
||||
**What it does**:
|
||||
|
||||
1. Runs in Arch Linux container (archlinux:latest)
|
||||
2. Updates system and installs all dependencies via pacman
|
||||
3. Installs wlroots from official Arch repositories
|
||||
4. Installs scenefx from AUR (Arch User Repository)
|
||||
5. Configures the project with meson
|
||||
6. Builds the project with ninja
|
||||
7. Verifies the executables were created
|
||||
2. Checks C/C++ code formatting with clang-format
|
||||
3. Updates system and installs all dependencies via pacman
|
||||
4. Installs wlroots from official Arch repositories
|
||||
5. Installs scenefx from AUR (Arch User Repository)
|
||||
6. Configures the project with meson
|
||||
7. Builds the project with ninja
|
||||
8. Verifies the executables were created
|
||||
|
||||
**Build Strategy**:
|
||||
|
||||
|
|
@ -39,9 +40,15 @@ successfully.
|
|||
- wlroots installed from official Arch repositories
|
||||
- scenefx installed from AUR
|
||||
|
||||
**Code Quality Checks**:
|
||||
|
||||
- Validates C/C++ code formatting with clang-format (LLVM style with tabs)
|
||||
- Fails if code doesn't match the formatting defined in `.clang-format`
|
||||
|
||||
**Dependencies**:
|
||||
|
||||
- Arch Linux container (archlinux:latest)
|
||||
- clang-format for code formatting checks
|
||||
- Meson build system
|
||||
- Ninja build tool
|
||||
- All system packages from pacman (wayland, libinput, wlroots, mesa, etc.)
|
||||
|
|
@ -69,10 +76,11 @@ changes work correctly in the NixOS ecosystem.
|
|||
**What it does**:
|
||||
|
||||
1. Runs on Ubuntu with Nix installed
|
||||
2. Installs Nix with flakes and nix-command experimental features
|
||||
3. Builds the project using `nix build` with the repository's flake.nix
|
||||
4. Verifies that executables (mango and mmsg) are created and executable
|
||||
5. Tests basic executable functionality
|
||||
2. Validates the flake with `nix flake check`
|
||||
3. Checks Nix code formatting with alejandra (the formatter defined in flake.nix)
|
||||
4. Builds the project using `nix build` with the repository's flake.nix
|
||||
5. Verifies that executables (mango and mmsg) are created and executable
|
||||
6. Tests basic executable functionality
|
||||
|
||||
**Build Strategy**:
|
||||
|
||||
|
|
@ -81,6 +89,12 @@ changes work correctly in the NixOS ecosystem.
|
|||
- Leverages the repository's flake.nix configuration
|
||||
- Dependencies from nixpkgs-unstable
|
||||
|
||||
**Code Quality Checks**:
|
||||
|
||||
- Validates flake structure and outputs with `nix flake check`
|
||||
- Checks Nix code formatting with alejandra formatter
|
||||
- Ensures flake.nix and nix/*.nix files are properly formatted
|
||||
|
||||
**Dependencies**:
|
||||
|
||||
- Nix package manager with flakes support
|
||||
|
|
@ -148,6 +162,7 @@ The build workflows ensure that:
|
|||
- All dependencies are properly installed
|
||||
- The project compiles without errors on both Arch Linux and NixOS
|
||||
- Both main executables (`mango` and `mmsg`) are built successfully
|
||||
- Code formatting standards are enforced (clang-format for C/C++, alejandra for Nix)
|
||||
|
||||
The docs workflow ensures that:
|
||||
|
||||
|
|
@ -161,3 +176,5 @@ If a build workflow fails, check:
|
|||
2. wlroots and scenefx versions match requirements in meson.build
|
||||
3. Build configuration in meson.build hasn't changed
|
||||
4. For NixOS builds: flake.nix and nix/default.nix are correctly configured
|
||||
5. For Arch builds: Code is properly formatted (run `./format.sh` to fix)
|
||||
6. For NixOS builds: Nix files are properly formatted (run `nix fmt` to fix)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
name: Build
|
||||
name: Build (Arch Linux)
|
||||
|
||||
on:
|
||||
push:
|
||||
|
|
@ -12,7 +12,7 @@ on:
|
|||
- 'meson_options.txt'
|
||||
- 'flake.nix'
|
||||
- 'protocols/**'
|
||||
- '.github/workflows/build.yml'
|
||||
- '.github/workflows/build-arch.yml'
|
||||
pull_request:
|
||||
branches: [main, master]
|
||||
paths:
|
||||
|
|
@ -24,7 +24,7 @@ on:
|
|||
- 'meson_options.txt'
|
||||
- 'flake.nix'
|
||||
- 'protocols/**'
|
||||
- '.github/workflows/build.yml'
|
||||
- '.github/workflows/build-arch.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
|
@ -39,12 +39,24 @@ jobs:
|
|||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Check C/C++ code formatting
|
||||
run: |
|
||||
# Install clang-format
|
||||
pacman -Syu --noconfirm
|
||||
pacman -S --noconfirm clang
|
||||
|
||||
# Check if code is properly formatted
|
||||
echo "Checking code formatting with clang-format..."
|
||||
clang-format --dry-run --Werror src/*/*.h src/*/*.c src/mango.c mmsg/mmsg.c mmsg/arg.h mmsg/dynarr.h || {
|
||||
echo "❌ Code formatting check failed!"
|
||||
echo "Run './format.sh' to fix formatting issues."
|
||||
exit 1
|
||||
}
|
||||
echo "✅ Code formatting check passed!"
|
||||
|
||||
- name: Update system and install dependencies
|
||||
run: |
|
||||
# Update package database
|
||||
pacman -Syu --noconfirm
|
||||
|
||||
# Install build tools and all dependencies
|
||||
# Install build tools and all dependencies (system already updated in format check)
|
||||
pacman -S --noconfirm \
|
||||
base-devel \
|
||||
git \
|
||||
11
.github/workflows/build-nixos.yml
vendored
11
.github/workflows/build-nixos.yml
vendored
|
|
@ -46,6 +46,17 @@ jobs:
|
|||
extra_nix_config: |
|
||||
experimental-features = nix-command flakes
|
||||
|
||||
- name: Check Nix flake
|
||||
run: |
|
||||
echo "Running nix flake check..."
|
||||
nix flake check --print-build-logs
|
||||
|
||||
- name: Check Nix formatting with alejandra
|
||||
run: |
|
||||
echo "Checking Nix code formatting..."
|
||||
nix fmt -- --check .
|
||||
echo "✅ Nix formatting check passed!"
|
||||
|
||||
- name: Build project with Nix
|
||||
run: |
|
||||
nix build --print-build-logs
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue