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

Nicolas Pitre
2016-04-26T20:48:51Z

On Wed, 27 Apr 2016, Stephen Rothwell wrote:

> Hi Nicolas,
>
> On Tue, 26 Apr 2016 10:40:57 -0400 (EDT) Nicolas Pitre <nicolas.pitre@linaro.org> wrote:
> >
> > If you can reproduce this build failure, could you try a make mrproper
> > and attempt it again? I, too, would like to find an explanation and a
> > way to reproduce.
>
> I reset my build tree to commit 9d67df654092 ("Merge remote-tracking
> branch 'block/for-next'") and the build failed with:
>
> ERROR: ".local_clock" [drivers/vhost/vhost_net.ko] undefined!
> ERROR: ".local_clock" [drivers/misc/cxl/cxl.ko] undefined!
>
> :-(
>
> So I did a "make mrproper" and did the build again.
>
> That built correctly.
>
[...]

OK! After digging and diffing through 750 megabytes of make debug logs
I finally found the explanation. The if_changed directive is useless
against phony targets.

@Stephen: could you replace the revert with the patch below in your tree?

@Michal: could you fold the patch below into commit 2441e78b19 in your tree?

diff --git a/Makefile b/Makefile
index ca46af5cc0..3a7b9a93b2 100644
--- a/Makefile
+++ b/Makefile
@@ -953,7 +953,7 @@ include/generated/autoksyms.h: FORCE
cmd_link-vmlinux = $(CONFIG_SHELL) $< $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux)
quiet_cmd_link-vmlinux = LINK $@

-vmlinux: scripts/link-vmlinux.sh vmlinux_prereq FORCE
+vmlinux: scripts/link-vmlinux.sh vmlinux_prereq $(vmlinux-deps) FORCE
+$(call if_changed,link-vmlinux)

# Build samples along the rest of the kernel