[lm_sensors] Fixing sensors-detect to avoid failures when the /dev/port is missing (#843521)

Jaromír Cápík jcapik at fedoraproject.org
Wed Jan 23 12:30:56 UTC 2013


commit 4c1dde2abe38e99f7ab9872fe628062bc688dca2
Author: Jaromir Capik <jcapik at redhat.com>
Date:   Wed Jan 23 13:30:39 2013 +0100

    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(-)
---
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 <jcapik at redhat.com> - 3.3.3-2
+- Fixing sensors-detect to avoid failures when the /dev/port is missing (#843521)
+
 * Thu Dec 06 2012 Jaromir Capik <jcapik at redhat.com> - 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 (<STDIN> =~ /^\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 (<STDIN> =~ /^\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 = <STDIN>;
+ 		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";
+ 	}


More information about the scm-commits mailing list