Merge branch 'style' into 'master'

ci: style enforcement

See merge request World/Phosh/squeekboard!506
This commit is contained in:
Guido Günther
2021-12-09 13:05:32 +00:00
6 changed files with 100 additions and 25 deletions

View File

@ -17,9 +17,9 @@ build_docs:
paths:
- _build
script:
- apt-get -y install python3-pip python3-sphinx
- pip3 install recommonmark
- ./doc/build.sh _build
- apt-get -y install python3-pip python3-sphinx
- pip3 install recommonmark
- ./doc/build.sh _build
except:
variables:
- $PKG_ONLY == "1"
@ -42,33 +42,37 @@ build_deb:
stage: build
artifacts:
paths:
- "*.deb"
- '*.deb'
script:
- rm -f ../*.deb
- apt-get -y build-dep .
- apt-get -y install devscripts
- REV=$(git log -1 --format=%h)
- VER=$(dpkg-parsechangelog -SVersion)
- 'DEBFULLNAME="Librem5 CI" EMAIL="librem5-builds@lists.community.puri.sm" dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"'
- debuild -i -us -uc -b
- cp ../*.deb .
- rm -f ../*.deb
- apt-get -y build-dep .
- apt-get -y install devscripts
- REV=$(git log -1 --format=%h)
- VER=$(dpkg-parsechangelog -SVersion)
- DEBFULLNAME="Librem5 CI"
- EMAIL="librem5-builds@lists.community.puri.sm"
- dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"
- debuild -i -us -uc -b
- cp ../*.deb .
build_deb:arm64:
tags:
- aarch64
- aarch64
stage: build
artifacts:
paths:
- "*.deb"
- '*.deb'
script:
- rm -f ../*.deb
- apt-get -y build-dep .
- apt-get -y install devscripts
- REV=$(git log -1 --format=%h)
- VER=$(dpkg-parsechangelog -SVersion)
- 'DEBFULLNAME="Librem5 CI" EMAIL="librem5-builds@lists.community.puri.sm" dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"'
- debuild -i -us -uc -b
- cp ../*.deb .
- rm -f ../*.deb
- apt-get -y build-dep .
- apt-get -y install devscripts
- REV=$(git log -1 --format=%h)
- VER=$(dpkg-parsechangelog -SVersion)
- DEBFULLNAME="Librem5 CI"
- EMAIL="librem5-builds@lists.community.puri.sm"
- dch -v"$VER+librem5ci$CI_PIPELINE_ID.$REV" "$MSG"
- debuild -i -us -uc -b
- cp ../*.deb .
test_lintian:
stage: test
@ -89,7 +93,17 @@ test:
- apt-get -y build-dep .
- apt-get -y install clang-tidy
- ninja -C _build test
- tools/style-check _build
- tools/style-check_build _build
except:
variables:
- $PKG_ONLY == "1"
test_style:
stage: test
needs: []
script:
- apt-get -y build-dep .
- tools/style-check_source
except:
variables:
- $PKG_ONLY == "1"

1
debian/control vendored
View File

@ -27,6 +27,7 @@ Build-Depends:
libwayland-dev (>= 1.16),
lsb-release,
python3,
python3-ruamel.yaml,
rustc,
wayland-protocols (>= 1.14),
Standards-Version: 4.1.3

View File

@ -120,6 +120,16 @@ User interface modules should:
### Style
Note that some portions, like the .gitlab-ci.yml file have accummulated enough style/whitespace conflicts that an enforced style checker is now applied.
To fix your contributions before submitting a change, use:
```
./tools/style-check_source --apply
```
* * *
Code submitted should roughly match the style of surrounding code. Things that will *not* be accepted are ones that often lead to errors:
- skipping brackets `{}` after every `if()`, `else`, and similar ([SCI CERT C: EXP19-C](https://wiki.sei.cmu.edu/confluence/display/c/EXP19-C.+Use+braces+for+the+body+of+an+if%2C+for%2C+or+while+statement))

View File

@ -1,13 +1,15 @@
#!/bin/sh
# Enforces style check for the C parts of the project.
if [ -z "$1" ]; then
echo "Please pass directory to check."
echo "Please pass build directory to check."
exit 1
fi
cd "$1"
clang-tidy --checks=-clang-diagnostic-missing-braces,readability-braces-around-statements, \
--warnings-as-errors=readability-braces-around-statements \
-extra-arg=-Wno-unknown-warning-option \
../src/*.c ../eek/*.c ../eekboard/*.c

12
tools/style-check_source Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
set -e
# Enforces style check for the project.
THIS=$(realpath $0)
TOOLS=$(dirname $THIS)
cd $TOOLS/..
# The CI file seems to be touched regularly, and causing problems often,
# unlike layout files.
./tools/yamlfmt ./.gitlab-ci.yml $1

36
tools/yamlfmt Executable file
View File

@ -0,0 +1,36 @@
#!/usr/bin/env python3
"""Checks YAML files for correct formatting.
Usage: yamlfmt.py [--apply] file.yaml
"""
import ruamel.yaml
import sys
args = sys.argv[:]
try:
args.remove('--apply')
want_apply = True
except ValueError:
want_apply = False
path = args[1]
with open(path) as f:
contents = f.read()
yml = ruamel.yaml.round_trip_load(contents)
formatted = ruamel.yaml.round_trip_dump(yml, block_seq_indent=2)
well_formatted = formatted == contents
if not well_formatted:
print('The yaml file is not correctly formatted:', path)
if want_apply:
print('Correcting', path)
with open(path, 'w') as f:
f.write(formatted)
else:
print('Please use the following correction:')
print('----------corrected', path)
print(formatted)
print('----------end corrected', path)
sys.exit(1)