> On Aug. 14, 2019, 1:04 p.m., Benno Evers wrote:
> > bootstrap
> > Line 55 (original), 55 (patched)
> > <https://reviews.apache.org/r/71205/diff/1/?file=2158248#file2158248line55>
> >
> >     Copying my comment from slack here so the discussion isn't split over 
> > too many places:
> >     
> >     As we discussed privately yesterday, I think installing this in 
> > bootstrap is a bit problematic because that is also part of the source 
> > tarball, used by non-developers to build mesos w/o even having a git 
> > repository. Additionally, I think I'd be not particularly amused if I 
> > cloned a random open-source project and the first thing it does is install 
> > a bunch of stuff in my home directory.
> >     
> >     I'm not sure if it's possible to implement, but imho the ideal workflow 
> > would be something like this:
> >     
> >     ```
> >     $ git commit -m "Foo the bar."
> >     WARNING: Your commit touched a `.cpp` file, but `cpplint` is not 
> > installed on your system. It is highly recommended to install it to avoid 
> > embarrassing mistakes.
> >     
> >     You can also run `pre-commit ????` to automatically install a usable 
> > version of `cpplint` in you home directory.
> >     ```
> 
> Benjamin Bannier wrote:
>     Totally agree on the mix of building and dev setup in `bootstrap` is 
> problematic. Let me break out an `autogen.sh` to be used for setting up a 
> build env, and `boostrap` also setting up a dev env.
>     
>     We already download packages from the internet from `mesos-style.py` when 
> e.g., setting up the virtualenv to run node linters. There is however no 
> caching so one needs to potentially download this again and again after 
> clearing the build dir; with `pre-commit` files are cached in `$HOME/.cache` 
> and even for different linter versions or configs with the lifetime managed 
> explicitly with `pre-commit`. I feel this is a superior, more controllable 
> approach than pulling stuff with weird heuristics (`mesos-style.py` hardcodes 
> a few of these and they tend to perform more work than necessary).
>     
>     The only dependency of the linters now becomes `pre-commit` (which needs 
> to be clearly documented) and potentially some Python interpreters or sim. 
> Linters like e.g., eslint are automatically set up and do not need to be 
> installed by users (in fact we want to control the exact versions of these 
> tools, so `pre-commit` enforcing that is great). `cpplint` is a linter 
> present in the source tree and does not need to be installed.

I added a dummy script for `support/mesos-style.py` to ease the transition. In 
another patch I'll also split installation of dev tools out of `./bootstrap` to 
reduce dependencies non-contributors need to install, and add additional 
documentation.


- Benjamin


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/71205/#review217200
-----------------------------------------------------------


On July 30, 2019, 11:01 p.m., Benjamin Bannier wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/71205/
> -----------------------------------------------------------
> 
> (Updated July 30, 2019, 11:01 p.m.)
> 
> 
> Review request for mesos and Till Toenshoff.
> 
> 
> Bugs: MESOS-9360
>     https://issues.apache.org/jira/browse/MESOS-9360
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This patch switches commit hooks to be orchestrated by the pre-commit
> tool mirroring the previous linters invoked through git commit
> hooks (orchestrated by `support/mesos-style.py` or standalone hooks).
> 
> Using pre-commit removes the burden of maintaining
> `support/mesos-style.py`, making sure that hooks have the expected
> environment (e.g., Python version, Node installed). Additionally,
> upstream provides a number of additional linters which are not hard to
> add to Mesos' hooks.
> 
> 
> Diffs
> -----
> 
>   .pre-commit-config.yaml PRE-CREATION 
>   bootstrap 7be2cc95c7ace55d710315427f38284cc5b2af4c 
> 
> 
> Diff: https://reviews.apache.org/r/71205/diff/2/
> 
> 
> Testing
> -------
> 
> * used successfully for a couple of months
> 
> 
> Thanks,
> 
> Benjamin Bannier
> 
>

Reply via email to