perf tools: Try to build Documentation when installing
authorBorislav Petkov <borislav.petkov@amd.com>
Fri, 28 Sep 2012 17:47:07 +0000 (19:47 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 24 Oct 2012 21:30:48 +0000 (19:30 -0200)
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, try to build and
install the man pages, warning the user when that is not possible
due to missing packages (xmlto and asciidoc).

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/n/tip-ij71ysszkdvz3fy3wr331bke@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/Makefile
tools/perf/Makefile
tools/perf/util/parse-events.c

index 9f2e44f2b17a724425a829c2509985b6c8bafc95..ef6d22e879eb59dbf370096aaecda6d2344a42b0 100644 (file)
@@ -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) $@+ $@ && \
index 78a81eda1272645e1daf06fbf3a82b4f400ac879..b14eeb86d8d7fbf0b4957e68984b9485c3ba3451 100644 (file)
@@ -1041,7 +1041,7 @@ perfexec_instdir = $(prefix)/$(perfexecdir)
 endif
 perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir))
 
-install: all
+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
 
index 2fe15874e46e7fab700be86fbcd781ecd1b17a41..3a3efcf3e4e9703a11430d3c07f224d4889c6637 100644 (file)
@@ -1081,7 +1081,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",