* -next build error due to "kbuild: Leave objtool binary around with 'make clean'" [not found] <20260227-avoid-objtool-binary-removal-clean-v1-1-122f3e55eae9@kernel.org> @ 2026-03-02 19:18 ` Thorsten Leemhuis 2026-03-02 19:43 ` Michal Suchánek 0 siblings, 1 reply; 4+ messages in thread From: Thorsten Leemhuis @ 2026-03-02 19:18 UTC (permalink / raw) To: Nathan Chancellor, Nicolas Schier, Josh Poimboeuf, Peter Zijlstra Cc: linux-kbuild, linux-kernel, stable, Michal Suchanek, Rainer Fiebig, Linux Next Mailing List On 2/28/26 06:40, Nathan Chancellor wrote: > The difference between 'make clean' and 'make mrproper' is documented in > 'make help' as: > > clean - Remove most generated files but keep the config and > enough build support to build external modules > mrproper - Remove all generated files + config + various backup files > > After commit 68b4fe32d737 ("kbuild: Add objtool to top-level clean > target"), running 'make clean' then attempting to build an external > module with the resulting build directory fails with > > $ make ARCH=x86_64 O=build clean > > $ make -C build M=... MO=... > ... > /bin/sh: line 1: .../build/tools/objtool/objtool: No such file or directory > > as 'make clean' removes the objtool binary. > > Split the objtool clean target into mrproper and clean like Kbuild does > and remove all generated artifacts with 'make clean' except for the > objtool binary, which is removed with 'make mrproper'. Thx for fixing this regression, sadly this caused my daily -next rpm builds for Fedora to fail on x86_64 during a "make mrproper": "" kernel.spec:2485: InitBuildVars: Copy files + /usr/bin/make -s 'HOSTCFLAGS=-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 ' 'HOSTLDFLAGS=-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' -j32 mrproper find: cannot delete ‘/builddir/build/BUILD/kernel-7.0.0-build/kernel-next-20260302/linux-7.0.0-0.0.next.20260302.121.vanilla.fc42.x86_64/tools/objtool/.check.o.cmd’: No such file or directory find: cannot delete ‘/builddir/build/BUILD/kernel-7.0.0-build/kernel-next-20260302/linux-7.0.0-0.0.next.20260302.121.vanilla.fc42.x86_64/tools/objtool/.elf.o.cmd’: No such file or directory [and many more like these] "" For the full build log, see: https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/next/fedora-42-x86_64/10183736-next-next-all/builder-live.log.gz This is almost exactly the rpm spec file that is used in Fedora rawhide. The sections that causes this looks like this: """ %{log_msg "InitBuildVars: Copy files"} %{make} %{?_smp_mflags} mrproper cp configs/$Config .config """ So it could be something strange in there that causes this, but from a quick look I did not see what. And reverting this patch makes things work again: https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/next/fedora-42-x86_64/10184184-kernel/builder-live.log.gz Ciao, Thorsten > Cc: stable@vger.kernel.org > Fixes: 68b4fe32d737 ("kbuild: Add objtool to top-level clean target") > Reported-by: Michal Suchanek <msuchanek@suse.de> > Closes: https://lore.kernel.org/20260225112633.6123-1-msuchanek@suse.de/ > Reported-by: Rainer Fiebig <jrf@mailbox.org> > Closes: https://lore.kernel.org/62d12399-76e5-3d40-126a-7490b4795b17@mailbox.org/ > Signed-off-by: Nathan Chancellor <nathan@kernel.org> > --- > I realize that this will technically decend into tools/objtool twice > during cleaning when running mrproper but I don't think it is the end of > the world for a much simpler implementation. > > I can take this via kbuild-fixes with a proper Ack or it can go through > -tip, does not matter to me. > --- > Makefile | 8 ++++---- > tools/objtool/Makefile | 6 ++++-- > 2 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/Makefile b/Makefile > index e944c6e71e81..d76d706a5580 100644 > --- a/Makefile > +++ b/Makefile > @@ -1497,13 +1497,13 @@ ifneq ($(wildcard $(resolve_btfids_O)),) > $(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean > endif > > -PHONY += objtool_clean > +PHONY += objtool_clean objtool_mrproper > > objtool_O = $(abspath $(objtree))/tools/objtool > > -objtool_clean: > +objtool_clean objtool_mrproper: > ifneq ($(wildcard $(objtool_O)),) > - $(Q)$(MAKE) -sC $(abs_srctree)/tools/objtool O=$(objtool_O) srctree=$(abs_srctree) clean > + $(Q)$(MAKE) -sC $(abs_srctree)/tools/objtool O=$(objtool_O) srctree=$(abs_srctree) $(patsubst objtool_%,%,$@) > endif > > tools/: FORCE > @@ -1686,7 +1686,7 @@ PHONY += $(mrproper-dirs) mrproper > $(mrproper-dirs): > $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) > > -mrproper: clean $(mrproper-dirs) > +mrproper: clean objtool_mrproper $(mrproper-dirs) > $(call cmd,rmfiles) > @find . $(RCS_FIND_IGNORE) \ > \( -name '*.rmeta' \) \ > diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile > index 6964175abdfd..50d3e38e6137 100644 > --- a/tools/objtool/Makefile > +++ b/tools/objtool/Makefile > @@ -142,13 +142,15 @@ $(LIBSUBCMD)-clean: > $(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT) > > clean: $(LIBSUBCMD)-clean > - $(call QUIET_CLEAN, objtool) $(RM) $(OBJTOOL) > $(Q)find $(OUTPUT) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete > $(Q)$(RM) $(OUTPUT)arch/x86/lib/cpu-feature-names.c $(OUTPUT)fixdep > $(Q)$(RM) $(OUTPUT)arch/x86/lib/inat-tables.c $(OUTPUT)fixdep > $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.objtool > $(Q)$(RM) -r -- $(OUTPUT)feature > > +mrproper: clean > + $(call QUIET_CLEAN, objtool) $(RM) $(OBJTOOL) > + > FORCE: > > -.PHONY: clean FORCE > +.PHONY: clean mrproper FORCE > > --- > base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f > change-id: 20260227-avoid-objtool-binary-removal-clean-83ce7fbcc8a1 > > Best regards, > -- > Nathan Chancellor <nathan@kernel.org> > > ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: -next build error due to "kbuild: Leave objtool binary around with 'make clean'" 2026-03-02 19:18 ` -next build error due to "kbuild: Leave objtool binary around with 'make clean'" Thorsten Leemhuis @ 2026-03-02 19:43 ` Michal Suchánek 2026-03-02 20:49 ` Nathan Chancellor 0 siblings, 1 reply; 4+ messages in thread From: Michal Suchánek @ 2026-03-02 19:43 UTC (permalink / raw) To: Thorsten Leemhuis Cc: Nathan Chancellor, Nicolas Schier, Josh Poimboeuf, Peter Zijlstra, linux-kbuild, linux-kernel, stable, Rainer Fiebig, Linux Next Mailing List On Mon, Mar 02, 2026 at 08:18:17PM +0100, Thorsten Leemhuis wrote: > On 2/28/26 06:40, Nathan Chancellor wrote: > > The difference between 'make clean' and 'make mrproper' is documented in > > 'make help' as: > > > > clean - Remove most generated files but keep the config and > > enough build support to build external modules > > mrproper - Remove all generated files + config + various backup files > > > > After commit 68b4fe32d737 ("kbuild: Add objtool to top-level clean > > target"), running 'make clean' then attempting to build an external > > module with the resulting build directory fails with > > > > $ make ARCH=x86_64 O=build clean > > > > $ make -C build M=... MO=... > > ... > > /bin/sh: line 1: .../build/tools/objtool/objtool: No such file or directory > > > > as 'make clean' removes the objtool binary. > > > > Split the objtool clean target into mrproper and clean like Kbuild does > > and remove all generated artifacts with 'make clean' except for the > > objtool binary, which is removed with 'make mrproper'. > > Thx for fixing this regression, sadly this caused my daily -next rpm > builds for Fedora to fail on x86_64 during a "make mrproper": > > "" > kernel.spec:2485: InitBuildVars: Copy files > + /usr/bin/make -s 'HOSTCFLAGS=-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 ' 'HOSTLDFLAGS=-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' -j32 mrproper > find: cannot delete ‘/builddir/build/BUILD/kernel-7.0.0-build/kernel-next-20260302/linux-7.0.0-0.0.next.20260302.121.vanilla.fc42.x86_64/tools/objtool/.check.o.cmd’: No such file or directory > find: cannot delete ‘/builddir/build/BUILD/kernel-7.0.0-build/kernel-next-20260302/linux-7.0.0-0.0.next.20260302.121.vanilla.fc42.x86_64/tools/objtool/.elf.o.cmd’: No such file or directory > [and many more like these] > "" > For the full build log, see: > https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/next/fedora-42-x86_64/10183736-next-next-all/builder-live.log.gz > > This is almost exactly the rpm spec file that is used in Fedora rawhide. > The sections that causes this looks like this: > > """ > %{log_msg "InitBuildVars: Copy files"} > %{make} %{?_smp_mflags} mrproper And how would find -delete fail? Does that mean that the files in question are broken links? Does that mean in the clean phase these erren't broken? When did they break? Or does the objtool_clean run multiple times in parallel, once through the clean target, and once as dependency of the mrproper target? Thanks Michal ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: -next build error due to "kbuild: Leave objtool binary around with 'make clean'" 2026-03-02 19:43 ` Michal Suchánek @ 2026-03-02 20:49 ` Nathan Chancellor 2026-03-03 5:51 ` Thorsten Leemhuis 0 siblings, 1 reply; 4+ messages in thread From: Nathan Chancellor @ 2026-03-02 20:49 UTC (permalink / raw) To: Michal Suchánek, Thorsten Leemhuis Cc: Nicolas Schier, Josh Poimboeuf, Peter Zijlstra, linux-kbuild, linux-kernel, stable, Rainer Fiebig, Linux Next Mailing List On Mon, Mar 02, 2026 at 08:43:57PM +0100, Michal Suchánek wrote: > On Mon, Mar 02, 2026 at 08:18:17PM +0100, Thorsten Leemhuis wrote: > > On 2/28/26 06:40, Nathan Chancellor wrote: > > > The difference between 'make clean' and 'make mrproper' is documented in > > > 'make help' as: > > > > > > clean - Remove most generated files but keep the config and > > > enough build support to build external modules > > > mrproper - Remove all generated files + config + various backup files > > > > > > After commit 68b4fe32d737 ("kbuild: Add objtool to top-level clean > > > target"), running 'make clean' then attempting to build an external > > > module with the resulting build directory fails with > > > > > > $ make ARCH=x86_64 O=build clean > > > > > > $ make -C build M=... MO=... > > > ... > > > /bin/sh: line 1: .../build/tools/objtool/objtool: No such file or directory > > > > > > as 'make clean' removes the objtool binary. > > > > > > Split the objtool clean target into mrproper and clean like Kbuild does > > > and remove all generated artifacts with 'make clean' except for the > > > objtool binary, which is removed with 'make mrproper'. > > > > Thx for fixing this regression, sadly this caused my daily -next rpm > > builds for Fedora to fail on x86_64 during a "make mrproper": > > > > "" > > kernel.spec:2485: InitBuildVars: Copy files > > + /usr/bin/make -s 'HOSTCFLAGS=-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 ' 'HOSTLDFLAGS=-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' -j32 mrproper > > find: cannot delete ‘/builddir/build/BUILD/kernel-7.0.0-build/kernel-next-20260302/linux-7.0.0-0.0.next.20260302.121.vanilla.fc42.x86_64/tools/objtool/.check.o.cmd’: No such file or directory > > find: cannot delete ‘/builddir/build/BUILD/kernel-7.0.0-build/kernel-next-20260302/linux-7.0.0-0.0.next.20260302.121.vanilla.fc42.x86_64/tools/objtool/.elf.o.cmd’: No such file or directory > > [and many more like these] > > "" > > For the full build log, see: > > https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/next/fedora-42-x86_64/10183736-next-next-all/builder-live.log.gz > > > > This is almost exactly the rpm spec file that is used in Fedora rawhide. > > The sections that causes this looks like this: > > > > """ > > %{log_msg "InitBuildVars: Copy files"} > > %{make} %{?_smp_mflags} mrproper ... > Or does the objtool_clean run multiple times in parallel, once through > the clean target, and once as dependency of the mrproper target? More than likely this based on my reading of the submake processes from the build log. For what it's worth, I cannot reproduce this error on either a really fast or really slow build machine but it should not be hard to avoid by using 'xargs rm -f' like the rest of Kbuild does for removing things, which should suppress the error if the file does not exist. Thorsten, could you see if this diff makes a difference for you? If so, I'll squash it in with a note. diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile index 50d3e38e6137..76bcd4e85de3 100644 --- a/tools/objtool/Makefile +++ b/tools/objtool/Makefile @@ -142,7 +142,7 @@ $(LIBSUBCMD)-clean: $(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT) clean: $(LIBSUBCMD)-clean - $(Q)find $(OUTPUT) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete + $(Q)find $(OUTPUT) \( -name '*.o' -o -name '\.*.cmd' -o -name '\.*.d' \) -type f -print | xargs $(RM) $(Q)$(RM) $(OUTPUT)arch/x86/lib/cpu-feature-names.c $(OUTPUT)fixdep $(Q)$(RM) $(OUTPUT)arch/x86/lib/inat-tables.c $(OUTPUT)fixdep $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.objtool ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: -next build error due to "kbuild: Leave objtool binary around with 'make clean'" 2026-03-02 20:49 ` Nathan Chancellor @ 2026-03-03 5:51 ` Thorsten Leemhuis 0 siblings, 0 replies; 4+ messages in thread From: Thorsten Leemhuis @ 2026-03-03 5:51 UTC (permalink / raw) To: Nathan Chancellor, Michal Suchánek Cc: Nicolas Schier, Josh Poimboeuf, Peter Zijlstra, linux-kbuild, linux-kernel, stable, Rainer Fiebig, Linux Next Mailing List On 3/2/26 21:49, Nathan Chancellor wrote: > On Mon, Mar 02, 2026 at 08:43:57PM +0100, Michal Suchánek wrote: >> On Mon, Mar 02, 2026 at 08:18:17PM +0100, Thorsten Leemhuis wrote: >>> On 2/28/26 06:40, Nathan Chancellor wrote: >>>> The difference between 'make clean' and 'make mrproper' is documented in >>>> 'make help' as: >>> [...] >>> Thx for fixing this regression, sadly this caused my daily -next rpm >>> builds for Fedora to fail on x86_64 during a "make mrproper": >>> >>> "" >>> kernel.spec:2485: InitBuildVars: Copy files >>> + /usr/bin/make -s 'HOSTCFLAGS=-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 ' 'HOSTLDFLAGS=-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' -j32 mrproper >>> find: cannot delete ‘/builddir/build/BUILD/kernel-7.0.0-build/kernel-next-20260302/linux-7.0.0-0.0.next.20260302.121.vanilla.fc42.x86_64/tools/objtool/.check.o.cmd’: No such file or directory >>> find: cannot delete ‘/builddir/build/BUILD/kernel-7.0.0-build/kernel-next-20260302/linux-7.0.0-0.0.next.20260302.121.vanilla.fc42.x86_64/tools/objtool/.elf.o.cmd’: No such file or directory >>> [and many more like these] >>> "" >>> For the full build log, see: >>> https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/next/fedora-42-x86_64/10183736-next-next-all/builder-live.log.gz > [...] >> Or does the objtool_clean run multiple times in parallel, once through >> the clean target, and once as dependency of the mrproper target? > > More than likely this based on my reading of the submake processes from > the build log. For what it's worth, I cannot reproduce this error on > either a really fast or really slow build machine but it should not be > hard to avoid by using 'xargs rm -f' like the rest of Kbuild does for > removing things, which should suppress the error if the file does not > exist. Thorsten, could you see if this diff makes a difference for you? Yeah, that makes things work again, thx! > If so, I'll squash it in with a note. Great, thx! Ciao, Thorsten > diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile > index 50d3e38e6137..76bcd4e85de3 100644 > --- a/tools/objtool/Makefile > +++ b/tools/objtool/Makefile > @@ -142,7 +142,7 @@ $(LIBSUBCMD)-clean: > $(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT) > > clean: $(LIBSUBCMD)-clean > - $(Q)find $(OUTPUT) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete > + $(Q)find $(OUTPUT) \( -name '*.o' -o -name '\.*.cmd' -o -name '\.*.d' \) -type f -print | xargs $(RM) > $(Q)$(RM) $(OUTPUT)arch/x86/lib/cpu-feature-names.c $(OUTPUT)fixdep > $(Q)$(RM) $(OUTPUT)arch/x86/lib/inat-tables.c $(OUTPUT)fixdep > $(Q)$(RM) -- $(OUTPUT)FEATURE-DUMP.objtool ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-03-03 6:01 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260227-avoid-objtool-binary-removal-clean-v1-1-122f3e55eae9@kernel.org>
2026-03-02 19:18 ` -next build error due to "kbuild: Leave objtool binary around with 'make clean'" Thorsten Leemhuis
2026-03-02 19:43 ` Michal Suchánek
2026-03-02 20:49 ` Nathan Chancellor
2026-03-03 5:51 ` Thorsten Leemhuis
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox