Re: linux-next: build failure after merge of the kbuild tree

From: Masahiro Yamada
Date: Thu Aug 26 2021 - 22:50:44 EST


On Fri, Aug 27, 2021 at 10:50 AM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
>
> Hi Masahiro,
>
> On Fri, 27 Aug 2021 09:52:18 +0900 Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote:
> >
> > On Thu, Aug 26, 2021 at 6:13 PM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
> > >
> > > After merging the kbuild tree, today's linux-next build (x86_64
> > > allnoconfig) failed like this:
> > >
> > > make[2]: *** No rule to make target 'scripts/mod/empty.o', needed by '__build'.
> > >
> > > Caused by commit
> > >
> > > 624a912f84bc ("kbuild: detect objtool changes correctly and remove .SECONDEXPANSION")
> > >
> > > (at least, reverting that commit fixes it)
> > >
> > > I use a separate object directory and, in this case, it is newly created.
> > >
> > > A build with V=1 and -s removed (and no -j) gives this around the
> > > failure:
> > >
> > > make -f /home/sfr/next/next/scripts/Makefile.build obj=scripts/mod
> > > make[2]: *** No rule to make target 'scripts/mod/empty.o', needed by '__build'. Stop.
> > > make[1]: *** [/home/sfr/next/next/Makefile:1309: prepare0] Error 2
> > >
> > > I have reverted that commit for today.
> >
> >
> > Hmm, it is strange.
> >
> >
> > I re-applied that commit based on today's linux-next
> > (git cherry-pick 624a912f84bc)
> >
> > allnoconfig built successfully.
> >
> >
> > My build log is as follows.
> >
> > Can you tell the exact steps to reproduce the error?
> >
> >
> >
> > masahiro@grover:~/ref/linux-next$ git log -2 --oneline
> > 5046c6516ca2 (HEAD -> tmp) kbuild: detect objtool changes correctly
> > and remove .SECONDEXPANSION
> > 88fac11862d3 (tag: next-20210826, origin/master, origin/HEAD) Add
> > linux-next specific files for 20210826
> > masahiro@grover:~/ref/linux-next$ rm -rf /tmp/foo
> > masahiro@grover:~/ref/linux-next$ make O=/tmp/foo allnoconfig all
>
> I did more or less the same:
>
> $ rm -rf ../x86_64_allnoconfig
> $ mkdir ../x86_64_allnoconfig
> $ make ARCH=x86_64 O=../x86_64_allnoconfig CROSS_COMPILE=x86_64-linux-gnu- allnoconfig
> $ make V=1 ARCH=x86_64 O=../x86_64_allnoconfig CROSS_COMPILE=x86_64-linux-gnu- -O
>
> I do cross builds hosted on a PowerPC LE host.
>
> --
> Cheers,
> Stephen Rothwell




Ah, OK.
Now I understood what was happening.

scripts/mod/ is built before objtool, so
the dependency is not met.

I was previously not able to reproduce it
because a stale objtool was remaining in my source tree.
'make clean' cannot clean up objtool.

I will fix it by tomorrow's linux-next.



--
Best Regards
Masahiro Yamada