Skip to content
  • Arnaldo Carvalho de Melo's avatar
    perf python: Use -Wno-redundant-decls to build with PYTHON=python3 · 4fdaadbc
    Arnaldo Carvalho de Melo authored
    [ Upstream commit 05a2f546 ]
    
    When building in ClearLinux using 'make PYTHON=python3' with gcc 8.2.1
    it fails with:
    
        GEN      /tmp/build/perf/python/perf.so
      In file included from /usr/include/python3.7m/Python.h:126,
                       from /git/linux/tools/perf/util/python.c:2:
      /usr/include/python3.7m/import.h:58:24: error: redundant redeclaration of ‘_PyImport_AddModuleObject’ [-Werror=redundant-decls]
       PyAPI_FUNC(PyObject *) _PyImport_AddModuleObject(PyObject *, PyObject *);
                              ^~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.7m/import.h:47:24: note: previous declaration of ‘_PyImport_AddModuleObject’ was here
       PyAPI_FUNC(PyObject *) _PyImport_AddModuleObject(PyObject *name,
                              ^~~~~~~~~~~~~~~~~~~~~~~~~
      cc1: all warnings being treated as errors
      error: command 'gcc' failed with exit status 1
    
    And indeed there is a redundant declaration in that Python.h file, one
    with parameter names and the other without, so just add
    -Wno-error=redundant-decls to the python setup instructions.
    
    Now perf builds with gcc in ClearLinux with the following Dockerfile:
    
      # docker.io/acmel/linux-perf-tools-build-clearlinux:latest
      FROM docker.io/clearlinux:latest
      MAINTAINER Arnaldo Carvalho de Melo <acme@kernel.org>
      RUN swupd update && \
          swupd bundle-add sysadmin-basic-dev
      RUN mkdir -m 777 -p /git /tmp/build/perf /tmp/build/objtool /tmp/build/linux && \
          groupadd -r perfbuilder && \
          useradd -m -r -g perfbuilder perfbuilder && \
          chown -R perfbuilder.perfbuilder /tmp/build/ /git/
      USER perfbuilder
      COPY rx_and_build.sh /
      ENV EXTRA_MAKE_ARGS=PYTHON=python3
      ENTRYPOINT ["/rx_and_build.sh"]
    
    Now to figure out why the build fails with clang, that is present in the
    above container as detected by the rx_and_build.sh script:
    
      clang version 6.0.1 (tags/RELEASE_601/final)
      Target: x86_64-unknown-linux-gnu
      Thread model: posix
      InstalledDir: /usr/sbin
      make: Entering directory '/git/linux/tools/perf'
        BUILD:   Doing 'make -j4' parallel build
        HOSTCC   /tmp/build/perf/fixdep.o
        HOSTLD   /tmp/build/perf/fixdep-in.o
        LINK     /tmp/build/perf/fixdep
    
      Auto-detecting system features:
      ...                         dwarf: [ OFF ]
      ...            dwarf_getlocations: [ OFF ]
      ...                         glibc: [ OFF ]
      ...                          gtk2: [ OFF ]
      ...                      libaudit: [ OFF ]
      ...                        libbfd: [ OFF ]
      ...                        libelf: [ OFF ]
      ...                       libnuma: [ OFF ]
      ...        numa_num_possible_cpus: [ OFF ]
      ...                       libperl: [ OFF ]
      ...                     libpython: [ OFF ]
      ...                      libslang: [ OFF ]
      ...                     libcrypto: [ OFF ]
      ...                     libunwind: [ OFF ]
      ...            libdw-dwarf-unwind: [ OFF ]
      ...                          zlib: [ OFF ]
      ...                          lzma: [ OFF ]
      ...                     get_cpuid: [ OFF ]
      ...                           bpf: [ OFF ]
    
      Makefile.config:331: *** No gnu/libc-version.h found, please install glibc-dev[el].  Stop.
      make[1]: *** [Makefile.perf:206: sub-make] Error 2
      make: *** [Makefile:70: all] Error 2
      make: Leaving directory '/git/linux/tools/perf'
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Thiago Macieira <thiago.macieira@intel.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-c3khb9ac86s00qxzjrueomme@git.kernel.org
    
    
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    4fdaadbc