Re: [PATCH 1/2] perf: Be compatible with all python versions when fetching ldflags

From: Sam Lunt
Date: Wed Mar 25 2020 - 16:31:28 EST


On Wed, Mar 25, 2020 at 2:26 PM Arnaldo Carvalho de Melo
<arnaldo.melo@xxxxxxxxx> wrote:
>
> Em Wed, Mar 25, 2020 at 09:40:34AM -0500, Sam Lunt escreveu:
> > On Wed, Mar 25, 2020 at 8:30 AM Arnaldo Carvalho de Melo
> > <arnaldo.melo@xxxxxxxxx> wrote:
> > >
> > > Em Mon, Feb 17, 2020 at 10:24:27AM +0800, He Zhe escreveu:
> > > >
> > > >
> > > > On 2/17/20 6:22 AM, Jiri Olsa wrote:
> > > > > On Fri, Feb 14, 2020 at 02:21:05AM +0800, zhe.he@xxxxxxxxxxxxx wrote:
> > > > >> From: He Zhe <zhe.he@xxxxxxxxxxxxx>
> > > > >>
> > > > >> Since Python v3.8.0, with the following commit
> > > > >> 0a8e57248b91 ("bpo-36721: Add --embed option to python-config (GH-13500)"),
> > > > > we got similar change recently.. might have not been picked up yet
> > > > >
> > > > > https://lore.kernel.org/lkml/20200131181123.tmamivhq4b7uqasr@xxxxxxxxx/
> > > >
> > > > Thanks for pointing out.
> > >
> > > So, just with your patch:
> > >
> > > [acme@five perf]$ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf
> > > [acme@five perf]$ make PYTHON=python3 -C tools/perf O=/tmp/build/perf install-bin |& grep python
> > > ... libpython: [ OFF ]
> > > Makefile.config:750: No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev
> > > CC /tmp/build/perf/tests/python-use.o
> > > [acme@five perf]$
> > >
> > > [acme@five perf]$ rpm -q python2-devel python3-devel python-devel
> > > package python2-devel is not installed
> > > python3-devel-3.7.6-2.fc31.x86_64
> > > package python-devel is not installed
> > > [acme@five perf]$
> > >
> > > [acme@five perf]$ cat /tmp/build/perf/feature/test-libpython.make.output
> > > /bin/sh: --configdir: command not found
> > > [acme@five perf]$ cat /tmp/build/perf/feature/test-libpython
> > > test-libpython.make.output test-libpython-version.make.output
> > > [acme@five perf]$ cat /tmp/build/perf/feature/test-libpython-version.make.output
> > > /bin/sh: --configdir: command not found
> > > [acme@five perf]$
> > >
> > >
> > > Without your patch:
> > >
> > > [acme@five perf]$ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf
> > > [acme@five perf]$ make PYTHON=python3 -C tools/perf O=/tmp/build/perf install-bin |& grep python
> > > ... libpython: [ on ]
> > > GEN /tmp/build/perf/python/perf.so
> > > MKDIR /tmp/build/perf/scripts/python/Perf-Trace-Util/
> > > CC /tmp/build/perf/scripts/python/Perf-Trace-Util/Context.o
> > > LD /tmp/build/perf/scripts/python/Perf-Trace-Util/perf-in.o
> > > CC /tmp/build/perf/tests/python-use.o
> > > CC /tmp/build/perf/util/scripting-engines/trace-event-python.o
> > > INSTALL python-scripts
> > > [acme@five perf]$
> > >
> > > [acme@five perf]$ ldd /tmp/build/perf/perf |& grep python
> > > libpython3.7m.so.1.0 => /lib64/libpython3.7m.so.1.0 (0x00007f11dd1ee000)
> > > [acme@five perf]$ perf -vv |& grep -i python
> > > libpython: [ on ] # HAVE_LIBPYTHON_SUPPORT
> > > [acme@five perf]$
> > >
> > > What am I missing?
> >
> > It looks like you are using python3.7, but the change in behavior for
> > python-config happened in version 3.8
>
> Humm, but shouldn't this continue to work with python3.7?

Oh, my mistake, I didn't read the output carefully. It should
obviously still work with old versions, yes. I actually submitted a
similar patch, and it seemed to work when I used python 3.7. I wonder
if the issue is the "||" operator in the subshell.

https://lore.kernel.org/lkml/20200131181123.tmamivhq4b7uqasr@xxxxxxxxx/


> - Arnaldo
>
> > > [acme@five perf]$ cat /etc/redhat-release
> > > Fedora release 31 (Thirty One)
> > > [acme@five perf]$
> > >
> > > - Arnaldo
>
> --
>
> - Arnaldo