Skip to contentSkip to conversation

kbuild: Fix output of make kernelrelease

PATCH In review Steven Rostedt 2 participants 7 messages Oct 22, 2014 – Oct 23, 2014

Subsystems (2)
lore
Share & tools
lore

Steven Rostedt

author maintainer
#0 lore raw

PATCH 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.

Fixes 7ff525712acf "kbuild: fake the "Entering directory ..." message more simply"
Cc Masahiro Yamada <[email protected]>
Cc Peter Foley <[email protected]>
Cc Michal Marek <[email protected]>
---
 Makefile | 8 ++++++++
 1 file changed, 8 insertions(+)
Makefile +8 -0
index 05d67af376c5..83fc5f0398a0 100644
@@ -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
#1 lore raw

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
index bf13981..60fe020 100755
@@ -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
author maintainer
#2 lore raw
Quoted 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

#3 lore raw
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

author maintainer
#4 lore raw
In reply to Michal Marek
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 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,
Michal

Quoted 1 line

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
index bf13981..60fe020 100755
@@ -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;
#5 lore raw
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

author maintainer
#6 lore raw
Quoted 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 Makefile patch should cover kernelversion and image_name as well.

OK, I'll make the update.

Thanks!

-- Steve