Re: [PATCH v2] perf build: Report failure for testing feature libopencsd
From: Leo Yan
Date: Thu Sep 02 2021 - 08:45:39 EST
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 <leo.yan@xxxxxxxxxx>
> 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