2023-08-03 09:54:32

by Rasmus Villemoes

[permalink] [raw]
Subject: [PATCH] Documentation: changes.rst: add entry for git

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 <[email protected]>
---
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`.
+
System utilities
****************

--
2.37.2



2023-08-03 12:54:03

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] Documentation: changes.rst: add entry for git

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 <[email protected]>
> ---
> 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

2023-08-04 10:01:34

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] Documentation: changes.rst: add entry for git

On Thu, Aug 3, 2023 at 7:19 PM Greg KH <[email protected]> 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 <[email protected]>
> > ---
> > 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 <[email protected]>
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'



--
Best Regards
Masahiro Yamada

2023-08-04 12:06:24

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] Documentation: changes.rst: add entry for git

On Fri, Aug 04, 2023 at 06:41:54PM +0900, Masahiro Yamada wrote:
> On Thu, Aug 3, 2023 at 7:19 PM Greg KH <[email protected]> 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 <[email protected]>
> > > ---
> > > 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

2023-08-05 10:15:03

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] Documentation: changes.rst: add entry for git

On Fri, Aug 4, 2023 at 7:17 PM Greg KH <[email protected]> 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 <[email protected]> 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 <[email protected]>
> > > > ---
> > > > 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 <[email protected]>
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.








--
Best Regards
Masahiro Yamada

2023-08-05 13:07:47

by Tetsuo Handa

[permalink] [raw]
Subject: Re: [PATCH] Documentation: changes.rst: add entry for git

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 <[email protected]>
> 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.