All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@infradead.org>
To: Borislav Petkov <bp@alien8.de>,
	Namhyung Kim <namhyung@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] perf: Build install-man target when installing
Date: Wed, 24 Oct 2012 10:03:16 -0700	[thread overview]
Message-ID: <20121024170316.GA13993@ghostprotocols.net> (raw)
In-Reply-To: <20121023133951.GA11351@ghostprotocols.net>

[-- Attachment #1: Type: text/plain, Size: 1962 bytes --]

Em Tue, Oct 23, 2012 at 06:39:51AM -0700, Arnaldo Carvalho de Melo escreveu:
> > 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.

[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

[-- Attachment #2: has_xmlto.patch --]
[-- Type: text/plain, Size: 3594 bytes --]

diff --git a/tools/perf/Documentation/Makefile b/tools/perf/Documentation/Makefile
index 9f2e44f..8cb65ea 100644
--- a/tools/perf/Documentation/Makefile
+++ b/tools/perf/Documentation/Makefile
@@ -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) $@+ $@ && \
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 404fdb4..b14eeb8 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -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
 
diff --git a/tools/perf/config/utilities.mak b/tools/perf/config/utilities.mak
index ea853c2..42e264a 100644
--- a/tools/perf/config/utilities.mak
+++ b/tools/perf/config/utilities.mak
@@ -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)

  reply	other threads:[~2012-10-24 17:03 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-25 15:52 specifying raw perf events Borislav Petkov
2012-09-25 17:02 ` Arnaldo Carvalho de Melo
2012-09-25 17:03   ` Arnaldo Carvalho de Melo
2012-09-25 17:11     ` Borislav Petkov
2012-09-25 17:45       ` Arnaldo Carvalho de Melo
2012-09-25 17:46         ` Borislav Petkov
2012-09-28 17:47           ` [PATCH] perf: Build install-man target when installing Borislav Petkov
2012-10-20 11:16             ` Borislav Petkov
2012-10-20 15:37               ` Arnaldo Carvalho de Melo
2012-10-22  7:25               ` Namhyung Kim
2012-10-22 10:07                 ` Borislav Petkov
2012-10-22 14:03                   ` Arnaldo Carvalho de Melo
2012-10-22 23:13                     ` Borislav Petkov
2012-10-23 13:39                       ` Arnaldo Carvalho de Melo
2012-10-24 17:03                         ` Arnaldo Carvalho de Melo [this message]
2012-10-24 17:20                           ` Arnaldo Carvalho de Melo
2012-10-24 19:30                           ` Borislav Petkov
2012-10-24 19:41                             ` 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=20121024170316.GA13993@ghostprotocols.net \
    --to=acme@infradead.org \
    --cc=bp@alien8.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=namhyung@kernel.org \
    /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 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.