linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@redhat.com>
To: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Peter Foley <pefoley2@pefoley.com>,
	LKML <linux-kernel@vger.kernel.org>,
	wangnan0@huawei.com
Subject: [PATCHv3] tools build: Make fixdep parsing wait for last target
Date: Thu, 1 Dec 2016 14:00:25 +0100	[thread overview]
Message-ID: <20161201130025.GA16430@krava> (raw)
In-Reply-To: <20161129144904.GD2361@redhat.com>

On Tue, Nov 29, 2016 at 12:49:04PM -0200, Arnaldo Carvalho de Melo wrote:
> Em Tue, Nov 29, 2016 at 03:39:35PM +0100, Jiri Olsa escreveu:
> > On Tue, Nov 29, 2016 at 12:33:15PM -0200, Arnaldo Carvalho de Melo wrote:
> > > Em Tue, Nov 29, 2016 at 03:28:08PM +0100, Jiri Olsa escreveu:
> > > > On Mon, Nov 28, 2016 at 05:40:46PM -0200, Arnaldo Carvalho de Melo wrote:
> > > > 
> > > > SNIP
> > > > 
> > > > >   CC       /tmp/build/perf/builtin-buildid-list.o
> > > > >   LD       /tmp/build/perf/pmu-events/pmu-events-in.o
> > > > >   CC       /tmp/build/perf/arch/x86/util/intel-bts.o
> > > > >   CC       /tmp/build/perf/builtin-buildid-cache.o
> > > > >   CC       /tmp/build/perf/builtin-list.o
> > > > >   LD       /tmp/build/perf/arch/x86/util/libperf-in.o
> > > > >   MKDIR    /tmp/build/perf/arch/x86/tests/
> > > > >   CC       /tmp/build/perf/arch/x86/tests/regs_load.o
> > > > > /tmp/build/perf/.plugin_jbd2.o.cmd:3: *** empty variable name.  Stop.
> > > > > Makefile:192: recipe for target '/tmp/build/perf/plugin_jbd2-in.o' failed
> > > > > make[2]: *** [/tmp/build/perf/plugin_jbd2-in.o] Error 2
> > > > > Makefile.perf:591: recipe for target '/tmp/build/perf/libtraceevent-dynamic-list' failed
> > > > > make[1]: *** [/tmp/build/perf/libtraceevent-dynamic-list] Error 2
> > > > > make[1]: *** Waiting for unfinished jobs....
> > > > >   MKDIR    /tmp/build/perf/arch/x86/tests/
> > > > >   CC       /tmp/build/perf/arch/x86/tests/arch-tests.o
> > > > > <SNIP>
> > > > >   CC       /tmp/build/perf/util/pmu.o
> > > > >   CC       /tmp/build/perf/util/pmu-flex.o
> > > > >   LD       /tmp/build/perf/util/libperf-in.o
> > > > >   LD       /tmp/build/perf/libperf-in.o
> > > > > Makefile:108: recipe for target 'install-bin' failed
> > > > > make: *** [install-bin] Error 2
> > > > > make: Leaving directory '/home/acme/git/linux/tools/perf'
> > > > > [acme@jouet linux]$ 
> > > > 
> > > > how about following fix.. it gets rid of the -Wp,MT option completely
> > > > so it should address Peter's issue.. it also makes fixdep more robust
> > > > and makes it wait for first target before spitting out dependencies
> > > 
> > > So this should replace Peter's patch? On top? I'm checking that now...
> > 
> > it's replacement.. also I'll put it into 2 patches
> 
> Ok, just tested, Peter's patch works if I remove ccache, with your patch
> replacing it, everything works, with and without ccache, on f25, and it
> builds on f24 without ccache, in one of the containers I have.
> 

ok, so v3 actually ;-)

the v2 was tricky for the case when fixdep is not available,
so I decided to go with Peter's fix and fixing 'fixdep' tool
to properly parse out the target in case we hit the ccache
error.. we need to be able to do it anyway

please apply this patch before Peter's so we keep clean bisect

thanks,
jirka


---
The fixdep tool among other things replaces the target of
the object in the gcc generated dependency output file.

The parsing code assumes there's only single target in the
rule but this is not always the case as described in here:
  https://gcc.gnu.org/ml/gcc-help/2016-11/msg00099.html

Making the fixdep code smart enough to skip all the possible
targets.

Link: http://lkml.kernel.org/n/tip-anlmi1osaky314m1gu3skdnz@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/build/fixdep.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/tools/build/fixdep.c b/tools/build/fixdep.c
index 1521d36cef0d..734d1547cbae 100644
--- a/tools/build/fixdep.c
+++ b/tools/build/fixdep.c
@@ -49,7 +49,7 @@ static void parse_dep_file(void *map, size_t len)
 	char *end = m + len;
 	char *p;
 	char s[PATH_MAX];
-	int is_target;
+	int is_target, has_target = 0;
 	int saw_any_target = 0;
 	int is_first_dep = 0;
 
@@ -67,7 +67,8 @@ static void parse_dep_file(void *map, size_t len)
 		if (is_target) {
 			/* The /next/ file is the first dependency */
 			is_first_dep = 1;
-		} else {
+			has_target = 1;
+		} else if (has_target) {
 			/* Save this token/filename */
 			memcpy(s, m, p-m);
 			s[p - m] = 0;
-- 
2.7.4

  parent reply	other threads:[~2016-12-01 13:00 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-26 22:20 [PATCH] Fix objtool with clang Peter Foley
2016-11-27 16:14 ` Jiri Olsa
2016-11-28  2:43   ` [PATCH v2] " Peter Foley
2016-11-28 11:39     ` Jiri Olsa
2016-11-28 15:00       ` Arnaldo Carvalho de Melo
2016-11-28 15:25         ` Peter Foley
2016-11-28 16:58           ` Jiri Olsa
2016-11-28 19:40             ` Arnaldo Carvalho de Melo
2016-11-28 20:08               ` Jiri Olsa
2016-11-29  9:32               ` Jiri Olsa
2016-11-29  9:58                 ` Jiri Olsa
2016-11-29 14:28               ` Jiri Olsa
2016-11-29 14:33                 ` Arnaldo Carvalho de Melo
2016-11-29 14:39                   ` Jiri Olsa
2016-11-29 14:49                     ` Arnaldo Carvalho de Melo
2016-11-29 15:24                       ` Jiri Olsa
2016-12-01 13:00                       ` Jiri Olsa [this message]
2016-12-01 17:48                         ` [PATCHv3] tools build: Make fixdep parsing wait for last target Peter Foley
2016-12-01 18:53                           ` Arnaldo Carvalho de Melo
2016-12-02  8:49                             ` Jiri Olsa
2016-12-02  9:15                             ` Jiri Olsa
2016-12-02 15:10                               ` Arnaldo Carvalho de Melo
2016-12-06  8:20                         ` [tip:perf/core] " tip-bot for Jiri Olsa
2016-11-28 19:35           ` [PATCH v2] Fix objtool with clang Arnaldo Carvalho de Melo
2016-12-06  8:20     ` [tip:perf/core] tools build: Fix objtool build " tip-bot for Peter Foley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161201130025.GA16430@krava \
    --to=jolsa@redhat.com \
    --cc=acme@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pefoley2@pefoley.com \
    --cc=wangnan0@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).