public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@infradead.org>
To: Bernd Petrovitsch <bernd@sysprog.at>
Cc: Kusanagi Kouichi <slash@ac.auone-net.jp>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Paul Mackerras <paulus@samba.org>, Ingo Molnar <mingo@elte.hu>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] perf tools: Fix build error on read only source.
Date: Wed, 18 Aug 2010 14:19:18 -0300	[thread overview]
Message-ID: <20100818171917.GH9410@ghostprotocols.net> (raw)
In-Reply-To: <1282145141.5822.125.camel@thorin>

Em Wed, Aug 18, 2010 at 05:25:41PM +0200, Bernd Petrovitsch escreveu:
> On Mit, 2010-08-18 at 11:14 -0300, Arnaldo Carvalho de Melo wrote:
> > But with this we're back using $(shell mkdir), Bernd, ideas on how to
> > properly fix this, probably the feature tests have to be triggered by
> > the first rule and probably be something like:
> > 
> > $(phony feature-tests): 
> First, this should probably have been:
> .PHONY: feature-tests

Humm, isn't $(phony feature-tests): variation valid and shorter, humm,
yeah, seems to be for !GNU make :-\

(http://makepp.sourceforge.net/1.18/t_phony.html)

> > -include feature-tests.mak
> > 
> > DIRECTORY_DEPS = $(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h
> > $(DIRECTORY_DEPS): $(sort $(dir $(DIRECTORY_DEPS))) feature-tests
> >
> > completely untested! Unsure if this would trigger the mkdir first tho.
> >
> > Right?
> 
> This doesn't trigger it. I played around a little bit and didn't find
> any way to trigger any rule.
> The "problem" is IMHO that "try-cc" is used in "ifeq" clauses and these
> are evaluated as `make` goes through the Makefile before the first
> (real) rule (like "all") is triggered.
> 
> So ATM I see only 3 possibilities:
> 1) The old (aka ugly) "solution" from above.
> 2) Add to try-cc something like
> 	[ -d "$(OUTPUT)" ] || mkdir -p "$(OUTPUT)" 2>/dev/null;
> before the line with the "echo".
> The '[ -d "$(OUTPUT)" ]' is not really necessary as `mkdir -p` is a
> no-op on existing directories.

Probably 2) is the best, since we'll end up creating that dir anyway.
But as PeterZ pointed out, this is all moot since the kernel behaviour
for O= is to expect the directory specified to already exist.

We're left with the task of checking that and providing a meaningful
answer if not, like this:

[acme@emilia linux-2.6-tip]$ ls -la ~/git/build/foo
ls: cannot access /home/acme/git/build/foo: No such file or directory
[acme@emilia linux-2.6-tip]$ make O=~/git/build/foo
/bin/sh: line 0: cd: /home/acme/git/build/foo: No such file or directory
Makefile:117: *** output directory "/home/acme/git/build/foo" does not exist.  Stop.
[acme@emilia linux-2.6-tip]$

> 3) Another possibility would be to move the temporary file into the /tmp
> directory as into
> ----  snip  ----
> try-cc = $(shell sh -c						  \
> 	'TMP="/tmp/$(TMPOUT).$$$$";		 		  \
> 	 echo "$(1)" |						  \
> 	 $(CC) -x c - $(2) -o "$$TMP" > /dev/null 2>&1 && echo y; \
> 	 rm -f "$$TMP"')
> ----  snip  ----
> If yes, we could use (and thus depend on) `mktemp` - which is usual
> shell script way to generate unique temporary filename - as in

There is no use of mktemp in Kbuild, that I try hard to use as reference
here.

- Arnaldo

  reply	other threads:[~2010-08-18 17:19 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-17 18:18 [PATCH] perf tools: Fix build error on read only source Arnaldo Carvalho de Melo
2010-08-18 12:37 ` Kusanagi Kouichi
2010-08-18 12:40   ` Peter Zijlstra
2010-08-18 14:16     ` Arnaldo Carvalho de Melo
2010-08-18 14:27       ` Peter Zijlstra
2010-08-18 16:56         ` Arnaldo Carvalho de Melo
2010-08-18 17:01           ` Arnaldo Carvalho de Melo
2010-08-18 19:09             ` Arnaldo Carvalho de Melo
2010-08-19  9:02               ` Bernd Petrovitsch
2010-08-18 14:14   ` Arnaldo Carvalho de Melo
2010-08-18 15:25     ` Bernd Petrovitsch
2010-08-18 17:19       ` Arnaldo Carvalho de Melo [this message]
2010-08-19 10:31         ` Bernd Petrovitsch
2010-08-19 14:13           ` Arnaldo Carvalho de Melo
  -- strict thread matches above, loose matches on Subject: below --
2010-08-16 12:40 Kusanagi Kouichi
2010-08-16 15:24 ` Arnaldo Carvalho de Melo
2010-08-17 12:57   ` Kusanagi Kouichi
2010-08-17 14:08   ` Kusanagi Kouichi
2010-08-17 14:17     ` Arnaldo Carvalho de Melo

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=20100818171917.GH9410@ghostprotocols.net \
    --to=acme@infradead.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=bernd@sysprog.at \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    --cc=slash@ac.auone-net.jp \
    /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