Hi Riwen,OK. I'll enhance the commit message and add a Fixes tag.
On 3/31/2025 7:52 PM, Rafael J. Wysocki wrote:
On Mon, Mar 31, 2025 at 11:15 AM luriwen <luriwen@xxxxxxxxxxx> wrote:
在 2025/3/29 09:07, Takashi Sakamoto 写道:
Hi,
On Fri, Mar 28, 2025 at 03:47:50PM +0800, Riwen Lu wrote:
The value -rR of MAKEFLAGS implicit do not use make's built-in rules and
variables. Previous commit d1d096312176 ("tools: fix annoying "mkdir -p
..." logs when building tools in parallel") removed the MAKEFLAGS=
command for tools and caused the built-in rules for pfrut/firewire
failed to take effect.
Reported-by: k2ci <kernel-bot@xxxxxxxxxx>
Signed-off-by: Riwen Lu <luriwen@xxxxxxxxxx>
Yu, can you have a look at this please?
---
tools/firewire/Makefile | 7 +++++++
tools/power/acpi/tools/pfrut/Makefile | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
As long as testing with v6.14 release, I can not find such failure. I
guess that some one has fixed the issue between the commit and the
release.
Would you please recheck the issue?
Thanks
Takashi Sakamoto
I have reconfirmed that this type of error does indeed exist when using
make tools/all or make tools/firewire at commit 4e82c87058f4 ("Merge tag
'rust-6.15' of
git://git.kernel.org/pub/scm/linux/kernel/git/ojeda/linux") in the 6.14
kernel.
The relevant error messages are as follows:
$ make tools/all
...
LD pfrut
/usr/bin/ld:
/home/luriwen/workspace/kernel/kernel.org/linux-git/linux/tools/power/acpi/tools/pfrut/pfrut.o:
in function `print_cap':
/home/luriwen/workspace/kernel/kernel.org/linux-git/linux/tools/power/acpi/tools/pfrut/pfrut.c:179:
undefined reference to `uuid_unparse'
/usr/bin/ld:
/home/luriwen/workspace/kernel/kernel.org/linux-git/linux/tools/power/acpi/tools/pfrut/pfrut.c:184:
undefined reference to `uuid_unparse'
/usr/bin/ld:
/home/luriwen/workspace/kernel/kernel.org/linux-git/linux/tools/power/acpi/tools/pfrut/pfrut.c:189:
undefined reference to `uuid_unparse'
/usr/bin/ld:
/home/luriwen/workspace/kernel/kernel.org/linux-git/linux/tools/power/acpi/tools/pfrut/pfrut.c:191:
undefined reference to `uuid_unparse'
collect2: error: ld returned 1 exit status
$ make tools/firewire
SYNC include/config/auto.conf.cmd
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTLD scripts/kconfig/conf
DESCEND firewire
make[3]: *** No rule to make target 'nosy-dump.o', needed by
'nosy-dump'. Stop.
make[2]: *** [Makefile:72: firewire] Error 2
make[1]: ***
[/home/kylin/remote/kernel/kernel.org/linux-git/linux/Makefile:1438:
tools/firewire] Error 2
make: *** [Makefile:251: __sub-make] Error 2
Maybe add more background in the commit log that, the default
MAKEFLAGS in Makefile under Linux's root directory is with "-rR".
Before commit d1d096312176 is applied, the -rR is overwriten by
the subdirectory's MAKEFLAGS, so it will not cause problems when
compiling the sub-directory of tools. After commit d1d096312176,
the -rR takes effect, which prevents the tools from using the
built-in rules and variables. Maybe also added Fixed: tag.
Regarding the prfut Makefile, we have fixed the LDFLAGS issue,Correct. The CFLAGS += xxx is not take effect.
but the CFLAGS += xxx will not take effect, right?
This reminds me that, is it possible to just remove -rR for the
sub-directories? In this way we don't have to change the code of
every tool one-by-one, pfrut, firewire...
Cced Masahiro for guidance.
Something like below:
diff --git a/Makefile b/Makefile
index d138b17b8840..853be42ca1a1 100644
--- a/Makefile
+++ b/Makefile
@@ -1431,12 +1431,11 @@ endif
tools/: FORCE
$(Q)mkdir -p $(objtree)/tools
- $(Q)$(MAKE) LDFLAGS= O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
+ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter-out rR,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
tools/%: FORCE
$(Q)mkdir -p $(objtree)/tools
- $(Q)$(MAKE) LDFLAGS= O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
-
+ $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(filter-out rR,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
# ---------------------------------------------------------------------------
# Kernel selftest
I believe this modification is more appropriate.