mirror of
https://github.com/i3/i3.git
synced 2026-04-01 04:35:22 +00:00
This PR is a pure linting and code cleanup effort with no functional
changes, focusing on improving code quality and consistency.
The bulk of the changes involve:
* Code Formatting: The entire codebase was reformatted after updating
our `clang-format` version.
* Compiler Warnings: Addressed `-Wsuggest-attribute` warnings from GCC
by applying `pure`, `const`, and `format` attributes where appropriate.
This helps the compiler with optimizations and bug detection.
* Code Modernization:
* Variable declarations were moved closer to their first use or into
tighter scopes.
* `memset` calls were replaced with C99 zero-initializers (`= {0}`).
* Redundant `struct` keywords, unnecessary type casts, and some
superfluous `return` statements were removed.
* CI Adjustments: The GitHub Actions workflow was updated to correctly
apply compiler flags for both GCC and Clang.
99 lines
4.1 KiB
YAML
99 lines
4.1 KiB
YAML
name: GitHub Actions
|
|
|
|
on:
|
|
push:
|
|
branches: [ next, master, actions ]
|
|
pull_request:
|
|
branches: [ next ]
|
|
|
|
jobs:
|
|
build:
|
|
name: build and test
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
compiler: [gcc, clang]
|
|
env:
|
|
CC: ${{ matrix.compiler }}
|
|
DOCKER_PASS: ${{ secrets.DOCKER_PASS }}
|
|
DOCKER_EMAIL: ${{ secrets.DOCKER_EMAIL }}
|
|
DOCKER_USER: ${{ secrets.DOCKER_USER }}
|
|
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: git fetch --prune --unshallow
|
|
- name: construct container name
|
|
run: |
|
|
echo "BASENAME=i3wm/travis-base:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base.Dockerfile)" >> $GITHUB_ENV
|
|
echo "BASENAME_UBUNTU=i3wm/travis-base-ubuntu:$(date +'%Y-%m')-$(./travis/ha.sh travis/travis-base-ubuntu.Dockerfile)" >> $GITHUB_ENV
|
|
- name: fetch or build Docker container
|
|
run: |
|
|
docker pull ${{ env.BASENAME }} || ./travis/docker-build-and-push.sh ${{ env.BASENAME }} travis/travis-base.Dockerfile
|
|
- name: fetch or build extra Docker containers
|
|
if: github.ref == 'refs/heads/next' && matrix.compiler == 'gcc'
|
|
run: |
|
|
docker pull ${{ env.BASENAME_UBUNTU }} || ./travis/docker-build-and-push.sh ${{ env.BASENAME_UBUNTU }} travis/travis-base-ubuntu.Dockerfile
|
|
- name: build i3
|
|
run: |
|
|
CFLAGS="-Wformat -Wformat-security -Wall -Wextra -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Werror -fno-common -D_FORTIFY_SOURCE=3"
|
|
if [ "${{ matrix.compiler }}" = "gcc" ]; then
|
|
CFLAGS="$CFLAGS -Wsuggest-attribute=pure -Wsuggest-attribute=const -Wsuggest-attribute=format"
|
|
fi
|
|
export CFLAGS
|
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC -e CFLAGS ${{ env.BASENAME }} /bin/sh -c 'rm -rf build; mkdir -p build && cd build && meson setup .. -Ddocs=true -Dmans=true -Db_sanitize="address,undefined" --buildtype=debugoptimized && ninja -v'
|
|
- name: Upload docs html for manual inspection
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: i3-docs
|
|
path: |
|
|
build/*.html
|
|
if: matrix.compiler == 'gcc'
|
|
- name: check spelling
|
|
run: |
|
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME }} ./travis/check-spelling.pl
|
|
- name: run i3 tests
|
|
run: |
|
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC ${{ env.BASENAME }} ./travis/run-tests.sh
|
|
- name: Archive test logs
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-logs
|
|
path: build/testsuite-*
|
|
if: ${{ failure() }}
|
|
- name: build dist tarball
|
|
run: |
|
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 -e CC ${{ env.BASENAME }} /bin/sh -c 'rm -rf distbuild; mkdir distbuild && cd distbuild && meson setup .. -Ddocs=true -Dmans=true && meson dist --no-tests'
|
|
- name: build Debian packages
|
|
if: github.ref == 'refs/heads/next' && matrix.compiler == 'gcc'
|
|
run: |
|
|
echo "::group::Debian amd64"
|
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME }} ./travis/debian-build.sh deb/debian-amd64/DIST
|
|
echo "::endgroup::"
|
|
echo "::group::Ubuntu amd64"
|
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME_UBUNTU }} ./travis/debian-build.sh deb/ubuntu-amd64/DIST
|
|
echo "::endgroup::"
|
|
- name: build docs
|
|
if: github.ref == 'refs/heads/next' && matrix.compiler == 'gcc'
|
|
run: |
|
|
docker run -v $PWD:/usr/src/i3/ -w /usr/src/i3 ${{ env.BASENAME }} ./travis/docs.sh
|
|
- name: push docs to GitHub pages
|
|
if: github.ref == 'refs/heads/next' && matrix.compiler == 'gcc'
|
|
run: |
|
|
travis/deploy-github-pages.sh
|
|
formatting:
|
|
name: Check formatting
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: check & print release notes
|
|
run: ./release-notes/generator.pl
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get install -y clang-format-20
|
|
- name: Check formatting
|
|
run: clang-format-20 --dry-run --Werror $(git ls-files '*.c' '*.h')
|
|
- name: Verify safe wrapper functions are used
|
|
run: ./travis/check-safe-wrappers.sh
|