rtla/Makefile: Properly handle dependencies
authorDaniel Bristot de Oliveira <bristot@kernel.org>
Fri, 29 Apr 2022 14:54:58 +0000 (16:54 +0200)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Thu, 26 May 2022 19:17:48 +0000 (15:17 -0400)
Linus had a problem compiling RTLA, saying:

"[...] I wish the tracing tools would do a bit more package
checking and helpful error messages too, rather than just
fail with:

    fatal error: tracefs.h: No such file or directory"

Which is indeed not a helpful message. Update the Makefile, adding
proper checks for the dependencies, with useful information about
how to resolve possible problems.

For example, the previous error is now reported as:

    $ make
    ********************************************
    ** NOTICE: libtracefs version 1.3 or higher not found
    **
    ** Consider installing the latest libtracefs from your
    ** distribution, e.g., 'dnf install libtracefs' on Fedora,
    ** or from source:
    **
    **  https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
    **
    ********************************************

These messages are inspired by the ones used on trace-cmd, as suggested
by Stevel Rostedt.

Link: https://lore.kernel.org/r/CAHk-=whxmA86E=csNv76DuxX_wYsg8mW15oUs3XTabu2Yc80yw@mail.gmail.com/
Changes from V1:
 - Moved the rst2man check to the install phase (when it is used).
 - Removed the procps-ng lib check [1] as it is being removed.

[1] a0f9f8c1030c66305c9b921057c3d483064d5529.1651220820.git.bristot@kernel.org

Link: https://lkml.kernel.org/r/3f1fac776c37e4b67c876a94e5a0e45ed022ff3d.1651238057.git.bristot@kernel.org
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Suggested-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Documentation/tools/rtla/Makefile
tools/tracing/rtla/Makefile

index 9f2b84a..093af6d 100644 (file)
@@ -17,9 +17,21 @@ DOC_MAN1     = $(addprefix $(OUTPUT),$(_DOC_MAN1))
 RST2MAN_DEP    := $(shell command -v rst2man 2>/dev/null)
 RST2MAN_OPTS   += --verbose
 
+TEST_RST2MAN = $(shell sh -c "rst2man --version > /dev/null 2>&1 || echo n")
+
 $(OUTPUT)%.1: %.rst
 ifndef RST2MAN_DEP
-       $(error "rst2man not found, but required to generate man pages")
+       $(info ********************************************)
+       $(info ** NOTICE: rst2man not found)
+       $(info **)
+       $(info ** Consider installing the latest rst2man from your)
+       $(info ** distribution, e.g., 'dnf install python3-docutils' on Fedora,)
+       $(info ** or from source:)
+       $(info **)
+       $(info **  https://docutils.sourceforge.io/docs/dev/repository.html )
+       $(info **)
+       $(info ********************************************)
+       $(error NOTICE: rst2man required to generate man pages)
 endif
        rst2man $(RST2MAN_OPTS) $< > $@
 
index 11fb417..86d1df3 100644 (file)
@@ -57,6 +57,41 @@ else
 DOCSRC =       $(SRCTREE)/../../../Documentation/tools/rtla/
 endif
 
+LIBTRACEEVENT_MIN_VERSION = 1.5
+LIBTRACEFS_MIN_VERSION = 1.3
+
+TEST_LIBTRACEEVENT = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEEVENT_MIN_VERSION) libtraceevent > /dev/null 2>&1 || echo n")
+ifeq ("$(TEST_LIBTRACEEVENT)", "n")
+.PHONY: warning_traceevent
+warning_traceevent:
+       @echo "********************************************"
+       @echo "** NOTICE: libtraceevent version $(LIBTRACEEVENT_MIN_VERSION) or higher not found"
+       @echo "**"
+       @echo "** Consider installing the latest libtraceevent from your"
+       @echo "** distribution, e.g., 'dnf install libtraceevent' on Fedora,"
+       @echo "** or from source:"
+       @echo "**"
+       @echo "**  https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ "
+       @echo "**"
+       @echo "********************************************"
+endif
+
+TEST_LIBTRACEFS = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEFS_MIN_VERSION) libtracefs > /dev/null 2>&1 || echo n")
+ifeq ("$(TEST_LIBTRACEFS)", "n")
+.PHONY: warning_tracefs
+warning_tracefs:
+       @echo "********************************************"
+       @echo "** NOTICE: libtracefs version $(LIBTRACEFS_MIN_VERSION) or higher not found"
+       @echo "**"
+       @echo "** Consider installing the latest libtracefs from your"
+       @echo "** distribution, e.g., 'dnf install libtracefs' on Fedora,"
+       @echo "** or from source:"
+       @echo "**"
+       @echo "**  https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/ "
+       @echo "**"
+       @echo "********************************************"
+endif
+
 .PHONY:        all
 all:   rtla