Re: [GRASS-dev] Proposal for using ClangFormat, replacing GNU indent, for C/C++ code formatting
On Mon, Jan 2, 2023 at 7:20 PM Nicklas Larsson wrote: > On 2 Jan 2023, at 13:48, Markus Neteler wrote: >> On Wed, Dec 21, 2022 at 9:25 PM Nicklas Larsson via grass-dev >>> >>> Installing clang-format is perhaps most easily done with: >>> python -m pip install 'clang-format==15.0.6' >>> >>> Formatting may be done with something like (following works on Mac): >>> find -E . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \+ >> >> ... it fails on Linux >> > Try something like (untested): > > find . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \; That seems to work! > or manually with: > clang-format -I > [...] > I am trying to fix the conflicts in > https://github.com/OSGeo/grass/pull/2684 > > Conflicting files: > > include/grass/iostream/mm.h > lib/db/dbmi_base/dbmscap.c > lib/external/ccmath/ccmath.h > lib/gis/spawn.c > lib/gis/user_config.c > lib/iostream/rtimer.cpp > lib/pngdriver/graph_set.c > lib/rst/interp_float/point2d.c > raster/r.terraflow/filldepr.cpp > raster/r.terraflow/flow.cpp > raster/r.terraflow/main.cpp > raster/r.viewshed/statusstructure.cpp > > The reason will be the missing clang-format update which I don't know > how to apply on Linux. > >> Not quite sure what you mean. Probably I was confused and it needs a rebase... > Did you try: > > python -m pip install 'clang-format==15.0.6’ > > But I suspect any version 15 will do, perhaps even v. 14. > > A tip to use the .clang-format file from main for branches without it: ... this I was looking for (sorry for my unclear wish)! > 1. git checkout main > 2. cp .clang-forrmat ../.clang-format > 3. check out branch > 4. clang-format searches upwards in dir hierarchy for next ‘.clang-format’ > file > 5. run clang-format from grass source dir Will try. Thanks, Markus ___ grass-dev mailing list grass-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-dev
Re: [GRASS-dev] Proposal for using ClangFormat, replacing GNU indent, for C/C++ code formatting
I'd suggest you use pre-commit so that clang-format is automatically run on git commit operations like we have done with GDAL. Then it is a no-brainer to do changes. You need to add a .pre-commit-config.yaml at the root of the repository (only the part referencing clang-format at https://github.com/OSGeo/gdal/blob/master/.pre-commit-config.yaml#L30 is relevant for you): https://github.com/OSGeo/gdal/blob/master/.pre-commit-config.yaml Once that file is in place: - "pip install pre-commit" : just once - "pre-commit install": just once per repository Cf https://gdal.org/development/dev_practices.html#commit-hooks Even Le 02/01/2023 à 19:20, Nicklas Larsson via grass-dev a écrit : Markus, On 2 Jan 2023, at 13:48, Markus Neteler wrote: Hi Nicklas, On Wed, Dec 21, 2022 at 9:25 PM Nicklas Larsson via grass-dev wrote: I understand there is agreement on using the .clang-format formatting rules suggested with [1], which I just merged. I have formatted the whole source base with clang-format v.15.0.6, in 7 different PRs [2-8]. I will start merging them tomorrow if there are no objections. I have also filed a PR [9] which adds a CI check for clang-format errors. Thanks for your efforts on the code reformatting! :-) Installing clang-format is perhaps most easily done with: python -m pip install 'clang-format==15.0.6' Formatting may be done with something like (following works on Mac): find -E . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \+ ... it fails on Linux, though find: unknown predicate `-E') I was pretty sure this would deviate from Mac/BSD on Linux systems: Try something like (untested): find . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \; or manually with: clang-format -I Contribution rules must be updated, I will start putting up a draft ASAP. I am trying to fix the conflicts in https://github.com/OSGeo/grass/pull/2684 Conflicting files: include/grass/iostream/mm.h lib/db/dbmi_base/dbmscap.c lib/external/ccmath/ccmath.h lib/gis/spawn.c lib/gis/user_config.c lib/iostream/rtimer.cpp lib/pngdriver/graph_set.c lib/rst/interp_float/point2d.c raster/r.terraflow/filldepr.cpp raster/r.terraflow/flow.cpp raster/r.terraflow/main.cpp raster/r.viewshed/statusstructure.cpp The reason will be the missing clang-format update which I don't know how to apply on Linux. Not quite sure what you mean. Did you try: python -m pip install 'clang-format==15.0.6’ But I suspect any version 15 will do, perhaps even v. 14. A tip to use the .clang-format file from main for branches without it: 1. git checkout main 2. cp .clang-forrmat ../.clang-format 3. check out branch 4. clang-format searches upwards in dir hierarchy for next ‘.clang-format’ file 5. run clang-format from grass source dir ___ grass-dev mailing list grass-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-dev -- http://www.spatialys.com My software is free, but my time generally not. ___ grass-dev mailing list grass-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-dev
Re: [GRASS-dev] Proposal for using ClangFormat, replacing GNU indent, for C/C++ code formatting
Markus, > On 2 Jan 2023, at 13:48, Markus Neteler wrote: > > Hi Nicklas, > > On Wed, Dec 21, 2022 at 9:25 PM Nicklas Larsson via grass-dev > wrote: >> >> I understand there is agreement on using the .clang-format formatting rules >> suggested with [1], which I just merged. >> >> I have formatted the whole source base with clang-format v.15.0.6, in 7 >> different PRs [2-8]. I will start merging them tomorrow if there are no >> objections. >> >> I have also filed a PR [9] which adds a CI check for clang-format errors. > > Thanks for your efforts on the code reformatting! :-) > >> Installing clang-format is perhaps most easily done with: >> python -m pip install 'clang-format==15.0.6' >> >> Formatting may be done with something like (following works on Mac): >> find -E . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \+ > > ... it fails on Linux, though > > find: unknown predicate `-E') I was pretty sure this would deviate from Mac/BSD on Linux systems: Try something like (untested): find . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \; or manually with: clang-format -I > >> Contribution rules must be updated, I will start putting up a draft ASAP. > > I am trying to fix the conflicts in > https://github.com/OSGeo/grass/pull/2684 > > Conflicting files: > > include/grass/iostream/mm.h > lib/db/dbmi_base/dbmscap.c > lib/external/ccmath/ccmath.h > lib/gis/spawn.c > lib/gis/user_config.c > lib/iostream/rtimer.cpp > lib/pngdriver/graph_set.c > lib/rst/interp_float/point2d.c > raster/r.terraflow/filldepr.cpp > raster/r.terraflow/flow.cpp > raster/r.terraflow/main.cpp > raster/r.viewshed/statusstructure.cpp > > The reason will be the missing clang-format update which I don't know > how to apply on Linux. Not quite sure what you mean. Did you try: python -m pip install 'clang-format==15.0.6’ But I suspect any version 15 will do, perhaps even v. 14. A tip to use the .clang-format file from main for branches without it: 1. git checkout main 2. cp .clang-forrmat ../.clang-format 3. check out branch 4. clang-format searches upwards in dir hierarchy for next ‘.clang-format’ file 5. run clang-format from grass source dir ___ grass-dev mailing list grass-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-dev
Re: [GRASS-dev] Proposal for using ClangFormat, replacing GNU indent, for C/C++ code formatting
Hi Nicklas, On Wed, Dec 21, 2022 at 9:25 PM Nicklas Larsson via grass-dev wrote: > > I understand there is agreement on using the .clang-format formatting rules > suggested with [1], which I just merged. > > I have formatted the whole source base with clang-format v.15.0.6, in 7 > different PRs [2-8]. I will start merging them tomorrow if there are no > objections. > > I have also filed a PR [9] which adds a CI check for clang-format errors. Thanks for your efforts on the code reformatting! > Installing clang-format is perhaps most easily done with: > python -m pip install 'clang-format==15.0.6' > > Formatting may be done with something like (following works on Mac): > find -E . -regex '.*\.(cpp|hpp|c|h)' -exec clang-format -i {} \+ ... it fails on Linux, though find: unknown predicate `-E') > Contribution rules must be updated, I will start putting up a draft ASAP. I am trying to fix the conflicts in https://github.com/OSGeo/grass/pull/2684 Conflicting files: include/grass/iostream/mm.h lib/db/dbmi_base/dbmscap.c lib/external/ccmath/ccmath.h lib/gis/spawn.c lib/gis/user_config.c lib/iostream/rtimer.cpp lib/pngdriver/graph_set.c lib/rst/interp_float/point2d.c raster/r.terraflow/filldepr.cpp raster/r.terraflow/flow.cpp raster/r.terraflow/main.cpp raster/r.viewshed/statusstructure.cpp The reason will be the missing clang-format update which I don't know how to apply on Linux. Markus PS: If easy on Mac, feel free to directly push an update to the PR :-) ___ grass-dev mailing list grass-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-dev