Re: [PATCH v1] tools: Fix compile error of pfrut/firewire
"Chen, Yu C" <[email protected]> Tue, 1 Apr 2025 14:56:31 +0800
| Newsgroups | gmane.linux.acpi.devel,gmane.linux.kernel.firewire.devel,gmane.linux.kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Riwen, On 3/31/2025 7:52 PM, Rafael J. Wysocki wrote: > On Mon, Mar 31, 2025 at 11:15 AM luriwen <[email protected]> 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 <[email protected]> >>>> Signed-off-by: Riwen Lu <[email protected]> > > 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, 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