Documentation: changes.rst: add entry for git

Message ID 20230803090711.2261876-1-linux@rasmusvillemoes.dk
State New
Headers
Series Documentation: changes.rst: add entry for git |

Commit Message

Rasmus Villemoes Aug. 3, 2023, 9:07 a.m. UTC
  git is obviously used for development, directly and also
indirectly (via checkpatch, get_maintainer and other helper
scripts). But it is also invoked during the build to produce the
`uname -r` string.

It's useful to have some minimal git version one can expect people to
use. For now, set a somewhat conservative minimum of 1.8.0, which is
already more then ten years old.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
 Documentation/process/changes.rst | 8 ++++++++
 1 file changed, 8 insertions(+)
  

Comments

Greg KH Aug. 3, 2023, 10:19 a.m. UTC | #1
On Thu, Aug 03, 2023 at 11:07:10AM +0200, Rasmus Villemoes wrote:
> git is obviously used for development, directly and also
> indirectly (via checkpatch, get_maintainer and other helper
> scripts). But it is also invoked during the build to produce the
> `uname -r` string.
> 
> It's useful to have some minimal git version one can expect people to
> use. For now, set a somewhat conservative minimum of 1.8.0, which is
> already more then ten years old.
> 
> Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> ---
>  Documentation/process/changes.rst | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rst
> index 5561dae94f85..a82c619f4bb2 100644
> --- a/Documentation/process/changes.rst
> +++ b/Documentation/process/changes.rst
> @@ -62,6 +62,7 @@ Sphinx\ [#f1]_         1.7              sphinx-build --version
>  cpio                   any              cpio --version
>  GNU tar                1.28             tar --version
>  gtags (optional)       6.6.5            gtags --version
> +git                    1.8.0            git --version
>  ====================== ===============  ========================================
>  
>  .. [#f1] Sphinx is needed only to build the Kernel documentation
> @@ -189,6 +190,13 @@ The kernel build requires GNU GLOBAL version 6.6.5 or later to generate
>  tag files through ``make gtags``.  This is due to its use of the gtags
>  ``-C (--directory)`` flag.
>  
> +git
> +---
> +
> +When building with CONFIG_LOCALVERSION_AUTO=y, the build system uses
> +git to produce a version string of the form
> +6.4.6-00128-gd78b7f406397, which will be shown e.g. by running `uname -r`.

Isn't this optional?  If git is not installed it just will not use git
to determine the local version.

So you should put "(optional)" above on the list of tools.

And also, don't pick a specific version like this unless it is that way
for a reason.  Why not pick a newer one?  Or the last one that the local
version script can handle properly?

thanks,

greg k-h
  
Masahiro Yamada Aug. 4, 2023, 9:41 a.m. UTC | #2
On Thu, Aug 3, 2023 at 7:19 PM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Thu, Aug 03, 2023 at 11:07:10AM +0200, Rasmus Villemoes wrote:
> > git is obviously used for development, directly and also
> > indirectly (via checkpatch, get_maintainer and other helper
> > scripts). But it is also invoked during the build to produce the
> > `uname -r` string.
> >
> > It's useful to have some minimal git version one can expect people to
> > use. For now, set a somewhat conservative minimum of 1.8.0, which is
> > already more then ten years old.
> >
> > Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> > ---
> >  Documentation/process/changes.rst | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rst
> > index 5561dae94f85..a82c619f4bb2 100644
> > --- a/Documentation/process/changes.rst
> > +++ b/Documentation/process/changes.rst
> > @@ -62,6 +62,7 @@ Sphinx\ [#f1]_         1.7              sphinx-build --version
> >  cpio                   any              cpio --version
> >  GNU tar                1.28             tar --version
> >  gtags (optional)       6.6.5            gtags --version
> > +git                    1.8.0            git --version
> >  ====================== ===============  ========================================
> >
> >  .. [#f1] Sphinx is needed only to build the Kernel documentation
> > @@ -189,6 +190,13 @@ The kernel build requires GNU GLOBAL version 6.6.5 or later to generate
> >  tag files through ``make gtags``.  This is due to its use of the gtags
> >  ``-C (--directory)`` flag.
> >
> > +git
> > +---
> > +
> > +When building with CONFIG_LOCALVERSION_AUTO=y, the build system uses
> > +git to produce a version string of the form
> > +6.4.6-00128-gd78b7f406397, which will be shown e.g. by running `uname -r`.
>
> Isn't this optional?  If git is not installed it just will not use git
> to determine the local version.

Right.
Without git, the suffix "-00128-gd78b7f406397" is not
appended, but you can build the kernel.


>
> So you should put "(optional)" above on the list of tools.
>
> And also, don't pick a specific version like this unless it is that way
> for a reason.  Why not pick a newer one?  Or the last one that the local
> version script can handle properly?



CentOS 7 (plans to retire in 2024) unfortunately
uses a ten-year-old git version.

In CentOS 7,

$ git --version
git version 1.8.3.1



Tagger: Junio C Hamano <gitster@pobox.com>
Date:   Mon Jun 10 12:34:56 2013 -0700

Git 1.8.3.1





If we are allowed to abandon conservative distros,
I prefer git >= 2.14.0

That supports 'git status --no-optional-locks'
  
Greg KH Aug. 4, 2023, 10:17 a.m. UTC | #3
On Fri, Aug 04, 2023 at 06:41:54PM +0900, Masahiro Yamada wrote:
> On Thu, Aug 3, 2023 at 7:19 PM Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > On Thu, Aug 03, 2023 at 11:07:10AM +0200, Rasmus Villemoes wrote:
> > > git is obviously used for development, directly and also
> > > indirectly (via checkpatch, get_maintainer and other helper
> > > scripts). But it is also invoked during the build to produce the
> > > `uname -r` string.
> > >
> > > It's useful to have some minimal git version one can expect people to
> > > use. For now, set a somewhat conservative minimum of 1.8.0, which is
> > > already more then ten years old.
> > >
> > > Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> > > ---
> > >  Documentation/process/changes.rst | 8 ++++++++
> > >  1 file changed, 8 insertions(+)
> > >
> > > diff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rst
> > > index 5561dae94f85..a82c619f4bb2 100644
> > > --- a/Documentation/process/changes.rst
> > > +++ b/Documentation/process/changes.rst
> > > @@ -62,6 +62,7 @@ Sphinx\ [#f1]_         1.7              sphinx-build --version
> > >  cpio                   any              cpio --version
> > >  GNU tar                1.28             tar --version
> > >  gtags (optional)       6.6.5            gtags --version
> > > +git                    1.8.0            git --version
> > >  ====================== ===============  ========================================
> > >
> > >  .. [#f1] Sphinx is needed only to build the Kernel documentation
> > > @@ -189,6 +190,13 @@ The kernel build requires GNU GLOBAL version 6.6.5 or later to generate
> > >  tag files through ``make gtags``.  This is due to its use of the gtags
> > >  ``-C (--directory)`` flag.
> > >
> > > +git
> > > +---
> > > +
> > > +When building with CONFIG_LOCALVERSION_AUTO=y, the build system uses
> > > +git to produce a version string of the form
> > > +6.4.6-00128-gd78b7f406397, which will be shown e.g. by running `uname -r`.
> >
> > Isn't this optional?  If git is not installed it just will not use git
> > to determine the local version.
> 
> Right.
> Without git, the suffix "-00128-gd78b7f406397" is not
> appended, but you can build the kernel.
> 
> 
> >
> > So you should put "(optional)" above on the list of tools.
> >
> > And also, don't pick a specific version like this unless it is that way
> > for a reason.  Why not pick a newer one?  Or the last one that the local
> > version script can handle properly?
> 
> 
> 
> CentOS 7 (plans to retire in 2024) unfortunately
> uses a ten-year-old git version.
> 
> In CentOS 7,
> 
> $ git --version
> git version 1.8.3.1

I doubt CentOS 7 can build a modern-day kernel anyway, so why is this a
requirement?  We shouldn't be beholden to the necro-distros just because
they have not moved into this decade :)

> If we are allowed to abandon conservative distros,
> I prefer git >= 2.14.0
> 
> That supports 'git status --no-optional-locks'

That makes sense, and is a valid reason to require this.

thanks,

greg k-h
  
Masahiro Yamada Aug. 5, 2023, 8:02 a.m. UTC | #4
On Fri, Aug 4, 2023 at 7:17 PM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Fri, Aug 04, 2023 at 06:41:54PM +0900, Masahiro Yamada wrote:
> > On Thu, Aug 3, 2023 at 7:19 PM Greg KH <gregkh@linuxfoundation.org> wrote:
> > >
> > > On Thu, Aug 03, 2023 at 11:07:10AM +0200, Rasmus Villemoes wrote:
> > > > git is obviously used for development, directly and also
> > > > indirectly (via checkpatch, get_maintainer and other helper
> > > > scripts). But it is also invoked during the build to produce the
> > > > `uname -r` string.
> > > >
> > > > It's useful to have some minimal git version one can expect people to
> > > > use. For now, set a somewhat conservative minimum of 1.8.0, which is
> > > > already more then ten years old.
> > > >
> > > > Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> > > > ---
> > > >  Documentation/process/changes.rst | 8 ++++++++
> > > >  1 file changed, 8 insertions(+)
> > > >
> > > > diff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rst
> > > > index 5561dae94f85..a82c619f4bb2 100644
> > > > --- a/Documentation/process/changes.rst
> > > > +++ b/Documentation/process/changes.rst
> > > > @@ -62,6 +62,7 @@ Sphinx\ [#f1]_         1.7              sphinx-build --version
> > > >  cpio                   any              cpio --version
> > > >  GNU tar                1.28             tar --version
> > > >  gtags (optional)       6.6.5            gtags --version
> > > > +git                    1.8.0            git --version
> > > >  ====================== ===============  ========================================
> > > >
> > > >  .. [#f1] Sphinx is needed only to build the Kernel documentation
> > > > @@ -189,6 +190,13 @@ The kernel build requires GNU GLOBAL version 6.6.5 or later to generate
> > > >  tag files through ``make gtags``.  This is due to its use of the gtags
> > > >  ``-C (--directory)`` flag.
> > > >
> > > > +git
> > > > +---
> > > > +
> > > > +When building with CONFIG_LOCALVERSION_AUTO=y, the build system uses
> > > > +git to produce a version string of the form
> > > > +6.4.6-00128-gd78b7f406397, which will be shown e.g. by running `uname -r`.
> > >
> > > Isn't this optional?  If git is not installed it just will not use git
> > > to determine the local version.
> >
> > Right.
> > Without git, the suffix "-00128-gd78b7f406397" is not
> > appended, but you can build the kernel.
> >
> >
> > >
> > > So you should put "(optional)" above on the list of tools.
> > >
> > > And also, don't pick a specific version like this unless it is that way
> > > for a reason.  Why not pick a newer one?  Or the last one that the local
> > > version script can handle properly?
> >
> >
> >
> > CentOS 7 (plans to retire in 2024) unfortunately
> > uses a ten-year-old git version.
> >
> > In CentOS 7,
> >
> > $ git --version
> > git version 1.8.3.1
>
> I doubt CentOS 7 can build a modern-day kernel anyway, so why is this a
> requirement?  We shouldn't be beholden to the necro-distros just because
> they have not moved into this decade :)



The default GCC on CentOS 7 is GCC 4.8,
which is too old to build the kernel.

I am not so sure how RHEL/CentOS 7 users are working
on the kernel development, but it is possible to
install a newer gcc version from Developer Toolset.


FWFW, this is how to set up GCC 11 on CentOS 7
so you can build the kernel.

# yum install centos-release-scl
# yum install devtoolset-11-gcc
$ PATH=/opt/rh/devtoolset-11/root/usr/bin:$PATH
$ gcc --version
gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.






Recently, I got a regression report on RHEL/CentOS 7.
So, some people might still care about this.





commit f5983dab0ead92dc2690d147f0604a0badcac6a8
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Wed Jun 28 01:32:05 2023 +0900

    modpost: define more R_ARM_* for old distributions

    On CentOS 7, the following build error occurs.
  
Tetsuo Handa Aug. 5, 2023, 10:43 a.m. UTC | #5
On 2023/08/05 17:02, Masahiro Yamada wrote:
>>>>> It's useful to have some minimal git version one can expect people to
>>>>> use. For now, set a somewhat conservative minimum of 1.8.0, which is
>>>>> already more then ten years old.

No problem with requiring git >= 1.8.0.

> 
> The default GCC on CentOS 7 is GCC 4.8,
> which is too old to build the kernel.
> 
> I am not so sure how RHEL/CentOS 7 users are working
> on the kernel development, but it is possible to
> install a newer gcc version from Developer Toolset.

CentOS 7 users can install a newer git version as well as gcc.

> commit f5983dab0ead92dc2690d147f0604a0badcac6a8
> Author: Masahiro Yamada <masahiroy@kernel.org>
> Date:   Wed Jun 28 01:32:05 2023 +0900
> 
>     modpost: define more R_ARM_* for old distributions
> 
>     On CentOS 7, the following build error occurs.

It is glibc-headers-2.17-326.el7_9 package. Neither gcc nor git problem.
  

Patch

diff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rst
index 5561dae94f85..a82c619f4bb2 100644
--- a/Documentation/process/changes.rst
+++ b/Documentation/process/changes.rst
@@ -62,6 +62,7 @@  Sphinx\ [#f1]_         1.7              sphinx-build --version
 cpio                   any              cpio --version
 GNU tar                1.28             tar --version
 gtags (optional)       6.6.5            gtags --version
+git                    1.8.0            git --version
 ====================== ===============  ========================================
 
 .. [#f1] Sphinx is needed only to build the Kernel documentation
@@ -189,6 +190,13 @@  The kernel build requires GNU GLOBAL version 6.6.5 or later to generate
 tag files through ``make gtags``.  This is due to its use of the gtags
 ``-C (--directory)`` flag.
 
+git
+---
+
+When building with CONFIG_LOCALVERSION_AUTO=y, the build system uses
+git to produce a version string of the form
+6.4.6-00128-gd78b7f406397, which will be shown e.g. by running `uname -r`.
+
 System utilities
 ****************