On Fri, Nov 08, 2019 at 12:05:48PM -0500, Steven Rostedt wrote: > > [ I also added linux-trace-devel, but it was good to Cc LKML too ] > > On Fri, 8 Nov 2019 16:11:57 +0000 > Sudip Mukherjee <sudipm.mukherjee@xxxxxxxxx> wrote: > > > Hi Steve, > > > > I tried to install libtraceevent. and I used the command: > > "make DESTDIR=/home/sudip/test prefix=/usr install" from tool/lib/traceevent > > <snip> > > > > I am seeing two problems: > > 1) It created another home/sudip/test folder inside /home/sudip/test and > > the header files are installed in /home/sudip/test/home/sudip/test/usr/include folder. > > They should have been in /home/sudip/test/usr/include. > > > > 2) I used prefix=/usr but the 'pkgconfig' still went to /usr/local > > > > Did I do something wrong? > > No, but you showed that the installation part is poorly tested. I > mostly tested just the code from trace-cmd, and even the installation > paths from that repo. I should have tested the kernel repo as well, but > failed to do this. > > Thanks for reporting, I need to take a look, or if you want to have a go > at it, that would be great too :-) Attached is a patch for the wrong installation of header files. For the pkgconfig, the problem is at: pkgconfig_dir ?= $(word 1,$(shell $(PKG_CONFIG) \ --variable pc_path pkg-config | tr ":" " ")) This is checking 'pc_path' which is the search path used by pkg-config and then its taking the first path from that list and using in pkgconfig_dir, which can be wrong. A reliable way to get the pkg-config location is if I use: pkg=$(pkg-config --list-all | head -1 | cut -d ' ' -f 1) pkg-config --variable=pcfiledir $pkg But I will need to see how I can use this in a Makefile, will send this patch later, or if you can find a better way before me that will be great. -- Regards Sudip
>From 1ff159997d1dd299bb0e612baeb573aac45eac03 Mon Sep 17 00:00:00 2001 From: Sudip Mukherjee <sudipm.mukherjee@xxxxxxxxx> Date: Sat, 9 Nov 2019 23:33:54 +0000 Subject: [PATCH] libtraceevent: fix header installation When we passed some location in DESTDIR, install_headers called do_install with DESTDIR as part of the second argument. But do_install is again using '$(DESTDIR_SQ)$2', so as a result the headers were installed in a location $DESTDIR/$DESTDIR. In my testing I passed DESTDIR=/home/sudip/test and the headers were installed in: /home/sudip/test/home/sudip/test/usr/include/traceevent. Lets remove DESTDIR from the second argument of do_install so that the headers are installed in the correct location. Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@xxxxxxxxx> --- tools/lib/traceevent/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile index 5315f3787f8d..cbb429f55062 100644 --- a/tools/lib/traceevent/Makefile +++ b/tools/lib/traceevent/Makefile @@ -232,10 +232,10 @@ install_pkgconfig: install_headers: $(call QUIET_INSTALL, headers) \ - $(call do_install,event-parse.h,$(DESTDIR)$(includedir_SQ),644); \ - $(call do_install,event-utils.h,$(DESTDIR)$(includedir_SQ),644); \ - $(call do_install,trace-seq.h,$(DESTDIR)$(includedir_SQ),644); \ - $(call do_install,kbuffer.h,$(DESTDIR)$(includedir_SQ),644) + $(call do_install,event-parse.h,$(includedir_SQ),644); \ + $(call do_install,event-utils.h,$(includedir_SQ),644); \ + $(call do_install,trace-seq.h,$(includedir_SQ),644); \ + $(call do_install,kbuffer.h,$(includedir_SQ),644) install: install_lib -- 2.11.0