From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Cc: "Sven Püschel" <s.pueschel@pengutronix.de>
Subject: Re: [ptxdist] [APPLIED] powertop: version bump 2.15 -> 2.16.1
Date: Fri, 13 Nov 2026 09:39:15 +0100 [thread overview]
Message-ID: <20261113083915.1379944-1-m.olbrich@pengutronix.de> (raw)
In-Reply-To: <20261027120523.1712150-1-s.pueschel@pengutronix.de>
Thanks, applied as dc49c76ca3ce42ce5a000754b07121853768fb6d.
Michael
[sent from post-receive hook]
On Fri, 13 Nov 2026 09:39:15 +0100, Sven Püschel <s.pueschel@pengutronix.de> wrote:
> In 2.16 meson has been introduced and with 2.16.1 autoconf has been
> dropped as a build system. Therefore migrated to meson.
> With the update to meson powertop is now installed to /usr/bin instead
> of /usr/sbin.
>
> As the meson dependency call in powertop did a fallback to find_library
> when the dependency call didn't find the library, it was impossible to
> prevent accidentially linking against the libpci library (as PTXdist
> doesn't have a mechanism to block a find_library call if the library is
> not selected as a dependecy). A discussion resulted in the replacement
> of the libpci dependency with a small custom implementation [1].
> Therefore backported these changes on top of 2.16.1 and dropped the
> pciutils dependency and it's corresponding switch.
>
> Also libtracefs is now a new dependency replacing the previously
> vendored libtraceevent library [2].
>
> Also added checksum files for the license.
>
> [1] https://github.com/fenrus75/powertop/issues/229
> [2] https://github.com/fenrus75/powertop/commit/2b133ed512c6852cf81cb98831bdfd585c0317bf
>
> Signed-off-by: Sven Püschel <s.pueschel@pengutronix.de>
> Message-Id: <20261027120523.1712150-1-s.pueschel@pengutronix.de>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
>
> diff --git a/patches/powertop-v2.15/autogen.sh b/patches/powertop-v2.15/autogen.sh
> deleted file mode 120000
> index 9f8a4cb7ddcb..000000000000
> --- a/patches/powertop-v2.15/autogen.sh
> +++ /dev/null
> @@ -1 +0,0 @@
> -../autogen.sh
> \ No newline at end of file
> diff --git a/patches/powertop-v2.16.1/0001-Replace-libpci-with-a-built-in-pci.ids-parser.patch b/patches/powertop-v2.16.1/0001-Replace-libpci-with-a-built-in-pci.ids-parser.patch
> new file mode 100644
> index 000000000000..06f189b7bf4c
> --- /dev/null
> +++ b/patches/powertop-v2.16.1/0001-Replace-libpci-with-a-built-in-pci.ids-parser.patch
> @@ -0,0 +1,261 @@
> +From: Arjan van de Ven <arjan@linux.intel.com>
> +Date: Fri, 23 Oct 2026 07:51:40 -0700
> +Subject: [PATCH] Replace libpci with a built-in pci.ids parser
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +PowerTOP only used libpci for a vendor:device -> name lookup. Parse
> +pci.ids directly (hwdata, misc and /usr/share locations) instead, which
> +removes the libpci build dependency, the HAVE_NO_PCI auto-detection and
> +the permanent libpci leak (valgrind suppression and release-checklist
> +exception).
> +
> +HAVE_NO_PCI is now only a test switch that prevents loading the host's
> +pci.ids; tests feed fixtures through pci_ids_parse(). Also silence a
> +constant-folded -Wformat-truncation warning in the pt_strcpy test.
> +
> +Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
> +Upstream-Status: Backport [https://github.com/fenrus75/powertop/commit/1f32bb317811230913f37d5461b5ead9a08e325b]
> +[Sven: only backported the necessary parts. Skipped test and docs]
> +Signed-off-by: Sven Püschel <s.pueschel@pengutronix.de>
> +---
> + meson.build | 10 -----
> + src/lib.cpp | 129 +++++++++++++++++++++++++++++++++++++++++++++++-------------
> + src/lib.h | 3 ++
> + 3 files changed, 105 insertions(+), 37 deletions(-)
> +
> +diff --git a/meson.build b/meson.build
> +index 03edae691be6..17ea02e51bf5 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -23,11 +23,6 @@ if not ncursesw_dep.found()
> + endif
> + endif
> +
> +-pciutils_dep = dependency('libpci', required: false)
> +-if not pciutils_dep.found()
> +- pciutils_dep = cc.find_library('pci', required: false)
> +-endif
> +-
> + libtracefs_dep = dependency('libtracefs', required: true)
> +
> + libnl3_dep = dependency('libnl-3.0', version: '>= 3.0', required: false)
> +@@ -74,10 +69,6 @@ if has_libnl20
> + conf_data.set('HAVE_LIBNL20', 1)
> + endif
> +
> +-if not pciutils_dep.found()
> +- conf_data.set('HAVE_NO_PCI', 1)
> +-endif
> +-
> + check_headers = [
> + 'fcntl.h',
> + 'libintl.h',
> +@@ -297,7 +288,6 @@ powertop_exe = executable('powertop',
> + include_directories: [src_inc, include_directories('.')],
> + dependencies: [
> + ncursesw_dep,
> +- pciutils_dep,
> + libtracefs_dep,
> + libnl_deps,
> + pthread_dep,
> +diff --git a/src/lib.cpp b/src/lib.cpp
> +index 7cf5f7c45f4f..3ace47d1c02d 100644
> +--- a/src/lib.cpp
> ++++ b/src/lib.cpp
> +@@ -26,6 +26,7 @@
> + #include <algorithm>
> + #include <atomic>
> + #include <cctype>
> ++#include <charconv>
> + #include <cmath>
> + #include <cstdint>
> + #include <cstdio>
> +@@ -40,6 +41,7 @@
> + #include <mutex>
> + #include <sstream>
> + #include <string>
> ++#include <string_view>
> + #include <utility>
> + #include <vector>
> +
> +@@ -54,12 +56,6 @@
> + #include "lib.h"
> + #include "test_framework.h"
> +
> +-#ifndef HAVE_NO_PCI
> +-extern "C" {
> +-#include <pci/pci.h>
> +-}
> +-#endif
> +-
> + extern void set_notification(const std::string &msg) __attribute__((weak));
> +
> + static int kallsyms_read = 0;
> +@@ -368,44 +364,123 @@ std::string format_watts(double W, unsigned int len)
> + return buffer;
> + }
> +
> +-#ifndef HAVE_NO_PCI
> +-static struct pci_access *pci_access;
> ++/*
> ++ * Minimal pci.ids parser. Format (see pci.ids header):
> ++ * - '#' comment lines and blank lines are ignored
> ++ * - "vvvv Vendor name" starts a vendor (column 0, 4 hex digits)
> ++ * - "<tab>dddd Device name" device of the current vendor
> ++ * - "<tab><tab>..." subsystem lines, ignored
> ++ * - "C xx Class name" and later device-class section, ends the vendor list
> ++ * Vendor and device ids are keyed as (vendor << 16 | device); a device-less
> ++ * vendor entry uses device id 0 in the separate vendor map.
> ++ */
> ++static std::map<uint16_t, std::string> pci_vendor_names;
> ++static std::map<uint32_t, std::string> pci_device_names;
> ++static bool pci_ids_loaded;
> +
> +-std::string pci_id_to_name(uint16_t vendor, uint16_t device)
> ++/* Parses exactly 4 hex digits at the start of s; returns false otherwise */
> ++static bool parse_pci_hex4(std::string_view s, uint16_t &out)
> + {
> +- const int len = 4096;
> +- std::vector<char> buf(len);
> +-
> +- if (!pci_access) {
> +- pci_access = pci_alloc();
> +- pci_init(pci_access);
> +- }
> ++ if (s.size() < 4)
> ++ return false;
> ++ unsigned int v = 0;
> ++ auto [ptr, ec] = std::from_chars(s.data(), s.data() + 4, v, 16);
> ++ if (ec != std::errc() || ptr != s.data() + 4)
> ++ return false;
> ++ out = static_cast<uint16_t>(v);
> ++ return true;
> ++}
> +
> +- const char *ret = pci_lookup_name(pci_access, buf.data(), len, PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE, vendor, device);
> +- return ret ? std::string(ret) : std::string();
> ++/* Returns the name following the id: skips the separating whitespace */
> ++static std::string pci_name_after_id(std::string_view s)
> ++{
> ++ size_t pos = s.find_first_not_of(" \t", 4);
> ++ if (pos == std::string_view::npos)
> ++ return {};
> ++ return std::string(s.substr(pos));
> + }
> +
> +-void end_pci_access(void)
> ++void pci_ids_parse(std::istream &in)
> + {
> +- if (pci_access) {
> +- pci_cleanup(pci_access);
> +- pci_access = nullptr;
> ++ pci_vendor_names.clear();
> ++ pci_device_names.clear();
> ++ pci_ids_loaded = true;
> ++
> ++ std::string line;
> ++ bool have_vendor = false;
> ++ uint16_t vendor = 0;
> ++
> ++ while (std::getline(in, line)) {
> ++ if (!line.empty() && line.back() == '\r')
> ++ line.pop_back();
> ++ if (line.empty() || line[0] == '#')
> ++ continue;
> ++
> ++ if (line[0] == '\t') {
> ++ if (!have_vendor || line.size() < 2 || line[1] == '\t' || line[1] == '#')
> ++ continue;
> ++ uint16_t device;
> ++ std::string_view body(line);
> ++ body.remove_prefix(1);
> ++ if (parse_pci_hex4(body, device))
> ++ pci_device_names[(uint32_t(vendor) << 16) | device] = pci_name_after_id(body);
> ++ continue;
> ++ }
> ++
> ++ /* The class section follows the vendor section; nothing more to read */
> ++ if (line[0] == 'C' && line.size() > 1 && line[1] == ' ')
> ++ break;
> ++
> ++ have_vendor = parse_pci_hex4(line, vendor);
> ++ if (have_vendor)
> ++ pci_vendor_names[vendor] = pci_name_after_id(line);
> + }
> + }
> +
> +-#else
> ++#ifndef HAVE_NO_PCI
> ++static void pci_ids_load_system(void)
> ++{
> ++ static const char *const paths[] = {
> ++ "/usr/share/hwdata/pci.ids",
> ++ "/usr/share/misc/pci.ids",
> ++ "/usr/share/pci.ids",
> ++ };
> ++
> ++ for (const char *path : paths) {
> ++ std::ifstream file(path);
> ++ if (file) {
> ++ pci_ids_parse(file);
> ++ return;
> ++ }
> ++ }
> ++ pci_ids_loaded = true; /* no database installed: names stay unknown */
> ++}
> ++#endif
> +
> +-std::string pci_id_to_name([[maybe_unused]] uint16_t vendor, [[maybe_unused]] uint16_t device)
> ++std::string pci_id_to_name(uint16_t vendor, uint16_t device)
> + {
> +- return std::string();
> ++#ifndef HAVE_NO_PCI
> ++ if (!pci_ids_loaded)
> ++ pci_ids_load_system();
> ++#endif
> ++
> ++ auto v = pci_vendor_names.find(vendor);
> ++ if (v == pci_vendor_names.end())
> ++ return {};
> ++
> ++ auto d = pci_device_names.find((uint32_t(vendor) << 16) | device);
> ++ if (d == pci_device_names.end())
> ++ return v->second;
> ++ return v->second + " " + d->second;
> + }
> +
> + void end_pci_access(void)
> + {
> ++ pci_vendor_names.clear();
> ++ pci_device_names.clear();
> ++ pci_ids_loaded = false;
> + }
> +
> +-#endif /* HAVE_NO_PCI */
> +-
> + int utf_ok = -1;
> +
> +
> +diff --git a/src/lib.h b/src/lib.h
> +index f3b421ad4f08..582782039b1a 100644
> +--- a/src/lib.h
> ++++ b/src/lib.h
> +@@ -31,6 +31,7 @@
> + #ifdef __cplusplus
> +
> + #include <format>
> ++#include <iosfwd>
> + #include <string_view>
> + #include <vector>
> +
> +@@ -110,6 +111,8 @@ extern std::string format_watts(double W, unsigned int len);
> +
> + extern std::string pci_id_to_name(uint16_t vendor, uint16_t device);
> + extern void end_pci_access(void);
> ++/* Replaces the vendor/device name tables with the contents of a pci.ids stream (exposed for tests) */
> ++extern void pci_ids_parse(std::istream &in);
> +
> +
> + extern std::string fmt_prefix(double n);
> diff --git a/patches/powertop-v2.16.1/0002-cleanup-meson.build-dependency-searching-to-not-be-a.patch b/patches/powertop-v2.16.1/0002-cleanup-meson.build-dependency-searching-to-not-be-a.patch
> new file mode 100644
> index 000000000000..ebbe4ba50323
> --- /dev/null
> +++ b/patches/powertop-v2.16.1/0002-cleanup-meson.build-dependency-searching-to-not-be-a.patch
> @@ -0,0 +1,170 @@
> +From: Arjan van de Ven <arjan@linux.intel.com>
> +Date: Fri, 23 Oct 2026 08:02:20 -0700
> +Subject: [PATCH] cleanup meson.build dependency searching to not be an awful
> + conversion from autoconf
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Upstream-Status: Backport [https://github.com/fenrus75/powertop/commit/993dc340c43b51655fb43c4cfa64883348b30583]
> +Signed-off-by: Sven Püschel <s.pueschel@pengutronix.de>
> +---
> + meson.build | 52 ++++++----------------------------------------------
> + src/tuning/iw.c | 27 +--------------------------
> + src/tuning/iw.h | 8 +++-----
> + 3 files changed, 10 insertions(+), 77 deletions(-)
> +
> +diff --git a/meson.build b/meson.build
> +index 17ea02e51bf5..76981d610fe1 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -12,48 +12,12 @@ cc = meson.get_compiler('c')
> + cpp = meson.get_compiler('cpp')
> +
> + # Dependencies
> +-ncursesw_dep = dependency('ncursesw', required: false)
> +-if not ncursesw_dep.found()
> +- ncursesw_dep = dependency('ncurses', required: false)
> +-endif
> +-if not ncursesw_dep.found()
> +- ncursesw_dep = cc.find_library('ncursesw', required: false)
> +- if not ncursesw_dep.found()
> +- ncursesw_dep = cc.find_library('ncurses', required: true)
> +- endif
> +-endif
> +-
> ++ncursesw_dep = dependency('ncursesw', required: true)
> + libtracefs_dep = dependency('libtracefs', required: true)
> +-
> +-libnl3_dep = dependency('libnl-3.0', version: '>= 3.0', required: false)
> +-libnlgenl3_dep = dependency('libnl-genl-3.0', version: '>= 3.0', required: false)
> +-
> +-libnl_deps = []
> +-has_libnl20 = false
> +-
> +-if libnl3_dep.found()
> +- libnl_deps += [libnl3_dep]
> +- if libnlgenl3_dep.found()
> +- libnl_deps += [libnlgenl3_dep]
> +- else
> +- libnlgenl3_dep = cc.find_library('nl-genl-3', required: true)
> +- libnl_deps += [libnlgenl3_dep]
> +- endif
> +- has_libnl20 = true
> +-else
> +- libnl20_dep = dependency('libnl-2.0', version: '>= 2.0', required: false)
> +- if libnl20_dep.found()
> +- libnl_deps = [libnl20_dep]
> +- has_libnl20 = true
> +- else
> +- libnl1_dep = dependency('libnl-1', required: true)
> +- libnl_deps = [libnl1_dep]
> +- endif
> +-endif
> +-
> ++libnl3_dep = dependency('libnl-3.0', version: '>= 3.0', required: true)
> ++libnlgenl3_dep = dependency('libnl-genl-3.0', version: '>= 3.0', required: true)
> + pthread_dep = dependency('threads')
> + resolv_dep = cc.find_library('resolv', required: true)
> +-rt_dep = cc.find_library('rt', required: false)
> +
> + # Configuration
> + conf_data = configuration_data()
> +@@ -65,10 +29,6 @@ conf_data.set_quoted('PACKAGE_BUGREPORT', 'https://github.com/fenrus75/powertop/
> + conf_data.set_quoted('PACKAGE_URL', 'https://github.com/fenrus75/powertop')
> + conf_data.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir')))
> +
> +-if has_libnl20
> +- conf_data.set('HAVE_LIBNL20', 1)
> +-endif
> +-
> + check_headers = [
> + 'fcntl.h',
> + 'libintl.h',
> +@@ -289,10 +249,10 @@ powertop_exe = executable('powertop',
> + dependencies: [
> + ncursesw_dep,
> + libtracefs_dep,
> +- libnl_deps,
> ++ libnl3_dep,
> ++ libnlgenl3_dep,
> + pthread_dep,
> + resolv_dep,
> +- rt_dep,
> + ],
> + cpp_args: [
> + '-Wformat',
> +@@ -384,4 +344,4 @@ if valgrind.found() and get_option('b_sanitize') == 'none'
> + suite: 'valgrind',
> + )
> + endif
> +-endif
> ++endif
> +\ No newline at end of file
> +diff --git a/src/tuning/iw.c b/src/tuning/iw.c
> +index 0abdabb33e92..0d972ea72ae8 100644
> +--- a/src/tuning/iw.c
> ++++ b/src/tuning/iw.c
> +@@ -52,31 +52,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + #include "../lib.h"
> +
> +
> +-#ifndef HAVE_LIBNL20
> +-/* libnl 2.0 compatibility code */
> +-
> +-static inline struct nl_handle *nl_socket_alloc(void)
> +-{
> +- return nl_handle_alloc();
> +-}
> +-
> +-static inline void nl_socket_free(struct nl_sock *h)
> +-{
> +- nl_handle_destroy(h);
> +-}
> +-
> +-static inline int __genl_ctrl_alloc_cache(struct nl_sock *h, struct nl_cache **cache)
> +-{
> +- struct nl_cache *tmp = genl_ctrl_alloc_cache(h);
> +- if (!tmp)
> +- return -ENOMEM;
> +- *cache = tmp;
> +- return 0;
> +-}
> +-#define genl_ctrl_alloc_cache __genl_ctrl_alloc_cache
> +-#endif /* HAVE_LIBNL20 */
> +-
> +-
> + static int nl80211_init(struct nl80211_state *state)
> + {
> + int err;
> +@@ -303,4 +278,4 @@ int get_wifi_power_saving(const char *iface)
> + return 1;
> +
> + return enable_power_save;
> +-}
> ++}
> +\ No newline at end of file
> +diff --git a/src/tuning/iw.h b/src/tuning/iw.h
> +index 743a38c896fc..ccfa30ff26ea 100644
> +--- a/src/tuning/iw.h
> ++++ b/src/tuning/iw.h
> +@@ -39,9 +39,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + #include "config.h"
> + #endif
> +
> +-#ifndef HAVE_LIBNL20
> +-#define nl_sock nl_handle
> +-#endif
> ++
> ++
> +
> + struct nl80211_state {
> + struct nl_sock *nl_sock;
> +@@ -71,5 +70,4 @@ int set_wifi_power_saving(const char *iface, int state);
> +
> + #ifdef __cplusplus
> + }
> +-#endif
> +-
> ++#endif
> +\ No newline at end of file
> diff --git a/patches/powertop-v2.16.1/series b/patches/powertop-v2.16.1/series
> new file mode 100644
> index 000000000000..44c28912f394
> --- /dev/null
> +++ b/patches/powertop-v2.16.1/series
> @@ -0,0 +1,5 @@
> +# generated by git-ptx-patches
> +#tag:base --start-number 1
> +0001-Replace-libpci-with-a-built-in-pci.ids-parser.patch
> +0002-cleanup-meson.build-dependency-searching-to-not-be-a.patch
> +# 7540d4941ff359a8c4a915fb5c37b795 - git-ptx-patches magic
> diff --git a/rules/powertop.in b/rules/powertop.in
> index 3418bef1b4a0..8f2425261512 100644
> --- a/rules/powertop.in
> +++ b/rules/powertop.in
> @@ -4,13 +4,12 @@ menuconfig POWERTOP
> tristate
> prompt "powertop "
> select HOST_GETTEXT
> - select HOST_AUTOTOOLS_AUTOCONF_ARCHIVE
> + select HOST_MESON
> select NCURSES
> select LIBNL3
> select LIBC_RESOLV
> select LIBC_PTHREAD
> - select PCIUTILS if POWERTOP_PCI_SUPPORT
> - select PCIUTILS_LIBPCI if POWERTOP_PCI_SUPPORT
> + select LIBTRACEFS
> depends on !BUSYBOX_POWERTOP || ALLYES
> help
> PowerTOP is a Linux tool that finds the software
> @@ -27,17 +26,6 @@ menuconfig POWERTOP
> convenient screen so that you can see how well your system
> is doing, and which components are the biggest problem.
>
> -if POWERTOP
> -
> -config POWERTOP_PCI_SUPPORT
> - bool
> - prompt "pci support"
> - help
> - This adds powertop support for the PCI bus. Should only be
> - enabled if you have PCI support.
> -
> -endif
> -
> comment "BusyBox' powertop is selected!"
> depends on BUSYBOX_POWERTOP
>
> diff --git a/rules/powertop.make b/rules/powertop.make
> index 04aadcb60155..d7155c62075f 100644
> --- a/rules/powertop.make
> +++ b/rules/powertop.make
> @@ -15,33 +15,31 @@ PACKAGES-$(PTXCONF_POWERTOP) += powertop
> #
> # Paths and names
> #
> -POWERTOP_VERSION := 2.15
> -POWERTOP_SHA256 := e58ab3fd7b8ff5f4dd0d17f11848817e7d83c0a6918145ac81de03b5dccf8f49
> +POWERTOP_VERSION := 2.16.1
> +POWERTOP_SHA256 := 73d5e96d992ed7f040e17c6c9130deebcf42c38990711840981c7afac6f7832f
> POWERTOP := powertop-v$(POWERTOP_VERSION)
> POWERTOP_SUFFIX := tar.gz
> POWERTOP_URL := https://github.com/fenrus75/powertop/archive/refs/tags/v$(POWERTOP_VERSION).$(POWERTOP_SUFFIX)
> POWERTOP_SOURCE := $(SRCDIR)/$(POWERTOP).$(POWERTOP_SUFFIX)
> POWERTOP_DIR := $(BUILDDIR)/$(POWERTOP)
> POWERTOP_LICENSE := GPL-2.0-only
> +POWERTOP_LICENSE_FILES := \
> + file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
> + file://src/main.cpp;startline=1;endline=29;md5=6cc786afdc98b8098452aa4f41300d53
>
> # ----------------------------------------------------------------------------
> # Prepare
> # ----------------------------------------------------------------------------
>
> -POWERTOP_CONF_ENV := \
> - $(CROSS_ENV) \
> - ac_cv_search_pci_get_dev=$(call ptx/yesno, PTXCONF_POWERTOP_PCI_SUPPORT)
> -
> #
> -# autoconf
> +# meson
> #
> -POWERTOP_CONF_TOOL := autoconf
> +POWERTOP_CONF_TOOL := meson
> POWERTOP_CONF_OPT := \
> - $(CROSS_AUTOCONF_USR) \
> - --disable-nls \
> - --disable-rpath \
> - --without-libiconv-prefix \
> - --without-libintl-prefix
> + $(CROSS_MESON_USR) \
> + -Denable-tests=false \
> + -Dnls=false \
> + -Dtest-framework=false
>
> # ----------------------------------------------------------------------------
> # Target-Install
> @@ -56,7 +54,7 @@ $(STATEDIR)/powertop.targetinstall:
> @$(call install_fixup, powertop,AUTHOR,"Marc Kleine-Budde <mkl@pengutronix.de>")
> @$(call install_fixup, powertop,DESCRIPTION,missing)
>
> - @$(call install_copy, powertop, 0, 0, 0755, -, /usr/sbin/powertop)
> + @$(call install_copy, powertop, 0, 0, 0755, -, /usr/bin/powertop)
>
> @$(call install_finish, powertop)
>
prev parent reply other threads:[~2026-11-13 8:41 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 12:04 [ptxdist] [PATCH] " Sven Püschel
2026-11-13 8:39 ` Michael Olbrich [this message]
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=20261113083915.1379944-1-m.olbrich@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=ptxdist@pengutronix.de \
--cc=s.pueschel@pengutronix.de \
/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