kbuild: Fix output of make kernelrelease
Steven Rostedt
maintainerPATCH 1/1 kbuild: Fix output of make kernelrelease
Commit 7ff525712acf "kbuild: fake the "Entering directory ..." message more simply" changed the output of "make kernelrelease" such that the kernel release version was not the last line printed. This broke various tools that would find the kernel release with "make kernelrelease | tail -1". One of those tools that broke was ktest.pl which resides in the kernel.
If the target of the make is "kernelrelease" do not print the "Leaving directory ..." message at the end as that will break tools that expect the kernelrelease version to be the last line outputted.
--- Makefile | 8 ++++++++ 1 file changed, 8 insertions(+)
Makefile +8 -0
@@ -14,6 +14,14 @@ NAME = Shuffling Zombie Juror # (this increases performance and avoids hard-to-debug behaviour); MAKEFLAGS += -rR +# +# The target "kernelrelease" requires the last line to be the release +# of the kernel, not a "Leaving directory ..." message. +# ktest.pl and other tools require this. +ifeq ("$(MAKECMDGOALS)", "kernelrelease") +MAKEFLAGS += --no-print-directory +endif + # Avoid funny character set dependencies unexport LC_ALL LC_COLLATE=C
Signature · 1 line
2.0.1
Dne 22.10.2014 v 16:19 Steven Rostedt napsal(a):
Quoted 5 lines
Commit
7ff525712acf"kbuild: fake the "Entering directory ..." message more simply" changed the output of "make kernelrelease" such that the kernel release version was not the last line printed. This broke various tools that would find the kernel release with "make kernelrelease | tail -1".
The cleaner and recommended (see recent make help) way is to use make -s:
$ make O=build -s kernelrelease 3.18.0-rc1+
no further processing is needed.
Quoted 1 line
One of those tools that broke was ktest.pl which resides in the kernel.
Can you please apply this patch?
Thanks,
Michal
From c660b235e25eee053337e0e6c952e87f39839c63 Mon Sep 17 00:00:00 2001
From: Michal Marek <[email protected]>
Date: Wed, 22 Oct 2014 21:25:39 +0200
Subject: [PATCH] ktest: Use make -s kernelrelease
The previous tail -1 broke with commit 7ff525712acf ("kbuild: fake the "Entering directory ..." message more simply")
--- tools/testing/ktest/ktest.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/ktest/ktest.pl +1 -1
@@ -2005,7 +2005,7 @@ sub get_version { # get the release name return if ($have_version); doprint "$make kernelrelease ... "; - $version = `$make kernelrelease | tail -1`; + $version = `$make -s kernelrelease`; chomp($version); doprint "$version\n"; $have_version = 1;
Signature · 1 line
1.9.2
Steven Rostedt
maintainerQuoted 11 lines · On Wed, 22 Oct 2014 21:44:08 +0200 Michal Marek <[email protected]> wrote:
Dne 22.10.2014 v 16:19 Steven Rostedt napsal(a):
Quoted 5 lines
Commit
7ff525712acf"kbuild: fake the "Entering directory ..." message more simply" changed the output of "make kernelrelease" such that the kernel release version was not the last line printed. This broke various tools that would find the kernel release with "make kernelrelease | tail -1".The cleaner and recommended (see recent make help) way is to use make -s:
$ make O=build -s kernelrelease 3.18.0-rc1+
Hmm, I see the help index was recently updated to include that.
Does this work with older kernels too? That's very important.
-- Steve
Quoted 10 lines · Steven Rostedt
Quoted 7 lines · On Wed, 22 Oct 2014 21:44:08 +0200 Michal Marek <[email protected]> wrote:
Dne 22.10.2014 v 16:19 Steven Rostedt napsal(a):
Quoted 5 lines
Commit
7ff525712acf"kbuild: fake the "Entering directory ..." message more simply" changed the output of "make kernelrelease" such that the kernel release version was not the last line printed. This broke various tools that would find the kernel release with "make kernelrelease | tail -1".
Quoted 8 lines
Quoted 4 lines
The cleaner and recommended (see recent make help) way is to use make -s:
$ make O=build -s kernelrelease 3.18.0-rc1+Hmm, I see the help index was recently updated to include that.
Does this work with older kernels too? That's very important.
Yes. Except for a few bugs in the history, make -s has always been silent.
Michal
Steven Rostedt
maintainerQuoted 7 lines · On Wed, 22 Oct 2014 21:44:08 +0200 Michal Marek <[email protected]> wrote:
Dne 22.10.2014 v 16:19 Steven Rostedt napsal(a):
Quoted 5 lines
Commit
7ff525712acf"kbuild: fake the "Entering directory ..." message more simply" changed the output of "make kernelrelease" such that the kernel release version was not the last line printed. This broke various tools that would find the kernel release with "make kernelrelease | tail -1".
Quoted 6 lines
The cleaner and recommended (see recent make help) way is to use make -s:
$ make O=build -s kernelrelease 3.18.0-rc1+no further processing is needed.
I don't mind changing my script with your patch. But this does break other scripts of mine that I need to hunt down and change. My fear is why do we need the '-s' when there may be other methods to preserve the old functionality.
If this is breaking my scripts, I wonder if it is also breaking other scripts out there too? As you stated, it wasn't until recently that the help message recommended the '-s'.
-- Steve
Quoted 36 lines
Quoted 3 lines
One of those tools that broke was ktest.pl which resides in the kernel.
Can you please apply this patch?
Thanks,
MichalQuoted 1 line
From
c660b235e25eee053337e0e6c952e87f39839c63Mon Sep 17 00:00:00 2001From: Michal Marek <[email protected]>
Date: Wed, 22 Oct 2014 21:25:39 +0200
Subject: [PATCH] ktest: Use make -s kernelreleaseThe previous tail -1 broke with commit
7ff525712acf("kbuild: fake the "Entering directory ..." message more simply")Reported-by Steven Rostedt <[email protected]>Signed-off-by Michal Marek <[email protected]>--- tools/testing/ktest/ktest.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)tools/testing/ktest/ktest.pl +1
-1@@ -2005,7 +2005,7 @@ sub get_version { # get the release name return if ($have_version); doprint "$make kernelrelease ... "; - $version = `$make kernelrelease | tail -1`; + $version = `$make -s kernelrelease`; chomp($version); doprint "$version\n"; $have_version = 1;
Quoted 15 lines · Steven Rostedt
Quoted 12 lines · On Wed, 22 Oct 2014 21:44:08 +0200 Michal Marek <[email protected]> wrote:
Dne 22.10.2014 v 16:19 Steven Rostedt napsal(a):
Quoted 5 lines
Commit
7ff525712acf"kbuild: fake the "Entering directory ..." message more simply" changed the output of "make kernelrelease" such that the kernel release version was not the last line printed. This broke various tools that would find the kernel release with "make kernelrelease | tail -1".The cleaner and recommended (see recent make help) way is to use make -s:
$ make O=build -s kernelrelease 3.18.0-rc1+
Quoted 7 lines
Quoted 1 line
no further processing is needed.
I don't mind changing my script with your patch. But this does break other scripts of mine that I need to hunt down and change. My fear is why do we need the '-s' when there may be other methods to preserve the old functionality.
If you have scripts that only do x=$(make kernelrelease), then you should definitely fix them. You are right that the make kernelrelease | tail -1 trick had always been working until 7ff525712acf, so I can apply your patch. But please fix ktest.pl so that it's consistent with what the help text says. Also, the Makefile patch should cover kernelversion and image_name as well.
Michal
Steven Rostedt
maintainerQuoted 24 lines · On Thu, 23 Oct 2014 10:57:57 +0200 Michal Marek <[email protected]> wrote:
Quoted 15 lines · Steven Rostedt
Quoted 12 lines · On Wed, 22 Oct 2014 21:44:08 +0200 Michal Marek <[email protected]> wrote:
Dne 22.10.2014 v 16:19 Steven Rostedt napsal(a):
Quoted 5 lines
Commit
7ff525712acf"kbuild: fake the "Entering directory ..." message more simply" changed the output of "make kernelrelease" such that the kernel release version was not the last line printed. This broke various tools that would find the kernel release with "make kernelrelease | tail -1".The cleaner and recommended (see recent make help) way is to use make -s:
$ make O=build -s kernelrelease 3.18.0-rc1+Quoted 7 lines
Quoted 1 line
no further processing is needed.
I don't mind changing my script with your patch. But this does break other scripts of mine that I need to hunt down and change. My fear is why do we need the '-s' when there may be other methods to preserve the old functionality.
Quoted 4 lines
If you have scripts that only do x=$(make kernelrelease), then you should definitely fix them. You are right that the make kernelrelease | tail -1 trick had always been working until
7ff525712acf, so I can apply your patch.
Thanks, because that's what my scripts indeed do ;-)
Quoted 2 lines
But please fix ktest.pl so that it's consistent with what the help text says.
Yeah, regardless I was planning on applying your patch as it needs to handle bisects, and without it, ktest will fail to bisect after 7ff525712acf.
Quoted 2 lines
Also, the
Makefilepatch should cover kernelversion andimage_nameas well.
OK, I'll make the update.
Thanks!
-- Steve