• J
    perf python: Autodetect python3 binary · 79373082
    James Clark 提交于
    Some distros don't come with python2 and only have python3 available.
    This causes the "'import perf' in python" self test to fail.
    
    This change adds python3 to the list of possible python versions
    that are autodetected but maintains the priorities for
    'python2' and 'python' detection. Python3 has the lowest priority.
    
    Committer notes:
    
    On a fedora system without python2 packages the 'perf test python'
    continues to work:
    
      # python2
      bash: python2: command not found...
      Similar command is: 'python'
      # rpm -qa | grep python2
      #
    
    That "Similar command" gives the clue:
    
      # rpm -qf /usr/bin/python
      python-unversioned-command-3.8.5-5.fc32.noarch
      # rpm -ql python-unversioned-command
      /usr/bin/python
      /usr/share/man/man1/python.1.gz
      #
    
    With it in place the 'python' binary is found and perf builds the python
    binding using python3:
    
      # perf test -v python
      19: 'import perf' in python                                         :
      --- start ---
      test child forked, pid 379988
      python usage test: "echo "import sys ; sys.path.append('/tmp/build/perf/python'); import perf" | '/usr/bin/python' "
      test child finished with 0
      ---- end ----
      'import perf' in python: Ok
      #
    
    Looking at that path:
    
      # ls -la /tmp/build/perf/python
      total 1864
      drwxrwxr-x.  2 acme acme      60 Oct 13 16:20 .
      drwxrwxr-x. 18 acme acme    4420 Oct 13 16:28 ..
      -rwxrwxr-x.  1 acme acme 1907216 Oct 13 16:28 perf.cpython-38-x86_64-linux-gnu.so
      #
    
    And:
    
      # ldd ~/bin/perf | grep python
      	libpython3.8.so.1.0 => /lib64/libpython3.8.so.1.0 (0x00007f5471187000)
      #
    
    As soon as we remove it:
    
      # rpm -e python-unversioned-command-3.8.5-5.fc32.noarch
      # hash -r
      # python
      bash: python: command not found...
      Install package 'python-unversioned-command' to provide command 'python'? [N/y] n
      #
    
    And rebuilding perf now doesn't find python in the system:
    
      make: Entering directory '/home/acme/git/perf/tools/perf'
        BUILD:   Doing 'make -j24' parallel build
      <SNIP>
      Makefile.config:786: No python interpreter was found: disables Python support - please install python-devel/python-dev
      <SNIP>
    
    After this patch:
    
      $ rpm -qi python-unversioned-command
      package python-unversioned-command is not installed
      $
      $ python
      bash: python: command not found...
      Install package 'python-unversioned-command' to provide command 'python'? [N/y] ^C
      $
      $ m
      make: Entering directory '/home/acme/git/perf/tools/perf'
        BUILD:   Doing 'make -j24' parallel build
      <SNIP>
        CC       /tmp/build/perf/tests/attr.o
        CC       /tmp/build/perf/tests/python-use.o
        DESCEND  plugins
        GEN      /tmp/build/perf/python/perf.so
        INSTALL  trace_plugins
        LD       /tmp/build/perf/tests/perf-in.o
        LD       /tmp/build/perf/perf-in.o
        LINK     /tmp/build/perf/perf
      <SNIP>
      make: Leaving directory '/home/acme/git/perf/tools/perf'
      19: 'import perf' in python                                         : Ok
      $ ldd ~/bin/perf | grep python
      	libpython3.8.so.1.0 => /lib64/libpython3.8.so.1.0 (0x00007f2c8c708000)
      $ ls -la /tmp/build/perf/python
      total 1864
      drwxrwxr-x.  2 acme acme      60 Oct 13 16:20 .
      drwxrwxr-x. 18 acme acme    4420 Oct 13 16:31 ..
      -rwxrwxr-x.  1 acme acme 1907216 Oct 13 16:31 perf.cpython-38-x86_64-linux-gnu.so
      $
    Signed-off-by: NJames Clark <james.clark@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    LPU-Reference: 20201005080645.6588-1-james.clark@arm.com
    Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    79373082
Makefile.config 34.8 KB