From 4c1dde2abe38e99f7ab9872fe628062bc688dca2 Mon Sep 17 00:00:00 2001 From: Jaromir Capik Date: Wed, 23 Jan 2013 13:30:39 +0100 Subject: [PATCH] Fixing sensors-detect to avoid failures when the /dev/port is missing (#843521) --- lm_sensors.spec | 22 ++++++--- sensors-detect-no-dev-port.patch | 84 ++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 sensors-detect-no-dev-port.patch diff --git a/lm_sensors.spec b/lm_sensors.spec index f97e80a..053c4be 100644 --- a/lm_sensors.spec +++ b/lm_sensors.spec @@ -1,15 +1,20 @@ Name: lm_sensors Version: 3.3.3 -Release: 1%{?dist} +Release: 2%{?dist} +Summary: Hardware monitoring tools +Group: Applications/System +License: LGPLv2+ + URL: http://www.lm-sensors.org/ + Source: http://dl.lm-sensors.org/lm-sensors/releases/%{name}-%{version}.tar.bz2 Source1: lm_sensors.sysconfig # these 2 were taken from PLD-linux, Thanks! Source2: sensord.sysconfig Source3: sensord.systemd -Summary: Hardware monitoring tools -Group: Applications/System -License: LGPLv2+ + +Patch0: sensors-detect-no-dev-port.patch + %ifarch %{ix86} x86_64 Requires: /usr/sbin/dmidecode %endif @@ -56,6 +61,8 @@ database, and warns of sensor alarms. mv prog/init/README prog/init/README.initscripts chmod -x prog/init/fancontrol.init +%patch0 -p1 + %build export CFLAGS="%{optflags}" @@ -120,7 +127,6 @@ fi %files -%defattr(-,root,root,-) %doc CHANGES CONTRIBUTORS COPYING doc README* %doc prog/init/fancontrol.init prog/init/README.initscripts %config(noreplace) %{_sysconfdir}/sensors3.conf @@ -135,17 +141,14 @@ fi %exclude %{_mandir}/man8/sensord.8.gz %files libs -%defattr(-,root,root,-) %{_libdir}/*.so.* %files devel -%defattr(-,root,root,-) %{_includedir}/sensors %{_libdir}/lib*.so %{_mandir}/man3/* %files sensord -%defattr(-,root,root,-) %doc prog/sensord/README %{_sbindir}/sensord %{_mandir}/man8/sensord.8.gz @@ -154,6 +157,9 @@ fi %changelog +* Thu Jan 17 2013 Jaromir Capik - 3.3.3-2 +- Fixing sensors-detect to avoid failures when the /dev/port is missing (#843521) + * Thu Dec 06 2012 Jaromir Capik - 3.3.3-1 - Update to 3.3.3 diff --git a/sensors-detect-no-dev-port.patch b/sensors-detect-no-dev-port.patch new file mode 100644 index 0000000..11eaa7c --- /dev/null +++ b/sensors-detect-no-dev-port.patch @@ -0,0 +1,84 @@ +diff -Naur lm_sensors-3.3.3.orig/prog/detect/sensors-detect lm_sensors-3.3.3/prog/detect/sensors-detect +--- lm_sensors-3.3.3.orig/prog/detect/sensors-detect 2012-10-30 18:18:45.000000000 +0100 ++++ lm_sensors-3.3.3/prog/detect/sensors-detect 2013-01-17 15:04:46.354612233 +0100 +@@ -2463,9 +2463,12 @@ + + sub initialize_ioports + { +- sysopen(IOPORTS, "/dev/port", O_RDWR) +- or die "/dev/port: $!\n"; +- binmode(IOPORTS); ++ if (sysopen(IOPORTS, "/dev/port", O_RDWR)) { ++ binmode(IOPORTS); ++ return 1; ++ } ++ print STDERR "/dev/port: $!\n"; ++ return 0; + } + + sub close_ioports +@@ -3493,13 +3496,14 @@ + print("Can't set I2C address for $dev\n"), + next; + +- initialize_ioports(); +- $alias_detect = $detected->[$isa]->{alias_detect}; +- $is_alias = &$alias_detect($detected->[$isa]->{isa_addr}, +- \*FILE, +- $detected->[$i2c]->{i2c_addr}); ++ if (initialize_ioports()) { ++ $alias_detect = $detected->[$isa]->{alias_detect}; ++ $is_alias = &$alias_detect($detected->[$isa]->{isa_addr}, ++ \*FILE, ++ $detected->[$i2c]->{i2c_addr}); ++ close_ioports(); ++ } + close(FILE); +- close_ioports(); + + next unless $is_alias; + # This is an alias: copy the I2C data into the ISA +@@ -6814,10 +6818,11 @@ + "standard I/O ports to probe them. This is usually safe.\n"; + print "Do you want to scan for Super I/O sensors? (YES/no): "; + unless ( =~ /^\s*n/i) { +- initialize_ioports(); +- $superio_features |= scan_superio(0x2e, 0x2f); +- $superio_features |= scan_superio(0x4e, 0x4f); +- close_ioports(); ++ if (initialize_ioports()) { ++ $superio_features |= scan_superio(0x2e, 0x2f); ++ $superio_features |= scan_superio(0x4e, 0x4f); ++ close_ioports(); ++ } + } + print "\n"; + +@@ -6830,9 +6835,10 @@ + "interfaces? (YES/no): "; + unless ( =~ /^\s*n/i) { + if (!ipmi_from_smbios()) { +- initialize_ioports(); +- scan_isa_bus(\@ipmi_ifs); +- close_ioports(); ++ if (initialize_ioports()) { ++ scan_isa_bus(\@ipmi_ifs); ++ close_ioports(); ++ } + } + } + print "\n"; +@@ -6846,9 +6852,10 @@ + $input = ; + unless ($input =~ /^\s*n/i + || ($superio_features && $input !~ /^\s*y/i)) { +- initialize_ioports(); +- scan_isa_bus(\@chip_ids); +- close_ioports(); ++ if (initialize_ioports()) { ++ scan_isa_bus(\@chip_ids); ++ close_ioports(); ++ } + } + print "\n"; + }