From f986f142203cbb2c9442c3618babff6cc92147c2 Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Wed, 8 Dec 2021 19:37:49 +0000 Subject: [PATCH 1/2] ci: Reformat yaml file Includes a formatter script --- .gitlab-ci.yml | 48 ++++++++++++++++++++++++++---------------------- tools/yamlfmt | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 22 deletions(-) create mode 100755 tools/yamlfmt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0a6be58e..73568418 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/tools/yamlfmt b/tools/yamlfmt new file mode 100755 index 00000000..0aef3523 --- /dev/null +++ b/tools/yamlfmt @@ -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) From 7a07f1616d3c9cb0dfe865a777115e8e83aa75e8 Mon Sep 17 00:00:00 2001 From: Dorota Czaplejewicz Date: Wed, 8 Dec 2021 19:42:58 +0000 Subject: [PATCH 2/2] ci: Include pre-build style check --- .gitlab-ci.yml | 12 +++++++++++- debian/control | 1 + doc/hacking.md | 10 ++++++++++ tools/{style-check => style-check_build} | 6 ++++-- tools/style-check_source | 12 ++++++++++++ 5 files changed, 38 insertions(+), 3 deletions(-) rename tools/{style-check => style-check_build} (75%) create mode 100755 tools/style-check_source diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73568418..08a4abb9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -93,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" diff --git a/debian/control b/debian/control index b91f5d99..149dc343 100644 --- a/debian/control +++ b/debian/control @@ -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 diff --git a/doc/hacking.md b/doc/hacking.md index 4ce40ff5..6d3feca2 100644 --- a/doc/hacking.md +++ b/doc/hacking.md @@ -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)) diff --git a/tools/style-check b/tools/style-check_build similarity index 75% rename from tools/style-check rename to tools/style-check_build index 24c6dc81..29ed4167 100755 --- a/tools/style-check +++ b/tools/style-check_build @@ -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 - diff --git a/tools/style-check_source b/tools/style-check_source new file mode 100755 index 00000000..7a0f76ab --- /dev/null +++ b/tools/style-check_source @@ -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