public inbox for overseers@sourceware.org
 help / color / mirror / Atom feed
From: Ivo Raisr <ivosh@ivosh.net>
To: Joel Brobecker <brobecker@adacore.com>
Cc: Overseers mailing list <overseers@sourceware.org>,
	"Carlos O'Donell" <carlos@systemhalted.org>,
	 Corinna Vinschen <vinschen@redhat.com>,
	Joseph Myers <joseph@codesourcery.com>,
	Mark Wielaard <mark@klomp.org>
Subject: Re: transition git-hooks on sourceware.org to Python 3.x
Date: Wed, 15 Dec 2021 10:30:59 +0100	[thread overview]
Message-ID: <CANXv6=vCEBC9jnYR3dXK4Zac2DOd=zYsL2fnUbyXaGaJCMFTjw@mail.gmail.com> (raw)
In-Reply-To: <YbcQ9jUiVLYvAzpA@wildebeest.org>

Dear,

Thank you for the heads up.
Indeed, I did set up the git-hooks some time ago for the Valgrind
repository.
But I don't remember the exact details; I assume it was a very simple setup.
Is there any action required from my side at this point?

Kind regards,
Ivo Raisr



Il giorno lun 13 dic 2021 alle ore 10:23 Mark Wielaard <mark@klomp.org> ha
scritto:

> Hi,
>
> I added Ivo to the CC who setup the valgrind hooks. If he isn't
> available I'll take care of them.
>
> Cheers,
>
> Mark
>
> On Sun, Dec 12, 2021 at 03:32:47PM +0400, Joel Brobecker via Overseers
> wrote:
> > Hello,
> >
> > The current version of the git-hooks being used on sourceware
> > is a version which uses Python 2.7. I have since then migrated
> > to Python 3, where the minimum version is currently Python 3.8.
> > That version has been running on AdaCore's server for a few weeks,
> > now, so I think it's time to think about transitioning our repos
> > on sourceware.
> >
> > The main improvement, besides the transition away from Python 2.x,
> > comes from Python 3.x itself and the handling of strings vs bytes,
> > so charsets are handled a bit better.
> >
> > The one small difficulty comes from making sure a recent version
> > of Python 3.x gets used. Ideally, we should use the same Python
> > I'm using on sourceware to run the git-hooks testsuite to make sure
> > there aren't any compatibility issues.
> >
> > For this, what I'd like to propose is that we use a set of wrapper
> > scripts which provide the same hooks as the git-hooks, and which
> > only do the following: add the correct Python to the PATH, and
> > then call the real hook script in git-hooks.
> >
> > I've created a small prototype and did some testing with it,
> > it seems to work well. In a nutshell, we have:
> >
> >   <wrappers root>/
> >       - hooks/           <-- directory to use as hooks in Git bare repos
> >       - git-hooks/       <-- clone of
> https://github.com/adacore/git-hooks
> >       - python3-for-git-hooks/  <-- Python 3.x venv to be used by the
> git-hooks
> >
> > To transition a repository to updated hooks, we simply replace
> > the hooks symbolic link to point to <wrappers root>/hooks.
> >
> > My proptotype is at...
> >
> >     /home/gdbadmin/brobecke/py3-git-hooks/git-hooks-wrapper
> >
> > ... for those who are curious and can log onto sourceware.org.
> > There is a README.md file that gives a bit more information
> > (I'll attach to this message as well)
> >
> > If agreed with the approach, I think we'll want to decide where
> > we want this to live. Maybe /sourceware/projects/src-home/?
> > The main issue with this location is that I worry about shared
> > access and in particular maintenance over time. I'd like to be
> > able to make changes there if there is a need to fix something.
> > I'd like also to be able to continue updating the git-hooks version
> > being used as I continue to push fixes and enhancements.
> >
> > I can take care of the git-hooks-wrapper setup once the location
> > is settled.
> >
> > In terms of the projects themselves, I've identified the following
> > repositories as using the git-hooks:
> >
> >   - binutils-gdb.git/hooks
> >   - gcc.git/hooks
> >   - glibc.git/hooks
> >   - newlib-cygwin.git/hooks
> >   - valgrind.git/hooks
> >
> > This is based on searching for repositories on sourcware.org
> > whose hooks dir is a symlink to the git-hooks. Not sure if there are
> > others.
> >
> > I've Cc'ed people I know have asked me about the git-hooks for
> > GCC, glibc and newlib. Not sure about valgrind.
> >
> > What we could do is give the binutils & GDB maintainers a quick
> > heads up and then transition the binutils-gdb repository. If all
> > goes well, I think we can transition the remaining ones.
> >
> > Thoughts?
> >
> > PS: If a project needs to stay on Python 2.7 for the time being,
> >     it is easy to accomodate it with the current scheme. But they
> >     will need to use a dedicated branch, as the latest no longer
> >     supports Python 2.x.
> > --
> > Joel
>
> > Git-Hooks Wrapper
> > =================
> >
> > This repository provices a hooks/ directory which contain the same set of
> > scripts as the AdaCore git-hooks (https://github.com/adacore/git-hooks).
> > Those scripts simply act as wrappers allowing us to set the environment
> > up prior to calling the real git-hooks hooks. In particular, our wrappers
> > allow us to make sure we use a controlled version of Python to run the
> hooks.
> >
> > Wrapper Setup Overview
> > ----------------------
> >
> > The wrappers expect the following structure:
> >
> >     <wrappers root>/
> >         - hooks/           <-- directory to use as hooks in Git bare
> repos
> >         - git-hooks/       <-- clone of
> https://github.com/adacore/git-hooks
> >         - python3-for-git-hooks/  <-- Python 3.x venv to be used by the
> git-hooks
> >
> > The wrappers provides wrapper scripts which will do the following:
> >
> >   - set the environment up to put the python3-for-git-hooks virtual env
> >     in its PATH;
> >
> >   - Call the corresponding hook in git-hooks/hooks/.
> >
> >
> > Git-Hooks Setup
> > ---------------
> >
> > The wrappers expect a clone of the git-hooks to be located at
> > the root of this repository, named git-hooks.
> >
> >
> > Python Setup
> > ------------
> >
> > The wrappers expect a Python 3 Virtual Enviroment (venv) to be set up
> > at the root of this repository, named python3-for-git-hooks.
> >
> > The venv should be set up as follow:
> >
> >    # Create the venv, and activate it...
> >
> >    $ python3 -m venv python3-for-git-hooks
> >    $ . ./python3-for-git-hooks/bin/activate
> >
> >    # Make sure we use the latest version of pip
> >
> >    $ python3 -m pip install pip --upgrade
> >
> >    # Install all dependencies requried by the git-hooks.
> >    #
> >    # Note that the exact list of dependencies may change
> >    # over time. If unsure, run the git-hooks testsuite
> >    # as follow:
> >    #
> >    #      $ cd path/to/git-hooks/testsuite
> >    #      $ ./run-validation-tests
> >    #
> >    # The testsuite will abort with an error if any dependency
> >    # is missing.
> >
> >    $ python3 -m pip install black e3-core flake8 pre-commit pytest
> pytest-cov pytest-xdist
> >
> > Check the git-hooks' README.md file for the required minimum version
> > of Python that must be used.
> >
> > Activating the Git-Hooks Wrapper
> > --------------------------------
> >
> > To use these wrappers in a Git repository, replace the hooks/ directory
> > inside that Git repository by a symbolic link to the hooks/ directory
> > inside the git-hooks-wrapper
>
>

  reply	other threads:[~2021-12-15  9:31 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-12 11:32 Joel Brobecker
2021-12-13  9:23 ` Mark Wielaard
2021-12-15  9:30   ` Ivo Raisr [this message]
2021-12-16  2:16     ` Joel Brobecker
2021-12-13 11:35 ` Corinna Vinschen
2021-12-13 11:47   ` Joel Brobecker
2021-12-13 22:20 ` Joseph Myers
2021-12-14  3:39   ` Joel Brobecker
2021-12-17  2:46 ` Joel Brobecker
2021-12-19  4:45   ` Joel Brobecker
2021-12-20  5:10     ` Joel Brobecker
2022-01-16 10:06     ` Joel Brobecker
2022-01-17 10:02       ` Corinna Vinschen
2022-01-20  5:27         ` Joel Brobecker
2022-01-20 10:04           ` Corinna Vinschen
2022-01-20 13:54             ` Joel Brobecker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CANXv6=vCEBC9jnYR3dXK4Zac2DOd=zYsL2fnUbyXaGaJCMFTjw@mail.gmail.com' \
    --to=ivosh@ivosh.net \
    --cc=brobecker@adacore.com \
    --cc=carlos@systemhalted.org \
    --cc=joseph@codesourcery.com \
    --cc=mark@klomp.org \
    --cc=overseers@sourceware.org \
    --cc=vinschen@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).