Re: [GRASS-dev] Proposal for using ClangFormat, replacing GNU indent, for C/C++ code formatting

2023-01-02 Thread Markus Neteler
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

2023-01-02 Thread Even Rouault
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

2023-01-02 Thread Nicklas Larsson via grass-dev
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

2023-01-02 Thread Markus Neteler
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