Message ID | 20250328074750.3524280-1-luriwen@kylinos.cn (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v1] tools: Fix compile error of pfrut/firewire | expand |
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@kylinos.cn> > Signed-off-by: Riwen Lu <luriwen@kylinos.cn> > --- > 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
在 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@kylinos.cn> >> Signed-off-by: Riwen Lu <luriwen@kylinos.cn> >> --- >> 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 Thanks
On Mon, Mar 31, 2025 at 11:15 AM luriwen <luriwen@hotmail.com> 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@kylinos.cn> > >> Signed-off-by: Riwen Lu <luriwen@kylinos.cn> 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 > > Thanks >
Hi Riwen, On 3/31/2025 7:52 PM, Rafael J. Wysocki wrote: > On Mon, Mar 31, 2025 at 11:15 AM luriwen <luriwen@hotmail.com> 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@kylinos.cn> >>>> Signed-off-by: Riwen Lu <luriwen@kylinos.cn> > > 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
diff --git a/tools/firewire/Makefile b/tools/firewire/Makefile index 67b6e9fca83c..8ba53e1173c6 100644 --- a/tools/firewire/Makefile +++ b/tools/firewire/Makefile @@ -12,6 +12,13 @@ nosy-dump : LDFLAGS = -g nosy-dump : LDLIBS = -lpopt nosy-dump : nosy-dump.o decode-fcp.o + $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + +nosy-dump.o : nosy-dump.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +decode-fcp.o : decode-fcp.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< clean : rm -rf *.o nosy-dump diff --git a/tools/power/acpi/tools/pfrut/Makefile b/tools/power/acpi/tools/pfrut/Makefile index 61c1a96fd433..e682ee135f1d 100644 --- a/tools/power/acpi/tools/pfrut/Makefile +++ b/tools/power/acpi/tools/pfrut/Makefile @@ -8,7 +8,7 @@ EXTRA_UNINSTALL = uninstall-man CFLAGS += -Wall -O2 CFLAGS += -DPFRUT_HEADER='"../../../../../include/uapi/linux/pfrut.h"' -LDFLAGS += -luuid +override LDFLAGS += -luuid TOOL_OBJS = \ pfrut.o
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@kylinos.cn> Signed-off-by: Riwen Lu <luriwen@kylinos.cn> --- tools/firewire/Makefile | 7 +++++++ tools/power/acpi/tools/pfrut/Makefile | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-)