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

From: Jiri Olsa <[email-masked]>
Date: Sun, 17 Apr 2016 15:04:05 +0200

On Sun, Apr 17, 2016 at 02:12:07PM +0200, Jiri Olsa wrote:
> On Fri, Apr 15, 2016 at 06:28:31PM -0300, Arnaldo Carvalho de Melo wrote:
> > Em Fri, Apr 15, 2016 at 06:15:42PM -0300, Arnaldo Carvalho de Melo escreveu:
> > > Em Thu, Apr 14, 2016 at 12:14:18PM +1000, Stephen Rothwell escreveu:
> > > > Hi all,
> > > > 
> > > > After merging the tip tree, today's linux-next build (powerpc64le perf)
> > > > failed like this:
> > > > 
> > > > make[3]: *** No rule to make target '/home/sfr/next/perf/arch/x86/include/generated/asm/syscalls_64.c', needed by '/home/sfr/next/perf/util/syscalltbl.o'.  Stop.
> > > > 
> > > > (I build in /home/sfr/next/next with objects in /home/sfr/next/perf.)
> > > > 
> > > > Presumably caused by commit
> > > > 
> > > >   1b700c997500 ("perf tools: Build syscall table .c header from kernel's syscall_64.tbl")
> > > > 
> > > > I have reverted that commit for today (which fixes my build problem but
> > > > may not be overall correct).
> > > 
> > > Right, I'm trying to figure out how to bet fix that, one way would be to
> > > do:
> > 
> > Jiri, I think this is enough, i.e. I think we make sure, just like the
> > kernel, that the archheaders target in tools/perf/arch/*/Makefile is
> > called before doing all the other build, no?
> > 
> > I.e. when we get to build syscalltbl.o the syscalls_64.c file will be
> > built already, limited testing seems to agree with this :-)
> > 
> > - Arnaldo
> >  
> > > diff --git a/tools/perf/util/Build b/tools/perf/util/Build
> > > index 85a9ab62e23f..7fc4ac304ed6 100644
> > > --- a/tools/perf/util/Build
> > > +++ b/tools/perf/util/Build
> > > @@ -150,7 +150,7 @@ CFLAGS_libstring.o     += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ET
> > >  CFLAGS_hweight.o       += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
> > >  CFLAGS_parse-events.o  += -Wno-redundant-decls
> > >  
> > > -$(OUTPUT)util/syscalltbl.o: util/syscalltbl.c arch/x86/entry/syscalls/syscall_64.tbl $(OUTPUT)arch/x86/include/generated/asm/syscalls_64.c FORCE
> > > +$(OUTPUT)util/syscalltbl.o: util/syscalltbl.c FORCE
> 
> yep, having arch specific target in generic Build file is wrong
> I'll have ppc64le available later today, I'll check on that

it looks ok, you can also now remove the whole syscalltbl.o override

and archheaders needs to be called before the build starts,
which is the case right now

thanks,
jirka

---
diff --git a/tools/perf/util/Build b/tools/perf/util/Build
index 85a9ab62e23f..90229a88f969 100644
--- a/tools/perf/util/Build
+++ b/tools/perf/util/Build
@@ -150,10 +150,6 @@ CFLAGS_libstring.o     += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ET
 CFLAGS_hweight.o       += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))"
 CFLAGS_parse-events.o  += -Wno-redundant-decls
 
-$(OUTPUT)util/syscalltbl.o: util/syscalltbl.c arch/x86/entry/syscalls/syscall_64.tbl $(OUTPUT)arch/x86/include/generated/asm/syscalls_64.c FORCE
-	$(call rule_mkdir)
-	$(call if_changed_dep,cc_o_c)
-
 $(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE
 	$(call rule_mkdir)
 	$(call if_changed_dep,cc_o_c)