2021-09-02 08:21:38

by Leo Yan

[permalink] [raw]
Subject: [PATCH v2] perf build: Report failure for testing feature libopencsd

When build perf tool with passing option 'CORESIGHT=1' explicitly, if
the feature test fails for library libopencsd, the build doesn't
complain the feature failure and continue to build the tool with
disabling the CoreSight feature insteadly.

This patch changes the building behaviour, when build perf tool with the
option 'CORESIGHT=1' and detect the failure for testing feature
libopencsd, the build process will be aborted and it shows the complaint
info.

Signed-off-by: Leo Yan <[email protected]>
---

Changes from v1:
Fixed a typo in the error message.

tools/perf/Makefile.config | 2 ++
1 file changed, 2 insertions(+)

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 4a0d9a6defc7..5df79538486b 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -489,6 +489,8 @@ ifdef CORESIGHT
CFLAGS += -DCS_RAW_PACKED
endif
endif
+ else
+ dummy := $(error Error: No libopencsd library found or the version is not up-to-date. Please install recent libopencsd to build with CORESIGHT=1)
endif
endif

--
2.25.1


2021-09-02 12:25:35

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH v2] perf build: Report failure for testing feature libopencsd

Em Thu, Sep 02, 2021 at 04:18:00PM +0800, Leo Yan escreveu:
> When build perf tool with passing option 'CORESIGHT=1' explicitly, if
> the feature test fails for library libopencsd, the build doesn't
> complain the feature failure and continue to build the tool with
> disabling the CoreSight feature insteadly.
>
> This patch changes the building behaviour, when build perf tool with the
> option 'CORESIGHT=1' and detect the failure for testing feature
> libopencsd, the build process will be aborted and it shows the complaint
> info.

Thanks, added some committer notes to show that it now works:

commit 8fb36b1f54873870262810d3db10526559e1d6c2
Author: Leo Yan <[email protected]>
Date: Thu Sep 2 16:18:00 2021 +0800

perf build: Report failure for testing feature libopencsd

When build perf tool with passing option 'CORESIGHT=1' explicitly, if
the feature test fails for library libopencsd, the build doesn't
complain the feature failure and continue to build the tool with
disabling the CoreSight feature insteadly.

This patch changes the building behaviour, when build perf tool with the
option 'CORESIGHT=1' and detect the failure for testing feature
libopencsd, the build process will be aborted and it shows the complaint
info.

Committer testing:

First make sure there is no opencsd library installed:

$ rpm -qa | grep -i csd
$ sudo rm -rf `find /usr/local -name "*csd*"`
$ find /usr/local -name "*csd*"
$

Then cleanup the perf build output directory:

$ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ;
$

And try to build explicitely asking for coresight:

$ make O=/tmp/build/perf CORESIGHT=1 O=/tmp/build/perf -C tools/perf install-bin
make: Entering directory '/var/home/acme/git/perf/tools/perf'
BUILD: Doing 'make -j24' parallel build
HOSTCC /tmp/build/perf/fixdep.o
HOSTLD /tmp/build/perf/fixdep-in.o
LINK /tmp/build/perf/fixdep
Makefile.config:493: *** Error: No libopencsd library found or the version is not up-to-date. Please install recent libopencsd to build with CORESIGHT=1. Stop.
make[1]: *** [Makefile.perf:238: sub-make] Error 2
make: *** [Makefile:113: install-bin] Error 2
make: Leaving directory '/var/home/acme/git/perf/tools/perf'
$

Now install the opencsd library present in Fedora 34:

$ sudo dnf install opencsd-devel
<SNIP>
Installed:
opencsd-1.0.0-1.fc34.x86_64 opencsd-devel-1.0.0-1.fc34.x86_64
Complete!
$

Try again building with coresight:

$ make O=/tmp/build/perf CORESIGHT=1 O=/tmp/build/perf -C tools/perf install-bin
make: Entering directory '/var/home/acme/git/perf/tools/perf'
BUILD: Doing 'make -j24' parallel build
Makefile.config:493: *** Error: No libopencsd library found or the version is not up-to-date. Please install recent libopencsd to build with CORESIGHT=1. Stop.
make[1]: *** [Makefile.perf:238: sub-make] Error 2
make: *** [Makefile:113: install-bin] Error 2
make: Leaving directory '/var/home/acme/git/perf/tools/perf'
$

Since Fedora 34 is pretty recent, one assumes we need to get it from its
upstream git repository, use rpm to find where that is:

$ rpm -q --qf "%{URL}\n" opencsd
https://github.com/Linaro/OpenCSD
$

Go there, clone the repo, build it and install into /usr/local, then try
again:

$ cd ~acme/git/perf
$ make O=/tmp/build/perf VF=1 CORESIGHT=1 O=/tmp/build/perf -C tools/perf install-bin | grep -i opencsd
... libopencsd: [ on ]
PERF_VERSION = 5.14.g454719f67a3d
$ export LD_LIBRARY_PATH=/usr/local/lib
$ ldd ~/bin/perf | grep opencsd
libopencsd_c_api.so.1 => /usr/local/lib/libopencsd_c_api.so.1 (0x00007f28f78a4000)
libopencsd.so.1 => /usr/local/lib/libopencsd.so.1 (0x00007f28f6a2e000)
$

Now it works.

Requested-by: Arnaldo Carvalho de Melo <[email protected]>
Signed-off-by: Leo Yan <[email protected]>
Tested-by: Arnaldo Carvalho de Melo <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: James Clark <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Mathieu Poirier <[email protected]>
Cc: Mike Leach <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Suzuki Poulouse <[email protected]>
Cc: [email protected]
Link: http://lore.kernel.org/lkml/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index b051c0c312c5243a..b66cf128cbc76d07 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -489,6 +489,8 @@ ifdef CORESIGHT
CFLAGS += -DCS_RAW_PACKED
endif
endif
+ else
+ dummy := $(error Error: No libopencsd library found or the version is not up-to-date. Please install recent libopencsd to build with CORESIGHT=1)
endif
endif

2021-09-02 19:59:34

by Leo Yan

[permalink] [raw]
Subject: Re: [PATCH v2] perf build: Report failure for testing feature libopencsd

On Thu, Sep 02, 2021 at 09:22:21AM -0300, Arnaldo Carvalho de Melo wrote:
> Em Thu, Sep 02, 2021 at 04:18:00PM +0800, Leo Yan escreveu:
> > When build perf tool with passing option 'CORESIGHT=1' explicitly, if
> > the feature test fails for library libopencsd, the build doesn't
> > complain the feature failure and continue to build the tool with
> > disabling the CoreSight feature insteadly.
> >
> > This patch changes the building behaviour, when build perf tool with the
> > option 'CORESIGHT=1' and detect the failure for testing feature
> > libopencsd, the build process will be aborted and it shows the complaint
> > info.
>
> Thanks, added some committer notes to show that it now works:
>
> commit 8fb36b1f54873870262810d3db10526559e1d6c2
> Author: Leo Yan <[email protected]>
> Date: Thu Sep 2 16:18:00 2021 +0800
>
> perf build: Report failure for testing feature libopencsd
>
> When build perf tool with passing option 'CORESIGHT=1' explicitly, if
> the feature test fails for library libopencsd, the build doesn't
> complain the feature failure and continue to build the tool with
> disabling the CoreSight feature insteadly.
>
> This patch changes the building behaviour, when build perf tool with the
> option 'CORESIGHT=1' and detect the failure for testing feature
> libopencsd, the build process will be aborted and it shows the complaint
> info.
>
> Committer testing:
>
> First make sure there is no opencsd library installed:
>
> $ rpm -qa | grep -i csd
> $ sudo rm -rf `find /usr/local -name "*csd*"`
> $ find /usr/local -name "*csd*"
> $
>
> Then cleanup the perf build output directory:
>
> $ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ;
> $
>
> And try to build explicitely asking for coresight:
>
> $ make O=/tmp/build/perf CORESIGHT=1 O=/tmp/build/perf -C tools/perf install-bin

The build command contains duplicate 'O=/tmp/build/perf'.

> make: Entering directory '/var/home/acme/git/perf/tools/perf'
> BUILD: Doing 'make -j24' parallel build
> HOSTCC /tmp/build/perf/fixdep.o
> HOSTLD /tmp/build/perf/fixdep-in.o
> LINK /tmp/build/perf/fixdep
> Makefile.config:493: *** Error: No libopencsd library found or the version is not up-to-date. Please install recent libopencsd to build with CORESIGHT=1. Stop.
> make[1]: *** [Makefile.perf:238: sub-make] Error 2
> make: *** [Makefile:113: install-bin] Error 2
> make: Leaving directory '/var/home/acme/git/perf/tools/perf'
> $
>
> Now install the opencsd library present in Fedora 34:
>
> $ sudo dnf install opencsd-devel
> <SNIP>
> Installed:
> opencsd-1.0.0-1.fc34.x86_64 opencsd-devel-1.0.0-1.fc34.x86_64
> Complete!
> $
>
> Try again building with coresight:
>
> $ make O=/tmp/build/perf CORESIGHT=1 O=/tmp/build/perf -C tools/perf install-bin
> make: Entering directory '/var/home/acme/git/perf/tools/perf'
> BUILD: Doing 'make -j24' parallel build
> Makefile.config:493: *** Error: No libopencsd library found or the version is not up-to-date. Please install recent libopencsd to build with CORESIGHT=1. Stop.
> make[1]: *** [Makefile.perf:238: sub-make] Error 2
> make: *** [Makefile:113: install-bin] Error 2
> make: Leaving directory '/var/home/acme/git/perf/tools/perf'
> $
>
> Since Fedora 34 is pretty recent, one assumes we need to get it from its
> upstream git repository, use rpm to find where that is:
>
> $ rpm -q --qf "%{URL}\n" opencsd
> https://github.com/Linaro/OpenCSD
> $
>
> Go there, clone the repo, build it and install into /usr/local, then try
> again:
>
> $ cd ~acme/git/perf
> $ make O=/tmp/build/perf VF=1 CORESIGHT=1 O=/tmp/build/perf -C tools/perf install-bin | grep -i opencsd
> ... libopencsd: [ on ]
> PERF_VERSION = 5.14.g454719f67a3d
> $ export LD_LIBRARY_PATH=/usr/local/lib
> $ ldd ~/bin/perf | grep opencsd
> libopencsd_c_api.so.1 => /usr/local/lib/libopencsd_c_api.so.1 (0x00007f28f78a4000)
> libopencsd.so.1 => /usr/local/lib/libopencsd.so.1 (0x00007f28f6a2e000)
> $
>
> Now it works.

Good to know the very detailed steps. Thanks a lot for writing up
this!

Leo

2021-09-02 19:59:59

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH v2] perf build: Report failure for testing feature libopencsd



On September 2, 2021 9:45:29 AM GMT-03:00, Leo Yan <[email protected]> wrote:
>On Thu, Sep 02, 2021 at 09:22:21AM -0300, Arnaldo Carvalho de Melo wrote:
>> Em Thu, Sep 02, 2021 at 04:18:00PM +0800, Leo Yan escreveu:
>> > When build perf tool with passing option 'CORESIGHT=1' explicitly, if
>> > the feature test fails for library libopencsd, the build doesn't
>> > complain the feature failure and continue to build the tool with
>> > disabling the CoreSight feature insteadly.
>> >
>> > This patch changes the building behaviour, when build perf tool with the
>> > option 'CORESIGHT=1' and detect the failure for testing feature
>> > libopencsd, the build process will be aborted and it shows the complaint
>> > info.
>>
>> Thanks, added some committer notes to show that it now works:
>>
>> commit 8fb36b1f54873870262810d3db10526559e1d6c2
>> Author: Leo Yan <[email protected]>
>> Date: Thu Sep 2 16:18:00 2021 +0800
>>
>> perf build: Report failure for testing feature libopencsd
>>
>> When build perf tool with passing option 'CORESIGHT=1' explicitly, if
>> the feature test fails for library libopencsd, the build doesn't
>> complain the feature failure and continue to build the tool with
>> disabling the CoreSight feature insteadly.
>>
>> This patch changes the building behaviour, when build perf tool with the
>> option 'CORESIGHT=1' and detect the failure for testing feature
>> libopencsd, the build process will be aborted and it shows the complaint
>> info.
>>
>> Committer testing:
>>
>> First make sure there is no opencsd library installed:
>>
>> $ rpm -qa | grep -i csd
>> $ sudo rm -rf `find /usr/local -name "*csd*"`
>> $ find /usr/local -name "*csd*"
>> $
>>
>> Then cleanup the perf build output directory:
>>
>> $ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ;
>> $
>>
>> And try to build explicitely asking for coresight:
>>
>> $ make O=/tmp/build/perf CORESIGHT=1 O=/tmp/build/perf -C tools/perf install-bin
>
>The build command contains duplicate 'O=/tmp/build/perf'.

Oops, I'll fix it, thanks.

- Arnaldo