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:20:50 -0700 [thread overview]
Message-ID: <20121024172050.GB13993@ghostprotocols.net> (raw)
In-Reply-To: <20121024170316.GA13993@ghostprotocols.net>
Em Wed, Oct 24, 2012 at 10:03:16AM -0700, Arnaldo Carvalho de Melo escreveu:
> 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.
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
> [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
> 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)
next prev parent reply other threads:[~2012-10-24 17:21 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
2012-10-24 17:20 ` Arnaldo Carvalho de Melo [this message]
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=20121024172050.GB13993@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.