specifying raw perf events
Hi,
I'm trying to use raw events and to read how exactly they're specified. Here's what do:
$ perf list -h
...
rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
(see 'perf list --help' on how to encode it)
...
$ perf list --help $
No help. :-(
$ perf --version perf version 3.6.rc7.1723.g226ea0
That's latest Linus + tip/auto-latest.
Thanks.
Signature · 8 lines
Regards/Gruss, Boris. Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551
Em Tue, Sep 25, 2012 at 05:52:35PM +0200, Borislav Petkov escreveu:
Quoted 14 lines
I'm trying to use raw events and to read how exactly they're specified. Here's what do:
$ perf list -h...
rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
(see 'perf list --help' on how to encode it)
...$ perf list --help $
Quoted 6 lines
No help. :-(
$ perf --version perf version 3.6.rc7.1723.g226ea0That's latest Linus + tip/auto-latest.
$ make -C tools/perf/Documentation install
?
- Arnaldo
Em Tue, Sep 25, 2012 at 10:02:01AM -0700, Arnaldo Carvalho de Melo escreveu:
Quoted 17 lines
Em Tue, Sep 25, 2012 at 05:52:35PM +0200, Borislav Petkov escreveu:
Quoted 16 lines
I'm trying to use raw events and to read how exactly they're specified. Here's what do:
$ perf list -h...
rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
(see 'perf list --help' on how to encode it)
...$ perf list --help $No help. :-(
Quoted 8 lines
Quoted 4 lines
$ perf --version perf version 3.6.rc7.1723.g226ea0That's latest Linus + tip/auto-latest.
$ make -C tools/perf/Documentation install?
If done as non-root:
man -M ~/share/man/ perf-list
- Arnaldo
Quoted 24 lines · Arnaldo Carvalho de Melo
Em Tue, Sep 25, 2012 at 10:02:01AM -0700, Arnaldo Carvalho de Melo escreveu:
Quoted 23 lines
Em Tue, Sep 25, 2012 at 05:52:35PM +0200, Borislav Petkov escreveu:
Quoted 14 lines
I'm trying to use raw events and to read how exactly they're specified. Here's what do:
$ perf list -h...
rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
(see 'perf list --help' on how to encode it)
...$ perf list --help $Quoted 6 lines
No help. :-(
$ perf --version perf version 3.6.rc7.1723.g226ea0That's latest Linus + tip/auto-latest.
$ make -C tools/perf/Documentation install
Ok, this target doesn't get triggered automatically from
$ make tools/perf_install
Should we change that?
Also, after I run it,
$ perf list --help $
still doesn't show anything. (running it as non-root).
Quoted 3 lines
If done as non-root:
man -M ~/share/man/ perf-list
This one works. But looks like "perf list --help" needs fixing?
Thanks.
Signature · 8 lines
Regards/Gruss, Boris. Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551
Em Tue, Sep 25, 2012 at 07:11:55PM +0200, Borislav Petkov escreveu:
Quoted 10 lines · Arnaldo Carvalho de Melo
Quoted 3 lines
Em Tue, Sep 25, 2012 at 10:02:01AM -0700, Arnaldo Carvalho de Melo escreveu:
Quoted 2 lines
Em Tue, Sep 25, 2012 at 05:52:35PM +0200, Borislav Petkov escreveu:
$ make -C tools/perf/Documentation installOk, this target doesn't get triggered automatically from
$ make tools/perf_installShould we change that?
yes
Quoted 5 lines
Also, after I run it,
$ perf list --help $
Quoted 7 lines
still doesn't show anything. (running it as non-root).
Quoted 3 lines
If done as non-root:
man -M ~/share/man/ perf-list
This one works. But looks like "perf list --help" needs fixing?
We accept patches! :-)
- Arnaldo
Quoted 21 lines · Arnaldo Carvalho de Melo
Em Tue, Sep 25, 2012 at 07:11:55PM +0200, Borislav Petkov escreveu:
Quoted 10 lines · Arnaldo Carvalho de Melo
Quoted 3 lines
Em Tue, Sep 25, 2012 at 10:02:01AM -0700, Arnaldo Carvalho de Melo escreveu:
Quoted 2 lines
Em Tue, Sep 25, 2012 at 05:52:35PM +0200, Borislav Petkov escreveu:
$ make -C tools/perf/Documentation installOk, this target doesn't get triggered automatically from
$ make tools/perf_installShould we change that?
yes
Quoted 6 lines
Also, after I run it,
$ perf list --help $still doesn't show anything. (running it as non-root).
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
If done as non-root:
man -M ~/share/man/ perf-list
This one works. But looks like "perf list --help" needs fixing?
We accept patches! :-)
I knew you were gonna say that :-) Damn.
Signature · 8 lines
Regards/Gruss, Boris. Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551
PATCH 1/1 perf: Build install-man target when installing
From: Borislav Petkov <[email protected]>
There's a portion in the "perf list" output refering to the exact specification of raw hardware events. Since this description is in the perf-list manpage, make install-man be built unconditionally when installing perf tool and change the reference in the "perf list" output accordingly.
--- tools/perf/Makefile | 2 +- tools/perf/util/parse-events.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
tools/perf/Makefile +1 -1
@@ -1027,7 +1027,7 @@ perfexec_instdir = $(prefix)/$(perfexecdir) endif perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) -install: all +install: all install-man $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'
tools/perf/util/parse-events.c +1 -1
@@ -1092,7 +1092,7 @@ void print_events(const char *event_glob, bool name_only)printf (" %-50s [%s]\n" ,"cpu/t1=v1[,t2=v2,t3 ...]/modifier" , event_type_descriptors[PERF_TYPE_RAW ]); -printf (" (see 'perf list --help' on how to encode it)\n" ); +printf (" (see 'man perf-list' on how to encode it)\n" );printf ("\n" ); printf(" %-50s [%s]\n",
Signature · 1 line
1.7.11.rc1
Re: [PATCH] perf: Build install-man target when installing
Ping?
Quoted 48 lines · Borislav Petkov
From: Borislav Petkov <[email protected]>
There's a portion in the "perf list" output refering to the exact specification of raw hardware events. Since this description is in the perf-list manpage, make install-man be built unconditionally when installing perf tool and change the reference in the "perf list" output accordingly.
Signed-off-by Borislav Petkov <[email protected]>--- tools/perf/Makefile | 2 +- tools/perf/util/parse-events.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)tools/perf/Makefile +1
-1@@ -1027,7 +1027,7 @@ perfexec_instdir = $(prefix)/$(perfexecdir) endif perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) -install: all +install: all install-man $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'tools/perf/util/parse-events.c +1
-1@@ -1092,7 +1092,7 @@ void print_events(const char *event_glob, bool name_only)printf (" %-50s [%s]\n" ,"cpu/t1=v1[,t2=v2,t3 ...]/modifier" , event_type_descriptors[PERF_TYPE_RAW ]); -printf (" (see 'perf list --help' on how to encode it)\n" ); +printf (" (see 'man perf-list' on how to encode it)\n" );printf ("\n" ); printf(" %-50s [%s]\n",Signature · 7 lines
1.7.11.rc1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Signature · 2 lines
Regards/Gruss,
Boris.Re: [PATCH] perf: Build install-man target when installing
Em Sat, Oct 20, 2012 at 01:16:25PM +0200, Borislav Petkov escreveu:
Quoted 1 line
Ping?
Merged it to perf/core, thanks for the patch and the ping,
- Arnaldo
Namhyung Kim
maintainerRe: [PATCH] perf: Build install-man target when installing
In reply to Borislav PetkovHi,
Quoted 23 lines · Borislav Petkov
Quoted 22 lines · Borislav Petkov
From: Borislav Petkov <[email protected]>
There's a portion in the "perf list" output refering to the exact specification of raw hardware events. Since this description is in the perf-list manpage, make install-man be built unconditionally when installing perf tool and change the reference in the "perf list" output accordingly.
Signed-off-by Borislav Petkov <[email protected]>--- tools/perf/Makefile | 2 +- tools/perf/util/parse-events.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)tools/perf/Makefile +0
-0@@ -1027,7 +1027,7 @@ perfexec_instdir = $(prefix)/$(perfexecdir) endif perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir))
Quoted 2 lines
tools/perf/Makefile perfexec_instdir = $(prefix)/$(perfexecdir) · line 1030
Quoted 2 lines
tools/perf/Makefile +1
-1-install: all +install: all install-man
It will add additional dependencies of asciidoc, docbook-xsl and/or something to default perf install command. I don't know it matters much, but just wanted to say. What if a user want to install the perf but the required packages for documents are not installed?
Quoted 5 lines
Quoted 5 lines
tools/perf/Makefile +0
-0$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'tools/perf/util/parse-events.c +0
-0
Quoted 8 lines
tools/perf/util/parse-events.c void print_events(const char *event_glob, bool name_only) · line 1095
Quoted 8 lines
tools/perf/util/parse-events.c +1
-1@@ -1092,7 +1092,7 @@ void print_events(const char *event_glob, bool name_only)printf (" %-50s [%s]\n" ,"cpu/t1=v1[,t2=v2,t3 ...]/modifier" , event_type_descriptors[PERF_TYPE_RAW ]); -printf (" (see 'perf list --help' on how to encode it)\n" ); +printf (" (see 'man perf-list' on how to encode it)\n" );
Is this needed? Shouldn't we fix perf --help handling? Please see my other post on the issue.
Thanks,
Namhyung
Quoted 11 lines
Quoted 11 lines
tools/perf/util/parse-events.c +0
-0printf ("\n" ); printf(" %-50s [%s]\n",Signature · 7 lines
1.7.11.rc1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] perf: Build install-man target when installing
Quoted 4 lines · Namhyung Kim
It will add additional dependencies of asciidoc, docbook-xsl and/or something to default perf install command. I don't know it matters much, but just wanted to say. What if a user want to install the perf but the required packages for documents are not installed?
Ok, this is a valid point, more or less.
What we could do is leave the reference to "man perf-list" in perf list output and *not* build install-man unconditionally. This way, people who want to see the manpage, will need to install required packages. On distros the manpage is already present so all is taken care of.
This way, we avoid the text duplication of adding this to perf --help.
Signature · 2 lines
Regards/Gruss,
Boris.Re: [PATCH] perf: Build install-man target when installing
Em Mon, Oct 22, 2012 at 12:07:19PM +0200, Borislav Petkov escreveu:
Quoted 7 lines · Namhyung Kim
Quoted 4 lines
It will add additional dependencies of asciidoc, docbook-xsl and/or something to default perf install command. I don't know it matters much, but just wanted to say. What if a user want to install the perf but the required packages for documents are not installed?
Ok, this is a valid point, more or less.
Yes, its a valid point, to address it I think we should just do as we with other features, like, say, when python-devel is not installed warn the user that python support won't be included, i.e. if asciidoc, etc are not installed, tell the user that documentation will not be installed, install package A, B and C to have documentation installed.
- Arnaldo
Re: [PATCH] perf: Build install-man target when installing
Quoted 7 lines · Arnaldo Carvalho de Melo
Em Mon, Oct 22, 2012 at 12:07:19PM +0200, Borislav Petkov escreveu:
Quoted 5 lines · Namhyung Kim
Quoted 4 lines
It will add additional dependencies of asciidoc, docbook-xsl and/or something to default perf install command. I don't know it matters much, but just wanted to say. What if a user want to install the perf but the required packages for documents are not installed?
Quoted 7 lines
Quoted 1 line
Ok, this is a valid point, more or less.
Yes, its a valid point, to address it I think we should just do as we with other features, like, say, when python-devel is not installed warn the user that python support won't be included, i.e. if asciidoc, etc are not installed, tell the user that documentation will not be installed, install package A, B and C to have documentation installed.
Ok, how's that: we check the presence of executables on the system and error out if not in the path. I found some helpful make functions in config/utilities.mak and decided to reuse them because I'm lazy :)
--
tools/perf/Documentation/Makefile +9 -2
@@ -1,3 +1,5 @@ +include ../config/utilities.mak + OUTPUT := ./ ifeq ("$(origin O)", "command line") ifneq ($(O),)
@@ -64,6 +66,7 @@ MAKEINFO=makeinfo INSTALL_INFO=install-info DOCBOOK2X_TEXI=docbook2x-texi DBLATEX=dblatex +XMLTO=xmlto ifndef PERL_PATH PERL_PATH = /usr/bin/perl endif
@@ -170,7 +173,11 @@ pdf: $(OUTPUT)user-manual.pdf install: install-man -install-man: man +check-man-tools: + $(call check-executable-or-error-out,$(ASCIIDOC)) + $(call check-executable-or-error-out,$(XMLTO)) + +install-man: check-man-tools man $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)
@@ -246,7 +253,7 @@ $(MAN_HTML): $(OUTPUT)%.html : %.txt $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml $(QUIET_XMLTO)$(RM) $@ && \ - xmlto -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< + $(XMLTO) -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< $(OUTPUT)%.xml : %.txt $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
tools/perf/config/utilities.mak +2 -0
@@ -168,6 +168,8 @@ _is-executable-sh = $(call shell-sq,test -f $(1) -a -x $(1) && echo y) get-executable = $(if $(1),$(if $(is-absolute),$(_ge-abspath),$(lookup))) _ge-abspath = $(if $(is-executable),$(1)) +check-executable-or-error-out = $(if $(call get-executable,$(1)),,$(error $(1) not found, please install it on your distro)) + # get-supplied-or-default-executable # # Usage: absolute-executable-path-or-empty = $(call get-executable-or-default,variable,default)
Signature · 2 lines
Regards/Gruss,
Boris.Re: [PATCH] perf: Build install-man target when installing
Em Tue, Oct 23, 2012 at 01:13:01AM +0200, Borislav Petkov escreveu:
Quoted 16 lines · Arnaldo Carvalho de Melo
Quoted 7 lines
Em Mon, Oct 22, 2012 at 12:07:19PM +0200, Borislav Petkov escreveu:
Quoted 5 lines · Namhyung Kim
Quoted 4 lines
It will add additional dependencies of asciidoc, docbook-xsl and/or something to default perf install command. I don't know it matters much, but just wanted to say. What if a user want to install the perf but the required packages for documents are not installed?
Quoted 7 lines
Quoted 1 line
Ok, this is a valid point, more or less.
Yes, its a valid point, to address it I think we should just do as we with other features, like, say, when python-devel is not installed warn the user that python support won't be included, i.e. if asciidoc, etc are not installed, tell the user that documentation will not be installed, install package A, B and C to have documentation installed.
Quoted 3 lines
Ok, how's that: we check the presence of executables on the system and error out if not in the path. I found some helpful make functions in config/utilities.mak and decided to reuse them because I'm lazy :)
Better now:
make[1]: Entering directory /home/git/linux/tools/lib/traceevent' make[1]: Entering directory /home/git/linux/tools/perf/Documentation' make[2]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
make[1]: Leaving directory `/home/git/linux/tools/lib/traceevent'
CC /home/acme/git/build/perf/perf.o
LINK /home/acme/git/build/perf/perf
make[2]: Entering directory /home/git/linux/tools/perf' make[2]: /home/acme/git/build/perf/PERF-VERSION-FILE' is up to date. make[2]: Leaving directory `/home/git/linux/tools/perf' Makefile:177: *** asciidoc not found, please install it on your distro. Stop.
make[1]: Leaving directory `/home/git/linux/tools/perf/Documentation'
make: *** [install-man] Error 2
make: Leaving directory `/home/git/linux/tools/perf' [acme@sandy linux]$
But it shouldn't stop the build, just warn the user that Documentation is not going to be installed. It should error like that if 'make install-man' is called.
Trying to do that now.
- Arnaldo
Quoted 58 lines
--
tools/perf/Documentation/Makefile +9
-2@@ -1,3 +1,5 @@ +include ../config/utilities.mak + OUTPUT := ./ ifeq ("$(origin O)", "command line") ifneq ($(O),)@@ -64,6 +66,7 @@ MAKEINFO=makeinfo INSTALL_INFO=install-info DOCBOOK2X_TEXI=docbook2x-texi DBLATEX=dblatex +XMLTO=xmlto ifndef PERL_PATH PERL_PATH = /usr/bin/perl endif@@ -170,7 +173,11 @@ pdf: $(OUTPUT)user-manual.pdf install: install-man -install-man: man +check-man-tools: + $(call check-executable-or-error-out,$(ASCIIDOC)) + $(call check-executable-or-error-out,$(XMLTO)) + +install-man: check-man-tools man $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)@@ -246,7 +253,7 @@ $(MAN_HTML): $(OUTPUT)%.html : %.txt $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml $(QUIET_XMLTO)$(RM) $@ && \ - xmlto -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< + $(XMLTO) -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< $(OUTPUT)%.xml : %.txt $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \tools/perf/config/utilities.mak +2
-0@@ -168,6 +168,8 @@ _is-executable-sh = $(call shell-sq,test -f $(1) -a -x $(1) && echo y) get-executable = $(if $(1),$(if $(is-absolute),$(_ge-abspath),$(lookup))) _ge-abspath = $(if $(is-executable),$(1)) +check-executable-or-error-out = $(if $(call get-executable,$(1)),,$(error $(1) not found, please install it on your distro)) + # get-supplied-or-default-executable # # Usage: absolute-executable-path-or-empty = $(call get-executable-or-default,variable,default)Signature · 3 lines
-- Regards/Gruss, Boris.
Re: [PATCH] perf: Build install-man target when installing
Em Tue, Oct 23, 2012 at 06:39:51AM -0700, Arnaldo Carvalho de Melo escreveu:
Quoted 13 lines
Quoted 3 lines
Ok, how's that: we check the presence of executables on the system and error out if not in the path. I found some helpful make functions in config/utilities.mak and decided to reuse them because I'm lazy :)
Better now:
Makefile:177: *** asciidoc not found, please install it on your distro. Stop.
make[1]: Leaving directory `/home/git/linux/tools/perf/Documentation'
make: *** [install-man] Error 2
make: Leaving directory `/home/git/linux/tools/perf' [acme@sandy linux]$
Quoted 5 lines
But it shouldn't stop the build, just warn the user that Documentation is not going to be installed. It should error like that if 'make install-man' is called.
Trying to do that now.
[acme@sandy linux]$ make -j8 -C tools/perf/ O=/home/acme/git/build/perf try-install-man
make: Entering directory `/home/git/linux/tools/perf'
make -C Documentation try-install-man
make[1]: Entering directory /home/git/linux/tools/perf/Documentation' make[2]: Entering directory /home/git/linux/tools/perf'
make[2]: /home/acme/git/build/perf/PERF-VERSION-FILE' is up to date. make[2]: Leaving directory /home/git/linux/tools/perf'
Makefile:202: Please install the asciidoc package to have the man pages installed Makefile:202: Please install the xmlto package to have the man pages installed make[1]: `try-install-man' is up to date.
make[1]: Leaving directory `/home/git/linux/tools/perf/Documentation'
make: Leaving directory `/home/git/linux/tools/perf'
[acme@sandy linux]$
The 'install-man' target will use your check-executable-or-error-out stuff, but the main 'install' target will call just 'try-install-man', that will not stop the build if there are missing tools to generate the man pages.
Installing just xmlto makes it ask just for asciidoc, install both and it generates the man pages, please try to check if it works for you so that I can have your Tested-by.
- Arnaldo
tools/perf/Documentation/Makefile +32 -2
@@ -1,3 +1,5 @@ +include ../config/utilities.mak + OUTPUT := ./ ifeq ("$(origin O)", "command line") ifneq ($(O),)
@@ -64,6 +66,7 @@ MAKEINFO=makeinfo INSTALL_INFO=install-info DOCBOOK2X_TEXI=docbook2x-texi DBLATEX=dblatex +XMLTO=xmlto ifndef PERL_PATH PERL_PATH = /usr/bin/perl endif
@@ -71,6 +74,15 @@ endif -include ../config.mak.autogen -include ../config.mak +have_asciidoc := $(call get-executable,$(ASCIIDOC)) +have_xmlto := $(call get-executable,$(XMLTO)) +ifeq ($(have_asciidoc),) + missing_tools = true +endif +ifeq ($(have_xmlto),) + missing_tools = true +endif + # # For asciidoc ... # -7.1.2, no extra settings are needed.
@@ -170,7 +182,11 @@ pdf: $(OUTPUT)user-manual.pdf install: install-man -install-man: man +check-man-tools: + $(call check-executable-or-error-out,$(ASCIIDOC)) + $(call check-executable-or-error-out,$(XMLTO)) + +do-install-man: man $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)
@@ -178,6 +194,20 @@ install-man: man # $(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir) # $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir) +install-man: check-man-tools man + +try-install-man: +ifdef missing_tools +ifeq ($(have_asciidoc),) + $(warning Please install the asciidoc package to have the man pages installed) +endif +ifeq ($(have_xmlto),) + $(warning Please install the xmlto package to have the man pages installed) +endif +else + $(MAKE) do-install-man +endif + install-info: info $(INSTALL) -d -m 755 $(DESTDIR)$(infodir) $(INSTALL) -m 644 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(DESTDIR)$(infodir)
@@ -246,7 +276,7 @@ $(MAN_HTML): $(OUTPUT)%.html : %.txt $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml $(QUIET_XMLTO)$(RM) $@ && \ - xmlto -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< + $(XMLTO) -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< $(OUTPUT)%.xml : %.txt $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
tools/perf/Makefile +4 -1
@@ -1041,7 +1041,7 @@ perfexec_instdir = $(prefix)/$(perfexecdir) endif perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) -install: all install-man +install: all try-install-man $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'
@@ -1067,6 +1067,9 @@ install-doc: install-man: $(MAKE) -C Documentation install-man +try-install-man: + $(MAKE) -C Documentation try-install-man + install-html: $(MAKE) -C Documentation install-html
tools/perf/config/utilities.mak +2 -0
@@ -168,6 +168,8 @@ _is-executable-sh = $(call shell-sq,test -f $(1) -a -x $(1) && echo y) get-executable = $(if $(1),$(if $(is-absolute),$(_ge-abspath),$(lookup))) _ge-abspath = $(if $(is-executable),$(1)) +check-executable-or-error-out = $(if $(call get-executable,$(1)),,$(error $(1) not found, please install it on your distro)) + # get-supplied-or-default-executable # # Usage: absolute-executable-path-or-empty = $(call get-executable-or-default,variable,default)
Re: [PATCH] perf: Build install-man target when installing
Em Wed, Oct 24, 2012 at 10:03:16AM -0700, Arnaldo Carvalho de Melo escreveu:
Quoted 19 lines
Em Tue, Oct 23, 2012 at 06:39:51AM -0700, Arnaldo Carvalho de Melo escreveu:
Quoted 18 lines
Quoted 3 lines
Ok, how's that: we check the presence of executables on the system and error out if not in the path. I found some helpful make functions in config/utilities.mak and decided to reuse them because I'm lazy :)
Better now:
Makefile:177: *** asciidoc not found, please install it on your distro. Stop.
make[1]: Leaving directory `/home/git/linux/tools/perf/Documentation'
make: *** [install-man] Error 2
make: Leaving directory `/home/git/linux/tools/perf' [acme@sandy linux]$But it shouldn't stop the build, just warn the user that Documentation is not going to be installed. It should error like that if 'make install-man' is called.
Trying to do that now.
Namhyung, can I have your acked-by for this? I.e. changing the message to 'man perf-list' and just warning the user that documentation won't be installed if xmlto & asciidoc are not found?
I'm fine with it this way.
- Arnaldo
Quoted 138 lines
[acme@sandy linux]$ make -j8 -C
tools/perf/O=/home/acme/git/build/perf try-install-man
make: Entering directory `/home/git/linux/tools/perf'
make -C Documentation try-install-man
make[1]: Entering directory/home/git/linux/tools/perf/Documentation' make[2]: Entering directory/home/git/linux/tools/perf'
make[2]:/home/acme/git/build/perf/PERF-VERSION-FILE' is up to date. make[2]: Leaving directory/home/git/linux/tools/perf'
Makefile:202: Please install the asciidoc package to have the man pages installed Makefile:202: Please install the xmlto package to have the man pages installed make[1]: `try-install-man' is up to date.
make[1]: Leaving directory `/home/git/linux/tools/perf/Documentation'
make: Leaving directory `/home/git/linux/tools/perf'
[acme@sandy linux]$The 'install-man' target will use your check-executable-or-error-out stuff, but the main 'install' target will call just 'try-install-man', that will not stop the build if there are missing tools to generate the man pages.
Installing just xmlto makes it ask just for asciidoc, install both and it generates the man pages, please try to check if it works for you so that I can have your Tested-by.
- Arnaldo
tools/perf/Documentation/Makefile +32
-2@@ -1,3 +1,5 @@ +include ../config/utilities.mak + OUTPUT := ./ ifeq ("$(origin O)", "command line") ifneq ($(O),)@@ -64,6 +66,7 @@ MAKEINFO=makeinfo INSTALL_INFO=install-info DOCBOOK2X_TEXI=docbook2x-texi DBLATEX=dblatex +XMLTO=xmlto ifndef PERL_PATH PERL_PATH = /usr/bin/perl endif@@ -71,6 +74,15 @@ endif -include ../config.mak.autogen -include ../config.mak +have_asciidoc := $(call get-executable,$(ASCIIDOC)) +have_xmlto := $(call get-executable,$(XMLTO)) +ifeq ($(have_asciidoc),) + missing_tools = true +endif +ifeq ($(have_xmlto),) + missing_tools = true +endif + # # For asciidoc ... # -7.1.2, no extra settings are needed.@@ -170,7 +182,11 @@ pdf: $(OUTPUT)user-manual.pdf install: install-man -install-man: man +check-man-tools: + $(call check-executable-or-error-out,$(ASCIIDOC)) + $(call check-executable-or-error-out,$(XMLTO)) + +do-install-man: man $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)@@ -178,6 +194,20 @@ install-man: man # $(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir) # $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir) +install-man: check-man-tools man + +try-install-man: +ifdef missing_tools +ifeq ($(have_asciidoc),) + $(warning Please install the asciidoc package to have the man pages installed) +endif +ifeq ($(have_xmlto),) + $(warning Please install the xmlto package to have the man pages installed) +endif +else + $(MAKE) do-install-man +endif + install-info: info $(INSTALL) -d -m 755 $(DESTDIR)$(infodir) $(INSTALL) -m 644 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(DESTDIR)$(infodir)@@ -246,7 +276,7 @@ $(MAN_HTML): $(OUTPUT)%.html : %.txt $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml $(QUIET_XMLTO)$(RM) $@ && \ - xmlto -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< + $(XMLTO) -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< $(OUTPUT)%.xml : %.txt $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \tools/perf/Makefile +4
-1@@ -1041,7 +1041,7 @@ perfexec_instdir = $(prefix)/$(perfexecdir) endif perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) -install: all install-man +install: all try-install-man $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'@@ -1067,6 +1067,9 @@ install-doc: install-man: $(MAKE) -C Documentation install-man +try-install-man: + $(MAKE) -C Documentation try-install-man + install-html: $(MAKE) -C Documentation install-htmltools/perf/config/utilities.mak +2
-0@@ -168,6 +168,8 @@ _is-executable-sh = $(call shell-sq,test -f $(1) -a -x $(1) && echo y) get-executable = $(if $(1),$(if $(is-absolute),$(_ge-abspath),$(lookup))) _ge-abspath = $(if $(is-executable),$(1)) +check-executable-or-error-out = $(if $(call get-executable,$(1)),,$(error $(1) not found, please install it on your distro)) + # get-supplied-or-default-executable # # Usage: absolute-executable-path-or-empty = $(call get-executable-or-default,variable,default)
Borislav Petkov
Tested-byRe: [PATCH] perf: Build install-man target when installing
In reply to Arnaldo Carvalho de MeloQuoted 8 lines · Arnaldo Carvalho de Melo
The 'install-man' target will use your check-executable-or-error-out stuff, but the main 'install' target will call just 'try-install-man', that will not stop the build if there are missing tools to generate the man pages.
Installing just xmlto makes it ask just for asciidoc, install both and it generates the man pages, please try to check if it works for you so that I can have your Tested-by.
Ok, then this can be done even simpler, I went and simplified your version and we don't need that check-executable-or-error-out helper anymore, I'm including it below.
For it you can have my
Btw, I keep seeing those errors when building on your perf/core branch:
...
FLEX util/pmu-flex.c
FLEX util/parse-events-flex.c
CC util/pmu-flex.o
CC util/pmu.o
CC util/parse-events.o
gcc: error: python_ext_build/tmp//../../libtraceevent.a: No such file or directory
error: command 'gcc' failed with exit status 1
cp: cannot stat `python_ext_build/lib/perf.so': No such file or directory
make: *** [python/perf.so] Error 1
make: *** Waiting for unfinished jobs....
Makefile:513: No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 0.99 Makefile:568: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev Makefile:579: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
SUBDIR ../lib/traceevent/
...
Thanks.
---
tools/perf/Documentation/Makefile +29 -2
@@ -1,3 +1,5 @@ +include ../config/utilities.mak + OUTPUT := ./ ifeq ("$(origin O)", "command line") ifneq ($(O),)
@@ -64,6 +66,7 @@ MAKEINFO=makeinfo INSTALL_INFO=install-info DOCBOOK2X_TEXI=docbook2x-texi DBLATEX=dblatex +XMLTO=xmlto ifndef PERL_PATH PERL_PATH = /usr/bin/perl endif
@@ -71,6 +74,16 @@ endif -include ../config.mak.autogen -include ../config.mak +_tmp_tool_path := $(call get-executable,$(ASCIIDOC)) +ifeq ($(_tmp_tool_path),) + missing_tools = $(ASCIIDOC) +endif + +_tmp_tool_path := $(call get-executable,$(XMLTO)) +ifeq ($(_tmp_tool_path),) + missing_tools += $(XMLTO) +endif + # # For asciidoc ... # -7.1.2, no extra settings are needed.
@@ -170,7 +183,12 @@ pdf: $(OUTPUT)user-manual.pdf install: install-man -install-man: man +check-man-tools: +ifdef missing_tools + $(error "You need to install $(missing_tools) for man pages") +endif + +do-install-man: man $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)
@@ -178,6 +196,15 @@ install-man: man # $(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir) # $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir) +install-man: check-man-tools man + +try-install-man: +ifdef missing_tools + $(warning Please install $(missing_tools) to have the man pages installed) +else + $(MAKE) do-install-man +endif + install-info: info $(INSTALL) -d -m 755 $(DESTDIR)$(infodir) $(INSTALL) -m 644 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(DESTDIR)$(infodir)
@@ -246,7 +273,7 @@ $(MAN_HTML): $(OUTPUT)%.html : %.txt $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml $(QUIET_XMLTO)$(RM) $@ && \ - xmlto -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< + $(XMLTO) -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< $(OUTPUT)%.xml : %.txt $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
tools/perf/Makefile +4 -1
@@ -1038,7 +1038,7 @@ perfexec_instdir = $(prefix)/$(perfexecdir) endif perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) -install: all install-man +install: all try-install-man $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'
@@ -1064,6 +1064,9 @@ install-doc: install-man: $(MAKE) -C Documentation install-man +try-install-man: + $(MAKE) -C Documentation try-install-man + install-html: $(MAKE) -C Documentation install-html
Signature · 2 lines
Regards/Gruss,
Boris.Re: [PATCH] perf: Build install-man target when installing
Em Wed, Oct 24, 2012 at 09:30:46PM +0200, Borislav Petkov escreveu:
Quoted 14 lines · Arnaldo Carvalho de Melo
Quoted 8 lines
The 'install-man' target will use your check-executable-or-error-out stuff, but the main 'install' target will call just 'try-install-man', that will not stop the build if there are missing tools to generate the man pages.
Installing just xmlto makes it ask just for asciidoc, install both and it generates the man pages, please try to check if it works for you so that I can have your Tested-by.
Ok, then this can be done even simpler, I went and simplified your version and we don't need that check-executable-or-error-out helper anymore, I'm including it below.
Quoted 6 lines
For it you can have my
Signed-off-by Borislav Petkov <[email protected]>Tested-by Borislav Petkov <[email protected]>Btw, I keep seeing those errors when building on your perf/core branch:
That is fixed in the perf/urgent one, I'm reworking my perf/core branch on top of Ingo's tip/perf/core, that already merged tip/perf/urgent so has that fix.
Testing your new version now, thanks!
- Arnaldo
Quoted 122 lines
...
FLEXutil/pmu-flex.c
FLEXutil/parse-events-flex.c
CCutil/pmu-flex.o
CCutil/pmu.o
CCutil/parse-events.o
gcc: error: python_ext_build/tmp//../../libtraceevent.a: No such file or directory
error: command 'gcc' failed with exit status 1
cp: cannot stat `python_ext_build/lib/perf.so': No such file or directory
make: *** [python/perf.so] Error 1
make: *** Waiting for unfinished jobs....
Makefile:513: No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 0.99 Makefile:568: Nolibaudit.hfound, disables 'trace' tool, please install audit-libs-devel or libaudit-dev Makefile:579: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
SUBDIR ../lib/traceevent/...
Thanks.
---
tools/perf/Documentation/Makefile +29
-2@@ -1,3 +1,5 @@ +include ../config/utilities.mak + OUTPUT := ./ ifeq ("$(origin O)", "command line") ifneq ($(O),)@@ -64,6 +66,7 @@ MAKEINFO=makeinfo INSTALL_INFO=install-info DOCBOOK2X_TEXI=docbook2x-texi DBLATEX=dblatex +XMLTO=xmlto ifndef PERL_PATH PERL_PATH = /usr/bin/perl endif@@ -71,6 +74,16 @@ endif -include ../config.mak.autogen -include ../config.mak +_tmp_tool_path := $(call get-executable,$(ASCIIDOC)) +ifeq ($(_tmp_tool_path),) + missing_tools = $(ASCIIDOC) +endif + +_tmp_tool_path := $(call get-executable,$(XMLTO)) +ifeq ($(_tmp_tool_path),) + missing_tools += $(XMLTO) +endif + # # For asciidoc ... # -7.1.2, no extra settings are needed.@@ -170,7 +183,12 @@ pdf: $(OUTPUT)user-manual.pdf install: install-man -install-man: man +check-man-tools: +ifdef missing_tools + $(error "You need to install $(missing_tools) for man pages") +endif + +do-install-man: man $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) # $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)@@ -178,6 +196,15 @@ install-man: man # $(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir) # $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir) +install-man: check-man-tools man + +try-install-man: +ifdef missing_tools + $(warning Please install $(missing_tools) to have the man pages installed) +else + $(MAKE) do-install-man +endif + install-info: info $(INSTALL) -d -m 755 $(DESTDIR)$(infodir) $(INSTALL) -m 644 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(DESTDIR)$(infodir)@@ -246,7 +273,7 @@ $(MAN_HTML): $(OUTPUT)%.html : %.txt $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml $(QUIET_XMLTO)$(RM) $@ && \ - xmlto -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< + $(XMLTO) -o $(OUTPUT) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< $(OUTPUT)%.xml : %.txt $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \tools/perf/Makefile +4
-1@@ -1038,7 +1038,7 @@ perfexec_instdir = $(prefix)/$(perfexecdir) endif perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) -install: all install-man +install: all try-install-man $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'@@ -1064,6 +1064,9 @@ install-doc: install-man: $(MAKE) -C Documentation install-man +try-install-man: + $(MAKE) -C Documentation try-install-man + install-html: $(MAKE) -C Documentation install-htmlSignature · 3 lines
-- Regards/Gruss, Boris.