ACK: [U/P][PATCH] UBUNTU: [Packaging] linux-perf: Fix python perf library location
Kevin Becker
kevin.becker at canonical.com
Thu Mar 20 16:37:57 UTC 2025
On Thu, Mar 20, 2025 at 10:44 AM Juerg Haefliger
<juerg.haefliger at canonical.com> wrote:
>
> BugLink: https://bugs.launchpad.net/bugs/2103653
>
> Now that we have a single unversioned linux-perf package per series,
> there's only one python perf library and we no longer need a wrapper
> to find the library that matches the running kernel. So put the library
> in the correct location /usr/lib/python3/dist-packages/ so that Python
> can find it on its own and remove the wrapper.
>
> Signed-off-by: Juerg Haefliger <juerg.haefliger at canonical.com>
> ---
> debian/rules.d/2-binary-arch.mk | 5 +++--
> debian/rules.d/3-binary-indep.mk | 7 -------
> debian/tools/python-perf.py | 31 -------------------------------
> 3 files changed, 3 insertions(+), 40 deletions(-)
> delete mode 100644 debian/tools/python-perf.py
>
> diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
> index 7c89fa14f27f..187a551d2f76 100644
> --- a/debian/rules.d/2-binary-arch.mk
> +++ b/debian/rules.d/2-binary-arch.mk
> @@ -731,16 +731,17 @@ ifeq ($(do_tools_rtla),true)
> endif
> ifeq ($(do_tools_perf),true)
> install -d $(perfpkgdir)/usr/bin
> - install -d $(perfpkgdir)/usr/lib
> install -m755 $(builddirpa)/tools/perf/perf \
> $(perfpkgdir)/usr/bin/perf
> ifeq ($(do_tools_perf_jvmti),true)
> + install -d $(perfpkgdir)/usr/lib
> install -m644 $(builddirpa)/tools/perf/libperf-jvmti.so \
> $(perfpkgdir)/usr/lib/
> endif
> ifeq ($(do_tools_perf_python),true)
> + install -d $(perfpkgdir)/usr/lib/python3/dist-packages
> install -m644 $(builddirpa)/tools/perf/python/perf.*.so \
> - $(perfpkgdir)/usr/lib/
> + $(perfpkgdir)/usr/lib/python3/dist-packages/
> endif
> endif # do_tools_perf
> ifeq ($(do_tools_bpftool),true)
> diff --git a/debian/rules.d/3-binary-indep.mk b/debian/rules.d/3-binary-indep.mk
> index 1566f40cf17e..27dbe1e7f057 100644
> --- a/debian/rules.d/3-binary-indep.mk
> +++ b/debian/rules.d/3-binary-indep.mk
> @@ -60,7 +60,6 @@ install-tools: bpftoolbashcomp = $(CURDIR)/debian/$(bpftoolpkg)/usr/share/bash-c
> install-tools: perfpkg = $(perf_pkg_name)
> install-tools: perfbin = $(CURDIR)/debian/$(perfpkg)/usr/bin
> install-tools: perfman = $(CURDIR)/debian/$(perfpkg)/usr/share/man
> -install-tools: perfpython = $(CURDIR)/debian/$(perfpkg)/usr/lib/python3/dist-packages
> install-tools: toolspkg = $(tools_common_pkg_name)
> install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin
> install-tools: toolssbin = $(CURDIR)/debian/$(toolspkg)/usr/sbin
> @@ -94,7 +93,6 @@ ifeq ($(do_tools_common),true)
> install -d $(toolsbashcomp)
> install -d $(perfbin)
> install -d $(perfman)/man1
> - install -d $(perfpython)
>
> install -m755 debian/tools/generic $(toolsbin)/usbip
> install -m755 debian/tools/generic $(toolsbin)/usbipd
> @@ -115,11 +113,6 @@ ifeq ($(do_tools_common),true)
> install -m644 $(CURDIR)/tools/power/x86/x86_energy_perf_policy/*.8 $(toolsman)/man8
> install -m644 $(CURDIR)/tools/power/x86/turbostat/*.8 $(toolsman)/man8
>
> -ifeq ($(do_tools_perf_python),true)
> - # Python wrapper module for python-perf
> - install -d $(perfpython)/perf
> - install -m644 debian/tools/python-perf.py $(perfpython)/perf/__init__.py
> -endif
> ifeq ($(do_cloud_tools),true)
> ifeq ($(do_tools_hyperv),true)
> dh_prep -p$(cloudpkg)
> diff --git a/debian/tools/python-perf.py b/debian/tools/python-perf.py
> deleted file mode 100644
> index d1991d677dcb..000000000000
> --- a/debian/tools/python-perf.py
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -import os
> -import importlib.util
> -from glob import glob
> -
> -
> -class KernelNotFoundError(Exception):
> - def __init__(self):
> - kernel_version = os.uname().release
> - flavor = kernel_version.split("-", 2)[2]
> - super().__init__(
> - f"\nWARNING: python perf module not found for kernel {kernel_version}\n\n"
> - f" You may need to install the following package for this specific kernel:\n"
> - f" linux-tools-{kernel_version}\n\n"
> - f" You may also want to install the following package to keep up to date:\n"
> - f" linux-tools-{flavor}"
> - )
> -
> -
> -# Load the actual python-perf module for the running kernel
> -_kernel_version = os.uname().release
> -_perf_dir = f"/usr/lib/linux-tools/{_kernel_version}/lib"
> -if not os.path.exists(_perf_dir):
> - raise KernelNotFoundError()
> -_perf_lib = glob(os.path.join(_perf_dir, "perf.*.so"))[-1]
> -
> -_spec = importlib.util.spec_from_file_location("perf", _perf_lib)
> -_perf = importlib.util.module_from_spec(_spec)
> -_spec.loader.exec_module(_perf)
> -
> -# Expose the 'perf' module.
> -__all__ = ["perf"]
> --
Acked-by: Kevin Becker <kevin.becker at canonical.com>
More information about the kernel-team
mailing list