-
Notifications
You must be signed in to change notification settings - Fork 159
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
**Issue:** - We've used clang-format 9 since forever, but it's not easy for people to get such an old version anymore. - You really need everyone on the same exact version clang-format, even PATCH matters - It's very hard to get the same version on everyone's machine (Ubuntu 24 has 18, brew on MacOS has 18, but Amazon Linux 2 only has 11, and AL2023 only has 15) **Description of Changes:** - start using latest version of clang-format: 18.1.6 - use [pipx](https://github.com/pypa/pipx) to install and run [clang-format from PyPI](https://pypi.org/project/clang-format). This lets everyone run the same version, regardless of OS - rewrite ~format-check.sh~ as `format-check.py` - now we can run it on Windows - most people on this team know Python better than Bash - add `-i` option to edit files in place - the script runs the specific clang-format version via pipx, so even if you have some other version of clang-format installed, the script will get it right - CI just runs `./format-check.py` instead of using some 3rdparty Github Action
- Loading branch information
Showing
21 changed files
with
106 additions
and
82 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,15 +5,12 @@ on: [push] | |
jobs: | ||
clang-format: | ||
|
||
runs-on: ubuntu-20.04 # latest | ||
runs-on: ubuntu-24.04 # latest | ||
|
||
steps: | ||
- name: Checkout Sources | ||
uses: actions/checkout@v3 | ||
uses: actions/checkout@v4 | ||
|
||
- name: clang-format lint | ||
uses: DoozyX/[email protected] | ||
with: | ||
# List of extensions to check | ||
extensions: c,h,inl | ||
source: 'source include tests verification' | ||
run: | | ||
./format-check.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
#!/usr/bin/env python3 | ||
import argparse | ||
import os | ||
from pathlib import Path | ||
import re | ||
from subprocess import list2cmdline, run | ||
from tempfile import NamedTemporaryFile | ||
|
||
CLANG_FORMAT_VERSION = '18.1.6' | ||
|
||
INCLUDE_REGEX = re.compile( | ||
r'^(include|source|tests|verification)/.*\.(c|h|inl)$') | ||
EXCLUDE_REGEX = re.compile(r'^$') | ||
|
||
arg_parser = argparse.ArgumentParser(description="Check with clang-format") | ||
arg_parser.add_argument('-i', '--inplace-edit', action='store_true', | ||
help="Edit files inplace") | ||
args = arg_parser.parse_args() | ||
|
||
os.chdir(Path(__file__).parent) | ||
|
||
# create file containing list of all files to format | ||
filepaths_file = NamedTemporaryFile(delete=False) | ||
for dirpath, dirnames, filenames in os.walk('.'): | ||
for filename in filenames: | ||
# our regexes expect filepath to use forward slash | ||
filepath = Path(dirpath, filename).as_posix() | ||
if not INCLUDE_REGEX.match(filepath): | ||
continue | ||
if EXCLUDE_REGEX.match(filepath): | ||
continue | ||
|
||
filepaths_file.write(f"{filepath}\n".encode()) | ||
filepaths_file.close() | ||
|
||
# use pipx to run clang-format from PyPI | ||
# this is a simple way to run the same clang-format version regardless of OS | ||
cmd = ['pipx', 'run', f'clang-format=={CLANG_FORMAT_VERSION}', | ||
f'--files={filepaths_file.name}'] | ||
if args.inplace_edit: | ||
cmd += ['-i'] | ||
else: | ||
cmd += ['--Werror', '--dry-run'] | ||
|
||
print(f"{Path.cwd()}$ {list2cmdline(cmd)}") | ||
if run(cmd).returncode: | ||
exit(1) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters