From 858836cfe2d03b0417acc0455eaa3147d964a204 Mon Sep 17 00:00:00 2001 From: wangxiaomeng Date: Mon, 11 Sep 2023 09:50:44 +0800 Subject: [PATCH] lm_sensors-3.6.0-allow_no_sensors --- lm_sensors-3.6.0-allow_no_sensors.patch | 92 +++++++++++++++++++++++++ lm_sensors-wrapper | 8 +++ lm_sensors.service | 2 +- lm_sensors.spec | 9 ++- 4 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 lm_sensors-3.6.0-allow_no_sensors.patch create mode 100755 lm_sensors-wrapper diff --git a/lm_sensors-3.6.0-allow_no_sensors.patch b/lm_sensors-3.6.0-allow_no_sensors.patch new file mode 100644 index 0000000..17d85f0 --- /dev/null +++ b/lm_sensors-3.6.0-allow_no_sensors.patch @@ -0,0 +1,92 @@ +diff --git a/prog/sensors/main.c b/prog/sensors/main.c +index f535b66..a19b919 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 7d66e4b..d207aa1 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 diff --git a/lm_sensors-wrapper b/lm_sensors-wrapper new file mode 100755 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 976e1d6..ef50972 100644 --- a/lm_sensors.spec +++ b/lm_sensors.spec @@ -2,7 +2,7 @@ Name: lm_sensors Version: 3.6.0 -Release: 6 +Release: 7 Summary: Linux-monitoring sensors # lib/libsensors.3 is licensed Verbatim # dist-git files are licensed MIT @@ -19,6 +19,10 @@ Source4: lm_sensors-modprobe-r-wrapper Source5: sensord.service Source6: sensord-service-wrapper Source7: lm_sensors.service +Source8: lm_sensors-wrapper + +#Upstream patch for fixing no sensors failure in vm +Patch0: lm_sensors-3.6.0-allow_no_sensors.patch Requires: kmod, systemd-units BuildRequires: kernel-headers >= 2.2.16, bison, libsysfs-devel, flex, gawk @@ -164,6 +168,9 @@ fi %exclude %{_mandir}/man8/sensord.8.gz %changelog +* Mon Sep 11 2023 wangxiaomeng - 3.6.0-7 +- bakeport upstraem patch to fix no sensors failure in vm + * Sun Apr 23 2023 liweiganga - 3.6.0-6 - add llvm compile support -- Gitee