From f751752a6075d581ce91039952c859fd756c7618 Mon Sep 17 00:00:00 2001 From: konglidong Date: Wed, 8 Nov 2023 14:43:22 +0800 Subject: [PATCH] backport upstraem patch to fix no sensors failure in vm (cherry picked from commit ceeca6e8745d966312502709ee487971ea5baf52) --- Flag-allow-no-sensors-added.patch | 104 ++++++++++++++++++++++++++++++ lm_sensors-wrapper | 8 +++ lm_sensors.service | 2 +- lm_sensors.spec | 10 ++- 4 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 Flag-allow-no-sensors-added.patch create mode 100644 lm_sensors-wrapper diff --git a/Flag-allow-no-sensors-added.patch b/Flag-allow-no-sensors-added.patch new file mode 100644 index 0000000..fd69c7d --- /dev/null +++ b/Flag-allow-no-sensors-added.patch @@ -0,0 +1,104 @@ +From a0ef84f6583dbf427ff5a3534528e1e72bd00137 Mon Sep 17 00:00:00 2001 +From: sibeream +Date: Tue, 23 Feb 2021 20:25:26 +0100 +Subject: [PATCH] Flag allow-no-sensors added. + +--- + prog/sensors/main.c | 32 ++++++++++++++++++++------------ + prog/sensors/sensors.1 | 2 ++ + 2 files changed, 22 insertions(+), 12 deletions(-) + +diff --git a/prog/sensors/main.c b/prog/sensors/main.c +index f535b665..a19b919e 100644 +--- a/prog/sensors/main.c ++++ b/prog/sensors/main.c +@@ -54,15 +54,16 @@ static void print_short_help(void) + static void print_long_help(void) + { + printf("Usage: %s [OPTION]... [CHIP]...\n", PROGRAM); +- puts(" -c, --config-file Specify a config file\n" +- " -h, --help Display this help text\n" +- " -s, --set Execute `set' statements (root only)\n" +- " -f, --fahrenheit Show temperatures in degrees fahrenheit\n" +- " -A, --no-adapter Do not show adapter for each chip\n" +- " --bus-list Generate bus statements for sensors.conf\n" +- " -u Raw output\n" +- " -j Json output\n" +- " -v, --version Display the program version\n" ++ puts(" -c, --config-file Specify a config file\n" ++ " -h, --help Display this help text\n" ++ " -s, --set Execute `set' statements (root only)\n" ++ " -f, --fahrenheit Show temperatures in degrees fahrenheit\n" ++ " -A, --no-adapter Do not show adapter for each chip\n" ++ " --bus-list Generate bus statements for sensors.conf\n" ++ " -u Raw output\n" ++ " -j Json output\n" ++ " -v, --version Display the program version\n" ++ " -n, --allow-no-sensors Do not fail if no sensors found\n" + "\n" + "Use `-' after `-c' to read the config file from stdin.\n" + "If no chips are specified, all chip info will be printed.\n" +@@ -270,7 +271,7 @@ static void print_bus_list(void) + + int main(int argc, char *argv[]) + { +- int c, i, err, do_bus_list; ++ int c, i, err, do_bus_list, allow_no_sensors; + const char *config_file_name = NULL; + + struct option long_opts[] = { +@@ -281,6 +282,7 @@ int main(int argc, char *argv[]) + { "no-adapter", no_argument, NULL, 'A' }, + { "config-file", required_argument, NULL, 'c' }, + { "bus-list", no_argument, NULL, 'B' }, ++ { "allow-no-sensors", no_argument, NULL, 'n' }, + { 0, 0, 0, 0 } + }; + +@@ -291,8 +293,9 @@ int main(int argc, char *argv[]) + do_sets = 0; + do_bus_list = 0; + hide_adapter = 0; ++ allow_no_sensors = 0; + while (1) { +- c = getopt_long(argc, argv, "hsvfAc:uj", long_opts, NULL); ++ c = getopt_long(argc, argv, "hsvfAc:ujn", long_opts, NULL); + if (c == EOF) + break; + switch(c) { +@@ -327,6 +330,9 @@ int main(int argc, char *argv[]) + case 'B': + do_bus_list = 1; + break; ++ case 'n': ++ allow_no_sensors = 1; ++ break; + default: + fprintf(stderr, + "Internal error while parsing options!\n"); +@@ -349,7 +355,9 @@ int main(int argc, char *argv[]) + "No sensors found!\n" + "Make sure you loaded all the kernel drivers you need.\n" + "Try sensors-detect to find out which these are.\n"); +- err = 1; ++ if (!allow_no_sensors) { ++ err = 1; ++ } + } + } else { + int cnt = 0; +diff --git a/prog/sensors/sensors.1 b/prog/sensors/sensors.1 +index 7d66e4b3..d207aa1b 100644 +--- a/prog/sensors/sensors.1 ++++ b/prog/sensors/sensors.1 +@@ -78,6 +78,8 @@ are only needed if you have several chips sharing the same address on different + buses of the same type. As bus numbers are usually not guaranteed to be stable + over reboots, these statements let you refer to each bus by its name rather + than numbers. ++.IP "-n, --allow-no-sensors" ++Do not fail if no sensors found. The error message will be printed in the log. + .SH FILES + .I /etc/sensors3.conf + .br +-- +2.27.0 diff --git a/lm_sensors-wrapper b/lm_sensors-wrapper new file mode 100644 index 0000000..7c5b3d2 --- /dev/null +++ b/lm_sensors-wrapper @@ -0,0 +1,8 @@ +#!/bin/sh +if /usr/bin/systemd-detect-virt 2>/dev/null 1>&2; then + SENSORS_FLAGS_VM='-n'; +else + SENSORS_FLAGS_VM=''; +fi; + +/usr/bin/sensors -s $SENSORS_FLAGS_VM diff --git a/lm_sensors.service b/lm_sensors.service index 904660a..fc99241 100644 --- a/lm_sensors.service +++ b/lm_sensors.service @@ -6,7 +6,7 @@ EnvironmentFile=/etc/sysconfig/lm_sensors Type=oneshot RemainAfterExit=yes ExecStart=-@WRAPPER_DIR@/lm_sensors-modprobe-wrapper $BUS_MODULES $HWMON_MODULES -ExecStart=/usr/bin/sensors -s +ExecStart=@WRAPPER_DIR@/lm_sensors-wrapper ExecStop=-@WRAPPER_DIR@/lm_sensors-modprobe-r-wrapper $BUS_MODULES $HWMON_MODULES [Install] diff --git a/lm_sensors.spec b/lm_sensors.spec index b5b5135..f3d8f55 100644 --- a/lm_sensors.spec +++ b/lm_sensors.spec @@ -2,7 +2,7 @@ Name: lm_sensors Version: 3.6.0 -Release: 4 +Release: 5 Summary: Linux-monitoring sensors # The library (libsensors) is released under the GNU Lesser @@ -21,6 +21,9 @@ Source4: lm_sensors-modprobe-r-wrapper Source5: sensord.service Source6: sensord-service-wrapper Source7: lm_sensors.service +Source8: lm_sensors-wrapper + +Patch0: Flag-allow-no-sensors-added.patch Recommends: %{name}-help = %{version}-%{release} Requires: kmod, systemd-units @@ -99,6 +102,7 @@ install -pm 644 sensord.service $RPM_BUILD_ROOT%{_unitdir} mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/%{name} install -pm 755 %{SOURCE3} $RPM_BUILD_ROOT%{_libexecdir}/%{name}/lm_sensors-modprobe-wrapper install -pm 755 %{SOURCE4} $RPM_BUILD_ROOT%{_libexecdir}/%{name}/lm_sensors-modprobe-r-wrapper +install -pm 755 %{SOURCE8} $RPM_BUILD_ROOT%{_libexecdir}/%{name}/lm_sensors-wrapper # sensord service wrapper install -pm 755 %{SOURCE6} $RPM_BUILD_ROOT%{_libexecdir}/%{name}/sensord-service-wrapper @@ -135,6 +139,7 @@ fi %{_unitdir}/fancontrol.service %dir %{_libexecdir}/%{name} %{_libexecdir}/%{name}/lm_sensors-modprobe*wrapper +%{_libexecdir}/%{name}/lm_sensors-wrapper %{_libdir}/*.so.* %exclude %{_sbindir}/sensord @@ -154,6 +159,9 @@ fi %exclude %{_mandir}/man8/sensord.8.gz %changelog +* Wed Nov 08 2023 konglidong - 3.6.0-5 +- backport upstraem patch to fix no sensors failure in vm + * Thu Dec 17 2020 wuxu - 3.6.0-4 - update license consistent with upstream community: The library (libsensors) is released under the GNU Lesser General Public -- Gitee