From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>,
Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Clark Williams <williams@redhat.com>,
Kate Carcia <kcarcia@redhat.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Adrian Hunter <adrian.hunter@intel.com>,
Dmitrii Dolgov <9erthalion6@gmail.com>,
James Clark <james.clark@arm.com>,
Kang Minchul <tegongkang@gmail.com>,
Kan Liang <kan.liang@linux.intel.com>,
Kautuk Consul <kconsul@ventanamicro.com>,
Leo Yan <leo.yan@linaro.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Nikita Shubin <n.shubin@yadro.com>,
Yang Jihong <yangjihong1@huawei.com>,
Steven Rostedt <rostedt@goodmis.org>,
Andrii Nakryiko <andrii@kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: Re: [GIT PULL] perf tools changes for v6.2: 1st batch
Date: Tue, 20 Dec 2022 10:08:02 -0300 [thread overview]
Message-ID: <Y6GzshPKxK2Oiqjg@kernel.org> (raw)
In-Reply-To: <CAHk-=wjpO5LBx-mVD8+GBj3u7iNJHXn5y4OreKxsoRGi+4vMCQ@mail.gmail.com>
tldr;: if you do:
$ make -C tools clean
$ sudo dnf remove python2 python2-devel
$ sudo dnf install python-devel
It should build cleanly, below I looked at the various places these
feature detections are made and found places for improving messages,
etc.
Ian, that "jevent generation" gets confused when python2 _and_ python3
is installed, please take a look at that.
- Arnaldo
Em Sat, Dec 17, 2022 at 01:55:25PM -0600, Linus Torvalds escreveu:
> On Sat, Dec 17, 2022 at 8:50 AM Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> > The python3-setuptools package is needed to build the python binding, so
> > that one can use things like:
>
> So this fixes the error, but there's some other reason for it.
>
> I have
>
> Package python3-setuptools-59.6.0-3.fc36.noarch is already installed.
>
> and with that patch the 'perf' build now works for me, but it says:
>
> Makefile.config:898: Missing python setuptools, the python binding
> won't be built, please install python3-setuptools or equivalent
>
> and then (pre-existing)
>
> Makefile.config:921: Python interpreter too old (older than 3.6)
> disabling jevent generation
>
> but I have
>
> python3-3.10.8-3.fc36.x86_64
>
> Now, for some reason I *also* have python2 installed, but that one is
> called "python2".
> [ Me trying to figure things out ]
>
> Ok, so if I uninstall my old python2 install, I now get
>
> Makefile.config:880: No python interpreter was found: disables
> Python support - please install python-devel/python-dev
> Makefile.config:915: No python interpreter disabling jevent generation
>
> ok, so I didn't have 'python3-devel' installed. Installing that fixes
> some things, but then I get
>
> Makefile.config:889: No 'Python.h' (for Python 2.x support) was
> found: disables Python support - please install
> python-devel/python-dev
Humm, I couldn't reproduce this one, as I have:
⬢[acme@toolbox perf]$ grep libpython /tmp/build/perf/FEATURE-DUMP
feature-libpython=1
⬢[acme@toolbox perf]$
And that message only happens when that feature-libpython != 1
That is set by this feature query snippet:
⬢[acme@toolbox perf]$ cat tools/build/feature/test-libpython.c
// SPDX-License-Identifier: GPL-2.0
#include <Python.h>
int main(void)
{
Py_Initialize();
return 0;
}
#undef _GNU_SOURCE
⬢[acme@toolbox perf]$
One can see the output of building it at (if you build it without O=,
please look at tools/build/feature/test-libpython.make.output instead):
):
⬢[acme@toolbox perf]$ cat /tmp/build/perf/feature/test-libpython.make.output
⬢[acme@toolbox perf]$
In my case, it is working, so empty make.output file and the test binary
works and links with python3 (tools/build/feature/test-libpython.bin
when building without O=):
⬢[acme@toolbox perf]$ file /tmp/build/perf/feature/test-libpython.bin
/tmp/build/perf/feature/test-libpython.bin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=601e3a065cc8e045e7a46199234c0bbf80707981, for GNU/Linux 3.2.0, not stripped
⬢[acme@toolbox perf]$ ldd /tmp/build/perf/feature/test-libpython.bin
linux-vdso.so.1 (0x00007ffc371fe000)
libpython3.10.so.1.0 => /lib64/libpython3.10.so.1.0 (0x00007fddb0200000)
libcrypt.so.2 => /lib64/libcrypt.so.2 (0x00007fddb05f9000)
libm.so.6 => /lib64/libm.so.6 (0x00007fddb0122000)
libc.so.6 => /lib64/libc.so.6 (0x00007fddafe00000)
/lib64/ld-linux-x86-64.so.2 (0x00007fddb063f000)
⬢[acme@toolbox perf]$
The needed file is available and is part of the python3-devel file:
⬢[acme@toolbox perf]$ ls -la /usr/include/python3.10/Python.h
-rw-r--r--. 1 root root 3224 Oct 11 08:21 /usr/include/python3.10/Python.h
⬢[acme@toolbox perf]$ rpm -qf /usr/include/python3.10/Python.h
python3-devel-3.10.8-3.fc36.x86_64
⬢[acme@toolbox perf]$
That message needs updating, its from a long time ago:
9734163b6ee1425c6 tools/perf/config/Makefile (Ingo Molnar 2013-09-30 15:18:37 +0200 888) ifneq ($(feature-libpython), 1)
6c5aa23704e2786eb tools/perf/config/Makefile (Ingo Molnar 2015-02-28 09:33:45 +0100 889) $(call disable-python,No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev)
6e533cf12de06368a tools/perf/config/Makefile (Jiri Olsa 2013-03-18 00:35:32 +0100 890) else
> so apparently perf really wants *both* python2 and python3 installed.
> Isn't that a bit excessive?
I'll update that message, its one or the other, and we will work to make
it support only python3 as python2 is deprecated.
> Anyway, it's clearly something about the install on this laptop, but
> the error messages and the "this package is missing" things are
> clearly not entirely right.
Right, perhaps a 'make -C tools clean' may clean some previous feature
detection that stuck somehow? I'll do continue tinkering here to see if
I get this in a better shape.
> Whatever. It does build cleanly now for me, and I'll ignore that "No
> 'Python.h' (for Python 2.x support)" thing.
The only time I got this message was now that I uninstalled
python3-devel:
Makefile.config:889: No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev
The next one I got because I have python2 installed:
⬢[acme@toolbox perf]$ rpm -qa | grep python2
python2.7-2.7.18-22.fc36.x86_64
Makefile.config:921: Python interpreter too old (older than 3.6) disabling jevent generation
Removing python2 I get:
Makefile.config:880: No python interpreter was found: disables Python support - please install python-devel/python-dev
Makefile.config:915: No python interpreter disabling jevent generation
So you get this message:
> Makefile.config:889: No 'Python.h' (for Python 2.x support) was
> found: disables Python support - please install
> python-devel/python-dev
When you have python2 and python3 but no python3-devel nor
python2-devel:
⬢[acme@toolbox perf]$ rpm -q python3
python3-3.10.8-3.fc36.x86_64
⬢[acme@toolbox perf]$ rpm -qa | grep python2
python2.7-2.7.18-22.fc36.x86_64
⬢[acme@toolbox perf]$ rpm -q python2-devel
package python2-devel is not installed
⬢[acme@toolbox perf]$ rpm -q python3-devel
package python3-devel is not installed
⬢[acme@toolbox perf]$ m
make: Entering directory '/var/home/acme/git/perf/tools/perf'
BUILD: Doing 'make -j32' parallel build
<SNIP>
Makefile.config:889: No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev
Makefile.config:921: Python interpreter too old (older than 3.6) disabling jevent generation
Auto-detecting system features:
<SNIP>
... libpython: [ OFF ]
⬢[acme@toolbox perf]$
If I then uninstall python2:
⬢[acme@toolbox perf]$ sudo dnf remove python2
It changes to:
Makefile.config:880: No python interpreter was found: disables Python support - please install python-devel/python-dev
Makefile.config:915: No python interpreter disabling jevent generation
Which is more sensible, then if I install python-devel:
⬢[acme@toolbox perf]$ sudo dnf install python-devel
$ sudo dnf install python-devel
I see no warnings, clean build and libpython detected:
... libpython: [ on ]
⬢[acme@toolbox perf]$ ldd /tmp/build/perf/perf | grep python
libpython3.10.so.1.0 => /lib64/libpython3.10.so.1.0 (0x00007f1eea200000)
⬢[acme@toolbox perf]$
- Arnaldo
next prev parent reply other threads:[~2022-12-20 13:08 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-16 14:36 [GIT PULL] perf tools changes for v6.2: 1st batch Arnaldo Carvalho de Melo
2022-12-16 19:41 ` Linus Torvalds
2022-12-17 14:50 ` Arnaldo Carvalho de Melo
2022-12-17 16:05 ` Steven Rostedt
2022-12-17 19:55 ` Linus Torvalds
2022-12-17 20:37 ` Arnaldo Carvalho de Melo
2022-12-20 13:08 ` Arnaldo Carvalho de Melo [this message]
2022-12-16 19:44 ` pr-tracker-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y6GzshPKxK2Oiqjg@kernel.org \
--to=acme@kernel.org \
--cc=9erthalion6@gmail.com \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=andrii@kernel.org \
--cc=irogers@google.com \
--cc=james.clark@arm.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=kcarcia@redhat.com \
--cc=kconsul@ventanamicro.com \
--cc=leo.yan@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=n.shubin@yadro.com \
--cc=namhyung@kernel.org \
--cc=rostedt@goodmis.org \
--cc=tegongkang@gmail.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=williams@redhat.com \
--cc=yangjihong1@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.