From: Felix Moessbauer <felix.moessbauer@siemens.com>
To: isar-users@googlegroups.com, amikan@ilbers.de, jan.kiszka@siemens.com
Cc: henning.schild@siemens.com,
Felix Moessbauer <felix.moessbauer@siemens.com>
Subject: [PATCH v2 2/2] Add wrapper to load correct python perf module based on kernel
Date: Tue, 27 Apr 2021 11:24:58 +0200 [thread overview]
Message-ID: <20210427092458.4261-3-felix.moessbauer@siemens.com> (raw)
In-Reply-To: <4d3f03d0-817a-4815-1a37-ce91388463ab@ilbers.de>
This patch adds a wrapper around the versioned python bindings of
perf. The wrapper takes care of detecting the current kernel version
and loading the perf_<version> module. Then, it mapps this module
to just perf, so downstream python modules just have to `import perf`
instead of the versioned version.
Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
.../files/debian/linux-base.install | 6 +++++
.../files/lib/python3/dist-packages/perf.py | 23 +++++++++++++++++
.../recipes-core/linux-base/linux-base_4.6.bb | 25 +++++++++++++++++++
3 files changed, 54 insertions(+)
create mode 100644 meta-isar/recipes-core/linux-base/files/debian/linux-base.install
create mode 100644 meta-isar/recipes-core/linux-base/files/lib/python3/dist-packages/perf.py
create mode 100644 meta-isar/recipes-core/linux-base/linux-base_4.6.bb
diff --git a/meta-isar/recipes-core/linux-base/files/debian/linux-base.install b/meta-isar/recipes-core/linux-base/files/debian/linux-base.install
new file mode 100644
index 0000000..b94175d
--- /dev/null
+++ b/meta-isar/recipes-core/linux-base/files/debian/linux-base.install
@@ -0,0 +1,6 @@
+bin/linux-check-removal usr/bin
+bin/linux-update-symlinks usr/bin
+bin/linux-version usr/bin
+bin/perf usr/bin
+lib/DebianLinux.pm usr/share/perl5
+lib/python3/dist-packages/perf.py usr/lib/python3/dist-packages/
diff --git a/meta-isar/recipes-core/linux-base/files/lib/python3/dist-packages/perf.py b/meta-isar/recipes-core/linux-base/files/lib/python3/dist-packages/perf.py
new file mode 100644
index 0000000..26d3e81
--- /dev/null
+++ b/meta-isar/recipes-core/linux-base/files/lib/python3/dist-packages/perf.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# Wrapper to load the kernel-specific version
+# of the python perf module
+
+import platform
+
+uname = platform.uname().release
+kvers = uname.split('.')
+
+if len(kvers) < 2:
+ raise RuntimeError('Could not detect kernel version in: {}'.format(kvers))
+try:
+ perf = __import__('perf_{}_{}'.format(kvers[0], kvers[1]))
+ symbols = [symbol for symbol in perf.__dict__ if not symbol.startswith("_")]
+ globals().update({symbol: getattr(perf, symbol) for symbol in symbols})
+ del perf
+ del symbols
+except ModuleNotFoundError:
+ raise ModuleNotFoundError('perf package not found. Install debian package linux-perf-{}.{}'.format(kvers[0],kvers[1]))
+
+del platform
+del uname
+del kvers
diff --git a/meta-isar/recipes-core/linux-base/linux-base_4.6.bb b/meta-isar/recipes-core/linux-base/linux-base_4.6.bb
new file mode 100644
index 0000000..178e4cb
--- /dev/null
+++ b/meta-isar/recipes-core/linux-base/linux-base_4.6.bb
@@ -0,0 +1,25 @@
+# Patched version of linux-base that includes perf python wrapper
+#
+# This software is a part of ISAR.
+# Copyright (c) Siemens AG, 2021
+#
+# SPDX-License-Identifier: MIT
+
+inherit dpkg
+
+SRC_URI = " \
+ apt://${PN} \
+ file://lib/python3/dist-packages/perf.py \
+ file://debian/linux-base.install \
+ "
+
+MAINTAINER ?= "isar-users <isar-users@googlegroups.com>"
+CHANGELOG_V ?= "<orig-version>+isar"
+
+do_prepare_build() {
+ mkdir -p ${S}/lib/python3/dist-packages
+ cp -r ${WORKDIR}/lib ${S}
+ cp -r ${WORKDIR}/debian ${S}
+ cd ${S}
+ deb_add_changelog
+}
--
2.20.1
next prev parent reply other threads:[~2021-04-27 9:25 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-19 12:41 [PATCH 0/1] RFC: Package perf from linux kernel tools Felix Moessbauer
2021-01-19 12:41 ` [PATCH 1/1] " Felix Moessbauer
2021-01-19 16:31 ` Baurzhan Ismagulov
2021-01-20 15:23 ` Moessbauer, Felix
2021-01-20 15:26 ` Henning Schild
2021-01-21 10:52 ` [PATCH v2 0/2] " Felix Moessbauer
2021-01-21 11:56 ` Jan Kiszka
2021-01-21 15:00 ` Moessbauer, Felix
2021-01-21 16:35 ` Jan Kiszka
2021-02-09 8:58 ` Anton Mikanovich
2021-02-17 10:18 ` Baurzhan Ismagulov
2021-01-21 10:52 ` [PATCH 1/2] feat: package linux-perf-<version> in kernel recipe Felix Moessbauer
2021-02-17 10:28 ` Baurzhan Ismagulov
2021-02-18 8:01 ` Moessbauer, Felix
2021-02-18 8:28 ` Jan Kiszka
2021-04-22 9:52 ` Anton Mikanovich
2021-04-27 9:24 ` [RFC v2 0/2] " Felix Moessbauer
2021-04-27 9:24 ` [PATCH v2 1/2] RFC: Package perf from linux kernel tools Felix Moessbauer
2021-04-27 9:24 ` Felix Moessbauer [this message]
2021-01-21 10:52 ` [PATCH 2/2] feat: add and package python bindings for perf Felix Moessbauer
2021-01-20 11:12 ` [PATCH 0/1] RFC: Package perf from linux kernel tools Henning Schild
2021-01-20 11:21 ` Henning Schild
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=20210427092458.4261-3-felix.moessbauer@siemens.com \
--to=felix.moessbauer@siemens.com \
--cc=amikan@ilbers.de \
--cc=henning.schild@siemens.com \
--cc=isar-users@googlegroups.com \
--cc=jan.kiszka@siemens.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox