• Thomas Richter's avatar
    perf build: Fix broken feature check for libtracefs due to external lib changes · a87834d1
    Thomas Richter authored
    The perf build process auto-detects features and packages already
    installed for its build. This is done in directory tools/build/feature.
    This directory contains small sample programs. When they successfully
    compile the necessary prereqs in form of libraries and header files are
    present.
    
    Such a check is also done for libtracefs. And this check fails:
    
    Output before:
     # rm -f test-libtracefs.bin; make test-libtracefs.bin
     gcc  -MD -Wall -Werror -o test-libtracefs.bin test-libtracefs.c \
    	 > test-libtracefs.make.output 2>&1 -ltracefs
     make: *** [Makefile:211: test-libtracefs.bin] Error 1
     # cat test-libtracefs.make.output
     In file included from test-libtracefs.c:2:
     /usr/include/tracefs/tracefs.h:11:10: fatal error: \
    	 event-parse.h: No such file or directory
       11 | #include <event-parse.h>
          |          ^~~~~~~~~~~~~~~
     compilation terminated.
     #
    
    The root cause of this compile error is commit 880885d9c22e
    ("libtracefs: Remove "traceevent/" from referencing libtraceevent
    headers") in the libtracefs project hosted here:
    https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
    
    That mentioned patch removes the traceevent/ directory name from
    the include statement, causing the file not to be included even
    when the libtraceevent-devel package is installed. This package contains
    the file referred to in tracefs/tracefs.h:
    
     # rpm -ql libtraceevent-devel
     /usr/include/traceevent
     /usr/include/traceevent/event-parse.h  <----- here
     /usr/include/traceevent/event-utils.h
     /usr/include/traceevent/kbuffer.h
     /usr/include/traceevent/trace-seq.h
     /usr/lib64/libtraceevent.so
     /usr/lib64/pkgconfig/libtraceevent.pc
     #
    
    With this patch the compile succeeds.
    
    Output after:
     # rm -f test-libtracefs.bin; make test-libtracefs.bin
     gcc  -MD -Wall -Werror -o test-libtracefs.bin test-libtracefs.c \
    	 > test-libtracefs.make.output 2>&1 -I/usr/include/traceevent -ltracefs
     #
    
    Committer testing:
    
      $ make -k BUILD_BPF_SKEL=1 CORESIGHT=1 O=/tmp/build/perf-tools -C tools/perf install-bin
    
    Before:
    
      $ cat /tmp/build/perf-tools/feature/test-libtracefs.make.output
      In file included from test-libtracefs.c:2:
      /usr/include/tracefs/tracefs.h:11:10: fatal error: event-parse.h: No such file or directory
         11 | #include <event-parse.h>
            |          ^~~~~~~~~~~~~~~
      compilation terminated.
      $
      $ grep -i tracefs /tmp/build/perf-tools/FEATURE-DUMP
      feature-libtracefs=0
      $
    
    After:
    
      $ cat /tmp/build/perf-tools/feature/test-libtracefs.make.output
      $
      $ grep -i tracefs /tmp/build/perf-tools/FEATURE-DUMP
      feature-libtracefs=1
      $
    Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Link: https://lore.kernel.org/r/20230711135338.397473-1-tmricht@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    a87834d1
Makefile 10.7 KB