* [PATCH] perf tools: Don't use brace expansion.
@ 2010-08-16 12:41 Kusanagi Kouichi
2010-08-16 13:30 ` Peter Zijlstra
` (2 more replies)
0 siblings, 3 replies; 15+ messages in thread
From: Kusanagi Kouichi @ 2010-08-16 12:41 UTC (permalink / raw)
To: Peter Zijlstra, Paul Mackerras, Ingo Molnar,
Arnaldo Carvalho de Melo
Cc: linux-kernel
DASH doesn't support brace expansion.
Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp>
---
tools/perf/Makefile | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 41abb90..8fa851b 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -157,8 +157,10 @@ all::
#
# Define NO_DWARF if you do not want debug-info analysis feature at all.
-$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null)
-$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null)
+$(shell sh -c 'mkdir -p $(OUTPUT)scripts/perl/Perf-Trace-Util/' 2> /dev/null)
+$(shell sh -c 'mkdir -p $(OUTPUT)scripts/python/Perf-Trace-Util/' 2> /dev/null)
+$(shell sh -c 'mkdir -p $(OUTPUT)util/ui/browsers/' 2> /dev/null)
+$(shell sh -c 'mkdir -p $(OUTPUT)util/scripting-engines/' 2> /dev/null)
$(shell sh -c 'mkdir $(OUTPUT)bench' 2> /dev/null)
$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
--
1.7.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 12:41 [PATCH] perf tools: Don't use brace expansion Kusanagi Kouichi @ 2010-08-16 13:30 ` Peter Zijlstra 2010-08-16 14:09 ` Bernd Petrovitsch 2010-08-16 15:24 ` [PATCH] perf tools: Don't use brace expansion Arnaldo Carvalho de Melo 2 siblings, 0 replies; 15+ messages in thread From: Peter Zijlstra @ 2010-08-16 13:30 UTC (permalink / raw) To: Kusanagi Kouichi Cc: Paul Mackerras, Ingo Molnar, Arnaldo Carvalho de Melo, linux-kernel On Mon, 2010-08-16 at 21:41 +0900, Kusanagi Kouichi wrote: > DASH doesn't support brace expansion. I really hate these second rate shells, but I guess we could do this on the grounds of POSIX sh not specifying the brace expansion. > Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp> > --- > tools/perf/Makefile | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/Makefile b/tools/perf/Makefile > index 41abb90..8fa851b 100644 > --- a/tools/perf/Makefile > +++ b/tools/perf/Makefile > @@ -157,8 +157,10 @@ all:: > # > # Define NO_DWARF if you do not want debug-info analysis feature at all. > > -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) > -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)scripts/perl/Perf-Trace-Util/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)scripts/python/Perf-Trace-Util/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)util/ui/browsers/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)util/scripting-engines/' 2> /dev/null) > $(shell sh -c 'mkdir $(OUTPUT)bench' 2> /dev/null) > > $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 12:41 [PATCH] perf tools: Don't use brace expansion Kusanagi Kouichi 2010-08-16 13:30 ` Peter Zijlstra @ 2010-08-16 14:09 ` Bernd Petrovitsch 2010-08-16 14:30 ` Peter Zijlstra 2010-08-16 15:24 ` [PATCH] perf tools: Don't use brace expansion Arnaldo Carvalho de Melo 2 siblings, 1 reply; 15+ messages in thread From: Bernd Petrovitsch @ 2010-08-16 14:09 UTC (permalink / raw) To: Kusanagi Kouichi Cc: Peter Zijlstra, Paul Mackerras, Ingo Molnar, Arnaldo Carvalho de Melo, linux-kernel On Mon, 2010-08-16 at 21:41 +0900, Kusanagi Kouichi wrote: > DASH doesn't support brace expansion. > > Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp> > --- > tools/perf/Makefile | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/Makefile b/tools/perf/Makefile > index 41abb90..8fa851b 100644 > --- a/tools/perf/Makefile > +++ b/tools/perf/Makefile > @@ -157,8 +157,10 @@ all:: > # > # Define NO_DWARF if you do not want debug-info analysis feature at all. > > -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) > -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)scripts/perl/Perf-Trace-Util/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)scripts/python/Perf-Trace-Util/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)util/ui/browsers/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)util/scripting-engines/' 2> /dev/null) > $(shell sh -c 'mkdir $(OUTPUT)bench' 2> /dev/null) > > $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE The other solution is to use standard-make features like in mkdir -p $(foreach d,ui/browsers scripting-engines,$(OUTPUT)util/$(d)/) 2> /dev/null Is there actually a specific reason for the $(shell sh -c '...') around? It looks superflous. Bernd -- Bernd Petrovitsch Email : bernd@petrovitsch.priv.at LUGA : http://www.luga.at ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 14:09 ` Bernd Petrovitsch @ 2010-08-16 14:30 ` Peter Zijlstra 2010-08-16 14:54 ` Bernd Petrovitsch 0 siblings, 1 reply; 15+ messages in thread From: Peter Zijlstra @ 2010-08-16 14:30 UTC (permalink / raw) To: Bernd Petrovitsch Cc: Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, Arnaldo Carvalho de Melo, linux-kernel On Mon, 2010-08-16 at 16:09 +0200, Bernd Petrovitsch wrote: > > -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) > > -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) > The other solution is to use standard-make features like in > mkdir -p $(foreach d,ui/browsers scripting-engines,$(OUTPUT)util/$(d)/) 2> /dev/null > > Is there actually a specific reason for the > $(shell sh -c '...') > around? > It looks superflous. I think the reason is is that nobody who touched that file really knew make all that well. Your version looks fine to me. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 14:30 ` Peter Zijlstra @ 2010-08-16 14:54 ` Bernd Petrovitsch 2010-08-16 15:29 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 15+ messages in thread From: Bernd Petrovitsch @ 2010-08-16 14:54 UTC (permalink / raw) To: Peter Zijlstra Cc: Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, Arnaldo Carvalho de Melo, linux-kernel On Mon, 2010-08-16 at 16:30 +0200, Peter Zijlstra wrote: > On Mon, 2010-08-16 at 16:09 +0200, Bernd Petrovitsch wrote: > > > > -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) > > > -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) > > > The other solution is to use standard-make features like in > > mkdir -p $(foreach d,ui/browsers scripting-engines,$(OUTPUT)util/$(d)/) 2> /dev/null > > > > Is there actually a specific reason for the > > $(shell sh -c '...') > > around? > > It looks superflous. > > I think the reason is is that nobody who touched that file really knew > make all that well. Your version looks fine to me. Ah, the reason is that they are not part of a rule but on the top-level (and thus always executed). Bernd -- Bernd Petrovitsch Email : bernd@petrovitsch.priv.at LUGA : http://www.luga.at ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 14:54 ` Bernd Petrovitsch @ 2010-08-16 15:29 ` Arnaldo Carvalho de Melo 2010-08-16 15:43 ` Bernd Petrovitsch 0 siblings, 1 reply; 15+ messages in thread From: Arnaldo Carvalho de Melo @ 2010-08-16 15:29 UTC (permalink / raw) To: Bernd Petrovitsch Cc: Peter Zijlstra, Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, linux-kernel Em Mon, Aug 16, 2010 at 04:54:38PM +0200, Bernd Petrovitsch escreveu: > On Mon, 2010-08-16 at 16:30 +0200, Peter Zijlstra wrote: > > On Mon, 2010-08-16 at 16:09 +0200, Bernd Petrovitsch wrote: > > > > -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) > > > > -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) > > > The other solution is to use standard-make features like in > > > mkdir -p $(foreach d,ui/browsers scripting-engines,$(OUTPUT)util/$(d)/) 2> /dev/null > > > Is there actually a specific reason for the > > > $(shell sh -c '...') > > > around? > > > It looks superflous. > > I think the reason is is that nobody who touched that file really knew > > make all that well. Your version looks fine to me. > Ah, the reason is that they are not part of a rule but on the top-level > (and thus always executed). So it worked by luck! /me runs :-P More seriously, so there is a reason for that to be like that and you're not aware of any other shorter or more convenient way of achieving that goal, right? - Arnaldo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 15:29 ` Arnaldo Carvalho de Melo @ 2010-08-16 15:43 ` Bernd Petrovitsch 2010-08-16 15:50 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 15+ messages in thread From: Bernd Petrovitsch @ 2010-08-16 15:43 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Peter Zijlstra, Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, linux-kernel On Mon, 2010-08-16 at 12:29 -0300, Arnaldo Carvalho de Melo wrote: > Em Mon, Aug 16, 2010 at 04:54:38PM +0200, Bernd Petrovitsch escreveu: > > On Mon, 2010-08-16 at 16:30 +0200, Peter Zijlstra wrote: > > > On Mon, 2010-08-16 at 16:09 +0200, Bernd Petrovitsch wrote: > > > > > -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) > > > > > -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) > > > > > The other solution is to use standard-make features like in > > > > mkdir -p $(foreach d,ui/browsers scripting-engines,$(OUTPUT)util/$(d)/) 2> /dev/null > > > > > Is there actually a specific reason for the > > > > $(shell sh -c '...') > > > > around? > > > > It looks superflous. > > > > I think the reason is is that nobody who touched that file really knew > > > make all that well. Your version looks fine to me. > > > Ah, the reason is that they are not part of a rule but on the top-level > > (and thus always executed). > > So it worked by luck! /me runs :-P IMHO it's not really luck with GNU-make. > More seriously, so there is a reason for that to be like that and you're > not aware of any other shorter or more convenient way of achieving that One (obvious) alternative is to have rules triggering on the non-existence of these directories. > goal, right? Hmm, I'm not a "perf person". Which are the sufficient use-cases/tests that one can do to play around with the Makefile? `make -C tools/perf` is probably not enough. Any hints anyone? Bernd -- Bernd Petrovitsch Email : bernd@petrovitsch.priv.at LUGA : http://www.luga.at ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 15:43 ` Bernd Petrovitsch @ 2010-08-16 15:50 ` Arnaldo Carvalho de Melo 2010-08-17 11:58 ` Bernd Petrovitsch 0 siblings, 1 reply; 15+ messages in thread From: Arnaldo Carvalho de Melo @ 2010-08-16 15:50 UTC (permalink / raw) To: Bernd Petrovitsch Cc: Peter Zijlstra, Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, linux-kernel Em Mon, Aug 16, 2010 at 05:43:47PM +0200, Bernd Petrovitsch escreveu: > On Mon, 2010-08-16 at 12:29 -0300, Arnaldo Carvalho de Melo wrote: > > More seriously, so there is a reason for that to be like that and you're > > not aware of any other shorter or more convenient way of achieving that > One (obvious) alternative is to have rules triggering on the > non-existence of these directories. Can you provide those please? > > goal, right? > Hmm, I'm not a "perf person". Which are the sufficient use-cases/tests > that one can do to play around with the Makefile? > > `make -C tools/perf` is probably not enough. Right, not enough, what those mkdir calls were added for was exactly for a different usecase: make -C tools/perf -O=~/build/perf/ So that it doesn't pollutes the source code directories with the object files, behaving in a similar fashion as when using O= in the kernel proper. - Arnaldo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 15:50 ` Arnaldo Carvalho de Melo @ 2010-08-17 11:58 ` Bernd Petrovitsch 2010-08-17 15:42 ` Arnaldo Carvalho de Melo 2010-08-18 8:18 ` [tip:perf/urgent] perf tools: Fix build on POSIX shells tip-bot for Bernd Petrovitsch 0 siblings, 2 replies; 15+ messages in thread From: Bernd Petrovitsch @ 2010-08-17 11:58 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Peter Zijlstra, Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, linux-kernel On Mon, 2010-08-16 at 12:50 -0300, Arnaldo Carvalho de Melo wrote: > Em Mon, Aug 16, 2010 at 05:43:47PM +0200, Bernd Petrovitsch escreveu: > > On Mon, 2010-08-16 at 12:29 -0300, Arnaldo Carvalho de Melo wrote: > > > More seriously, so there is a reason for that to be like that and you're > > > not aware of any other shorter or more convenient way of achieving that > > > One (obvious) alternative is to have rules triggering on the > > non-existence of these directories. > > Can you provide those please? [...] > Right, not enough, what those mkdir calls were added for was exactly for > a different usecase: > > make -C tools/perf -O=~/build/perf/ Thanks. The following patch below at the end works for me. Alas, it is against vanilla main line. ---- snip ---- Replace the global $(shell ...) lines quite at the top creating the output directories with real rules. Signed-of-by: Bernd Petrovitsch <bernd@sysprog.at> --- tools/perf/Makefile | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 230a0f7..c039fbc 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -157,10 +157,6 @@ all:: # # Define NO_DWARF if you do not want debug-info analysis feature at all. -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) -$(shell sh -c 'mkdir $(OUTPUT)bench' 2> /dev/null) - $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) -include $(OUTPUT)PERF-VERSION-FILE @@ -186,8 +182,6 @@ ifeq ($(ARCH),x86_64) ARCH := x86 endif -$(shell sh -c 'mkdir -p $(OUTPUT)arch/$(ARCH)/util/' 2> /dev/null) - # CFLAGS and LDFLAGS are for the users to override from the command line. # @@ -1012,6 +1006,13 @@ $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H) $(patsubst perf-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h) builtin-revert.o wt-status.o: wt-status.h +# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So +# we depend the various files onto their directories. +$(LIB_OBJS) $(BUILTIN_OBJS): $(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS))) +# In the second step, we make a rule to actually create these directories +$(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS))): + mkdir -p $@ 2>/dev/null + $(LIB_FILE): $(LIB_OBJS) $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS) ---- snip ---- Bernd -- mobile: +43 664 4416156 http://www.sysprog.at/ Linux Software Development, Consulting and Services ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-17 11:58 ` Bernd Petrovitsch @ 2010-08-17 15:42 ` Arnaldo Carvalho de Melo 2010-08-17 16:09 ` Bernd Petrovitsch 2010-08-18 8:18 ` [tip:perf/urgent] perf tools: Fix build on POSIX shells tip-bot for Bernd Petrovitsch 1 sibling, 1 reply; 15+ messages in thread From: Arnaldo Carvalho de Melo @ 2010-08-17 15:42 UTC (permalink / raw) To: Bernd Petrovitsch Cc: Peter Zijlstra, Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, linux-kernel Em Tue, Aug 17, 2010 at 01:58:00PM +0200, Bernd Petrovitsch escreveu: > On Mon, 2010-08-16 at 12:50 -0300, Arnaldo Carvalho de Melo wrote: > > Em Mon, Aug 16, 2010 at 05:43:47PM +0200, Bernd Petrovitsch escreveu: > > > On Mon, 2010-08-16 at 12:29 -0300, Arnaldo Carvalho de Melo wrote: > > > > More seriously, so there is a reason for that to be like that and you're > > > > not aware of any other shorter or more convenient way of achieving that > > > > > One (obvious) alternative is to have rules triggering on the > > > non-existence of these directories. > > > > Can you provide those please? > [...] > > Right, not enough, what those mkdir calls were added for was exactly for > > a different usecase: > > > > make -C tools/perf -O=~/build/perf/ > > Thanks. > > The following patch below at the end works for me. Alas, it is against > vanilla main line. Adding $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h there, to have it look: +# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So +# we depend the various files onto their directories. +$(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h: $(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS))) +# In the second step, we make a rule to actually create these directories +$(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS))): + mkdir -p $@ 2>/dev/null + As it was failing when I did: rm -rf ~/build/perf make -C tools/perf O=~/build/perf With that it retains the existing functionality, Thanks, - Arnaldo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-17 15:42 ` Arnaldo Carvalho de Melo @ 2010-08-17 16:09 ` Bernd Petrovitsch 2010-08-17 18:16 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 15+ messages in thread From: Bernd Petrovitsch @ 2010-08-17 16:09 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Peter Zijlstra, Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, linux-kernel On Die, 2010-08-17 at 12:42 -0300, Arnaldo Carvalho de Melo wrote: > Em Tue, Aug 17, 2010 at 01:58:00PM +0200, Bernd Petrovitsch escreveu: [...] > > The following patch below at the end works for me. Alas, it is against > > vanilla main line. > > Adding $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h there, to have it look: > > +# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So > +# we depend the various files onto their directories. > +$(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h: $(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS))) Hmm, that adds that $(OUTPUT)PERF-VERSION-FILE and $(OUTPUT)common-cmds.h (also) depends on the subdirectories of the other objects (and thus it works always because at least one of them is a subdirectory of $(OUTPUT)). To be 110% anal, it should look like e.g. +$(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h: $(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS)) $(OUTPUT)) or actually all targets. > +# In the second step, we make a rule to actually create these directories > +$(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS))): > + mkdir -p $@ 2>/dev/null > + BTW there is no automatic variable or other make-construct to refer in the dependencies on the own target. Therefore the copy-paste-the- variables solution. Perhaps an additional variable reduces clutter (and eases maintenance)? +# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So +# we depend the various files onto their directories. +DIRECTORY_DEPS = $(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h +$(DIRECTORY_DEPS): $(sort $(dir $(DIRECTORY_DEPS))) +# In the second step, we make a rule to actually create these directories +$(sort $(dir $(DIRECTORY_DEPS))): + mkdir -p $@ 2>/dev/null + That should guarantee that all directories from the targets are created. > As it was failing when I did: > > rm -rf ~/build/perf > make -C tools/perf O=~/build/perf > > With that it retains the existing functionality, Ah, I `mkdir`ed the output directory explicitly before the `make` (and after the `rm -rf`). BTW which is the preferred tree to base patches on (for the "perf" subsystem)? Bernd -- mobile: +43 664 4416156 http://www.sysprog.at/ Linux Software Development, Consulting and Services ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-17 16:09 ` Bernd Petrovitsch @ 2010-08-17 18:16 ` Arnaldo Carvalho de Melo 2010-08-18 9:47 ` Bernd Petrovitsch 0 siblings, 1 reply; 15+ messages in thread From: Arnaldo Carvalho de Melo @ 2010-08-17 18:16 UTC (permalink / raw) To: Bernd Petrovitsch Cc: Peter Zijlstra, Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, linux-kernel Em Tue, Aug 17, 2010 at 06:09:49PM +0200, Bernd Petrovitsch escreveu: > On Die, 2010-08-17 at 12:42 -0300, Arnaldo Carvalho de Melo wrote: > > +# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So > > +# we depend the various files onto their directories. > > +$(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h: $(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS))) > Hmm, that adds that $(OUTPUT)PERF-VERSION-FILE and > $(OUTPUT)common-cmds.h (also) depends on the subdirectories of the other > objects (and thus it works always because at least one of them is a > subdirectory of $(OUTPUT)). > To be 110% anal, it should look like e.g. > +$(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h: $(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS)) $(OUTPUT)) > or actually all targets. > > +# In the second step, we make a rule to actually create these directories > > +$(sort $(dir $(LIB_OBJS) $(BUILTIN_OBJS))): > > + mkdir -p $@ 2>/dev/null > BTW there is no automatic variable or other make-construct to refer in > the dependencies on the own target. Therefore the copy-paste-the- > variables solution. > Perhaps an additional variable reduces clutter (and eases maintenance)? > +# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So > +# we depend the various files onto their directories. > +DIRECTORY_DEPS = $(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h > +$(DIRECTORY_DEPS): $(sort $(dir $(DIRECTORY_DEPS))) > +# In the second step, we make a rule to actually create these directories > +$(sort $(dir $(DIRECTORY_DEPS))): > + mkdir -p $@ 2>/dev/null > That should guarantee that all directories from the targets are created. > > As it was failing when I did: > > rm -rf ~/build/perf > > make -C tools/perf O=~/build/perf > > With that it retains the existing functionality, > Ah, I `mkdir`ed the output directory explicitly before the `make` (and > after the `rm -rf`). > BTW which is the preferred tree to base patches on (for the "perf" > subsystem)? git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip perf/urgent for 2.6.36 perf/core for 2.6.37 I'm targeting perf/urgent for this fix. Or git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 Sometimes, when Ingo is busy and patches accumulate, perf/{core,urgent} are where I put things to go to the branches with the same names on his tree. Please look if patch is OK with you. - Arnaldo commit 033a273f9836b592dd568abd0f655be469d66704 Author: Bernd Petrovitsch <bernd@sysprog.at> Date: Tue Aug 17 12:22:08 2010 -0300 perf tools: Fix build on POSIX shells POSIX sh does not specify the brace expansion, so fix it by replacing the global $(shell ...) lines quite at the top creating the output directories with real rules. Cc: Ingo Molnar <mingo@elte.hu> Cc: Kusanagi Kouichi <slash@ac.auone-net.jp> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1282046280.5822.4.camel@thorin> Signed-off-by: Bernd Petrovitsch <bernd@sysprog.at> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 41abb90..dcb9700 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -157,10 +157,6 @@ all:: # # Define NO_DWARF if you do not want debug-info analysis feature at all. -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) -$(shell sh -c 'mkdir $(OUTPUT)bench' 2> /dev/null) - $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) -include $(OUTPUT)PERF-VERSION-FILE @@ -186,8 +182,6 @@ ifeq ($(ARCH),x86_64) ARCH := x86 endif -$(shell sh -c 'mkdir -p $(OUTPUT)arch/$(ARCH)/util/' 2> /dev/null) - # CFLAGS and LDFLAGS are for the users to override from the command line. # @@ -268,6 +262,7 @@ export prefix bindir sharedir sysconfdir CC = $(CROSS_COMPILE)gcc AR = $(CROSS_COMPILE)ar RM = rm -f +MKDIR = mkdir TAR = tar FIND = find INSTALL = install @@ -838,6 +833,7 @@ ifndef V QUIET_CC = @echo ' ' CC $@; QUIET_AR = @echo ' ' AR $@; QUIET_LINK = @echo ' ' LINK $@; + QUIET_MKDIR = @echo ' ' MKDIR $@; QUIET_BUILT_IN = @echo ' ' BUILTIN $@; QUIET_GEN = @echo ' ' GEN $@; QUIET_SUBDIR0 = +@subdir= @@ -1012,6 +1008,14 @@ $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H) $(patsubst perf-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h) builtin-revert.o wt-status.o: wt-status.h +# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So +# we depend the various files onto their directories. +DIRECTORY_DEPS = $(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h +$(DIRECTORY_DEPS): $(sort $(dir $(DIRECTORY_DEPS))) +# In the second step, we make a rule to actually create these directories +$(sort $(dir $(DIRECTORY_DEPS))): + $(QUIET_MKDIR)$(MKDIR) -p $@ 2>/dev/null + $(LIB_FILE): $(LIB_OBJS) $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS) ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-17 18:16 ` Arnaldo Carvalho de Melo @ 2010-08-18 9:47 ` Bernd Petrovitsch 0 siblings, 0 replies; 15+ messages in thread From: Bernd Petrovitsch @ 2010-08-18 9:47 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Peter Zijlstra, Kusanagi Kouichi, Paul Mackerras, Ingo Molnar, linux-kernel On Die, 2010-08-17 at 15:16 -0300, Arnaldo Carvalho de Melo wrote: [...] > Please look if patch is OK with you. FWIW now, I'm fully OK with it. Bernd -- mobile: +43 664 4416156 http://www.sysprog.at/ Linux Software Development, Consulting and Services ^ permalink raw reply [flat|nested] 15+ messages in thread
* [tip:perf/urgent] perf tools: Fix build on POSIX shells 2010-08-17 11:58 ` Bernd Petrovitsch 2010-08-17 15:42 ` Arnaldo Carvalho de Melo @ 2010-08-18 8:18 ` tip-bot for Bernd Petrovitsch 1 sibling, 0 replies; 15+ messages in thread From: tip-bot for Bernd Petrovitsch @ 2010-08-18 8:18 UTC (permalink / raw) To: linux-tip-commits Cc: acme, linux-kernel, paulus, hpa, mingo, slash, peterz, bernd, tglx, mingo Commit-ID: 033a273f9836b592dd568abd0f655be469d66704 Gitweb: http://git.kernel.org/tip/033a273f9836b592dd568abd0f655be469d66704 Author: Bernd Petrovitsch <bernd@sysprog.at> AuthorDate: Tue, 17 Aug 2010 12:22:08 -0300 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Tue, 17 Aug 2010 12:22:08 -0300 perf tools: Fix build on POSIX shells POSIX sh does not specify the brace expansion, so fix it by replacing the global $(shell ...) lines quite at the top creating the output directories with real rules. Cc: Ingo Molnar <mingo@elte.hu> Cc: Kusanagi Kouichi <slash@ac.auone-net.jp> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1282046280.5822.4.camel@thorin> Signed-off-by: Bernd Petrovitsch <bernd@sysprog.at> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Makefile | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-) diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 41abb90..dcb9700 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -157,10 +157,6 @@ all:: # # Define NO_DWARF if you do not want debug-info analysis feature at all. -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) -$(shell sh -c 'mkdir $(OUTPUT)bench' 2> /dev/null) - $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) -include $(OUTPUT)PERF-VERSION-FILE @@ -186,8 +182,6 @@ ifeq ($(ARCH),x86_64) ARCH := x86 endif -$(shell sh -c 'mkdir -p $(OUTPUT)arch/$(ARCH)/util/' 2> /dev/null) - # CFLAGS and LDFLAGS are for the users to override from the command line. # @@ -268,6 +262,7 @@ export prefix bindir sharedir sysconfdir CC = $(CROSS_COMPILE)gcc AR = $(CROSS_COMPILE)ar RM = rm -f +MKDIR = mkdir TAR = tar FIND = find INSTALL = install @@ -838,6 +833,7 @@ ifndef V QUIET_CC = @echo ' ' CC $@; QUIET_AR = @echo ' ' AR $@; QUIET_LINK = @echo ' ' LINK $@; + QUIET_MKDIR = @echo ' ' MKDIR $@; QUIET_BUILT_IN = @echo ' ' BUILTIN $@; QUIET_GEN = @echo ' ' GEN $@; QUIET_SUBDIR0 = +@subdir= @@ -1012,6 +1008,14 @@ $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H) $(patsubst perf-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h) builtin-revert.o wt-status.o: wt-status.h +# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So +# we depend the various files onto their directories. +DIRECTORY_DEPS = $(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h +$(DIRECTORY_DEPS): $(sort $(dir $(DIRECTORY_DEPS))) +# In the second step, we make a rule to actually create these directories +$(sort $(dir $(DIRECTORY_DEPS))): + $(QUIET_MKDIR)$(MKDIR) -p $@ 2>/dev/null + $(LIB_FILE): $(LIB_OBJS) $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS) ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH] perf tools: Don't use brace expansion. 2010-08-16 12:41 [PATCH] perf tools: Don't use brace expansion Kusanagi Kouichi 2010-08-16 13:30 ` Peter Zijlstra 2010-08-16 14:09 ` Bernd Petrovitsch @ 2010-08-16 15:24 ` Arnaldo Carvalho de Melo 2 siblings, 0 replies; 15+ messages in thread From: Arnaldo Carvalho de Melo @ 2010-08-16 15:24 UTC (permalink / raw) To: Kusanagi Kouichi Cc: Peter Zijlstra, Paul Mackerras, Ingo Molnar, linux-kernel Em Mon, Aug 16, 2010 at 09:41:00PM +0900, Kusanagi Kouichi escreveu: > DASH doesn't support brace expansion. Ok, I guess this one is OK :-) Will merge. - Arnaldo > Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp> > --- > tools/perf/Makefile | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/Makefile b/tools/perf/Makefile > index 41abb90..8fa851b 100644 > --- a/tools/perf/Makefile > +++ b/tools/perf/Makefile > @@ -157,8 +157,10 @@ all:: > # > # Define NO_DWARF if you do not want debug-info analysis feature at all. > > -$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null) > -$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)scripts/perl/Perf-Trace-Util/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)scripts/python/Perf-Trace-Util/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)util/ui/browsers/' 2> /dev/null) > +$(shell sh -c 'mkdir -p $(OUTPUT)util/scripting-engines/' 2> /dev/null) > $(shell sh -c 'mkdir $(OUTPUT)bench' 2> /dev/null) > > $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE > -- > 1.7.1 ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2010-08-18 9:47 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-08-16 12:41 [PATCH] perf tools: Don't use brace expansion Kusanagi Kouichi 2010-08-16 13:30 ` Peter Zijlstra 2010-08-16 14:09 ` Bernd Petrovitsch 2010-08-16 14:30 ` Peter Zijlstra 2010-08-16 14:54 ` Bernd Petrovitsch 2010-08-16 15:29 ` Arnaldo Carvalho de Melo 2010-08-16 15:43 ` Bernd Petrovitsch 2010-08-16 15:50 ` Arnaldo Carvalho de Melo 2010-08-17 11:58 ` Bernd Petrovitsch 2010-08-17 15:42 ` Arnaldo Carvalho de Melo 2010-08-17 16:09 ` Bernd Petrovitsch 2010-08-17 18:16 ` Arnaldo Carvalho de Melo 2010-08-18 9:47 ` Bernd Petrovitsch 2010-08-18 8:18 ` [tip:perf/urgent] perf tools: Fix build on POSIX shells tip-bot for Bernd Petrovitsch 2010-08-16 15:24 ` [PATCH] perf tools: Don't use brace expansion Arnaldo Carvalho de Melo
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.