summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/lm-sensors/files/lm-sensors-3.4.0-sensors-detect-gentoo.patch')
-rw-r--r--sys-apps/lm-sensors/files/lm-sensors-3.4.0-sensors-detect-gentoo.patch342
1 files changed, 342 insertions, 0 deletions
diff --git a/sys-apps/lm-sensors/files/lm-sensors-3.4.0-sensors-detect-gentoo.patch b/sys-apps/lm-sensors/files/lm-sensors-3.4.0-sensors-detect-gentoo.patch
new file mode 100644
index 0000000..dd77d66
--- /dev/null
+++ b/sys-apps/lm-sensors/files/lm-sensors-3.4.0-sensors-detect-gentoo.patch
@@ -0,0 +1,342 @@
+From d8603c540cfccda5e011060083108de8f1b820ab Mon Sep 17 00:00:00 2001
+From: Thomas Deutschmann <whissi@gentoo.org>
+Date: Tue, 9 Aug 2016 01:19:16 +0200
+Subject: [PATCH 1/3] sensors-detect: Add sd_boot detection
+
+We need to know in write_config function wether the system is using systemd
+or not.
+---
+ prog/detect/sensors-detect | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect
+index 057cd96..e29ab4c 100755
+--- a/prog/detect/sensors-detect
++++ b/prog/detect/sensors-detect
+@@ -2746,7 +2746,7 @@ sub isa_read_i5d6
+ # AUTODETECTION #
+ #################
+
+-use vars qw($dev_i2c $sysfs_root $systemd_systemctl $systemd_system_dir);
++use vars qw($dev_i2c $sysfs_root $systemd_is_booted $systemd_systemctl $systemd_system_dir);
+
+ sub initialize_conf
+ {
+@@ -2820,6 +2820,10 @@ sub initialize_conf
+ } elsif (-d "/lib/systemd/system") {
+ $systemd_system_dir = "/lib/systemd/system";
+ }
++
++ # Check whether the system was booted using systemd.
++ # See: man sd_booted
++ $systemd_is_booted = -d '/run/systemd/system';
+ }
+
+ # [0] -> VERSION
+--
+2.9.3
+
+
+From 14376e837c4a666fe2088bc7b7fbb90a4520f387 Mon Sep 17 00:00:00 2001
+From: Thomas Deutschmann <whissi@gentoo.org>
+Date: Tue, 9 Aug 2016 01:25:52 +0200
+Subject: [PATCH 2/3] sensors-detect: write_config function adjusted for Gentoo
+ environment
+
+Bug: https://bugs.gentoo.org/480018
+---
+ prog/detect/sensors-detect | 133 +++++++++++++++++++++------------------------
+ 1 file changed, 62 insertions(+), 71 deletions(-)
+
+diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect
+index e29ab4c..bb5ae0f 100755
+--- a/prog/detect/sensors-detect
++++ b/prog/detect/sensors-detect
+@@ -7079,6 +7079,9 @@ sub write_config
+ {
+ my ($configfile, $bus_modules, $hwmon_modules) = @_;
+
++ my $have_conffiles_created = 0;
++
++ # /etc/modprobe.d handling
+ if (defined $configfile) {
+ my $have_modprobe_d = -d '/etc/modprobe.d';
+ printf "Do you want to \%s /etc/modprobe.d/lm_sensors.conf? (\%s): ",
+@@ -7087,96 +7090,84 @@ sub write_config
+ $_ = read_answer();
+ if (($have_modprobe_d and not m/^\s*n/i) or m/^\s*y/i) {
+ unless ($have_modprobe_d) {
+- mkdir('/etc/modprobe.d', 0777)
++ mkdir('/etc/modprobe.d', 0755)
+ or die "Sorry, can't create /etc/modprobe.d ($!)";
+ }
+- open(local *MODPROBE_D, ">/etc/modprobe.d/lm_sensors.conf")
++ open(local *MODPROBE_D, ">", $have_modprobe_d . '/lm_sensors.conf')
+ or die "Sorry, can't create /etc/modprobe.d/lm_sensors.conf ($!)";
+ print MODPROBE_D "# Generated by sensors-detect on " . scalar localtime() . "\n";
+ print MODPROBE_D $configfile;
+ close(MODPROBE_D);
++ $have_conffiles_created++;
+ } else {
+ print "To make the sensors modules behave correctly, add these lines to\n".
+- "/etc/modprobe.conf:\n\n";
++ "/etc/modprobe.d/lm_sensors.conf:\n\n";
+ print "#----cut here----\n".
+ $configfile.
+ "#----cut here----\n\n";
+ }
+ }
+
+- my $have_sysconfig = -d '/etc/sysconfig';
+- printf "Do you want to \%s /etc/sysconfig/lm_sensors? (\%s): ",
+- (-e '/etc/sysconfig/lm_sensors' ? 'overwrite' : 'generate'),
+- ($have_sysconfig ? 'YES/no' : 'yes/NO');
+- $_ = read_answer();
+- if (($have_sysconfig and not m/^\s*n/i) or m/^\s*y/i) {
+- unless ($have_sysconfig) {
+- mkdir('/etc/sysconfig', 0777)
+- or die "Sorry, can't create /etc/sysconfig ($!)";
+- }
+- open(local *SYSCONFIG, ">/etc/sysconfig/lm_sensors")
+- or die "Sorry, can't create /etc/sysconfig/lm_sensors ($!)";
+- print SYSCONFIG "# Generated by sensors-detect on " . scalar localtime() . "\n";
+- print SYSCONFIG <<'EOT';
+-# This file is sourced by /etc/init.d/lm_sensors and defines the modules to
+-# be loaded/unloaded.
+-#
+-# The format of this file is a shell script that simply defines variables:
+-# HWMON_MODULES for hardware monitoring driver modules, and optionally
+-# BUS_MODULES for any required bus driver module (for example for I2C or SPI).
+-
+-EOT
+- print SYSCONFIG "BUS_MODULES=\"", join(" ", @{$bus_modules}), "\"\n"
+- if @{$bus_modules};
+- print SYSCONFIG "HWMON_MODULES=\"", join(" ", @{$hwmon_modules}), "\"\n";
+- close(SYSCONFIG);
+-
+- if ($systemd_systemctl && $systemd_system_dir) {
+- if (-f "$systemd_system_dir/lm_sensors.service") {
+- system($systemd_systemctl, "enable", "lm_sensors.service");
+- system($systemd_systemctl, "start", "lm_sensors.service");
+- # All done, don't check for /etc/init.d/lm_sensors
+- } else {
+- print "Copy prog/init/lm_sensors.service to $systemd_system_dir\n".
+- "and run 'systemctl enable lm_sensors.service'\n".
+- "for initialization at boot time.\n";
+- }
+- return;
++ # /etc/modules-load.d handling
++ my $modulesload_filedir = '/etc/modules-load.d';
++ my $modulesload_file = $modulesload_filedir . '/lm_sensors.conf';
++ my $modulesload_cfg = "# Generated by sensors-detect on " . scalar localtime() . "\n"
++ . join("\n", (@{$bus_modules}, @{$hwmon_modules})) . "\n";
++
++ my $have_modulesload_file = -f $modulesload_file;
++ printf "Do you want to \%s '$modulesload_file'? (\%s): ",
++ ($have_modulesload_file ? 'overwrite' : 'generate'),
++ ($have_modulesload_file ? 'yes/NO' : 'YES/no');
++
++ my $input = read_answer();
++ chomp($input);
++ if ($input eq '' && $have_modulesload_file) {
++ $input = 'no';
++ }
++ elsif ($input eq '' && !$have_modulesload_file) {
++ $input = 'yes';
++ }
++
++ if ($input =~ m/^\s*y/i) {
++ unless (-d $modulesload_filedir) {
++ mkdir($modulesload_filedir, 0755)
++ or die "Sorry, can't create '$modulesload_filedir' ($!)";
+ }
+
+- print "Copy prog/init/lm_sensors.init to /etc/init.d/lm_sensors\n".
+- "for initialization at boot time.\n"
+- unless -f "/etc/init.d/lm_sensors";
++ open(my $fh, '>', $modulesload_file)
++ or die "Sorry, can't open '$modulesload_file' for writing! ($!)";
+
+- if (-x "/sbin/insserv" && -f "/etc/init.d/lm_sensors") {
+- system("/sbin/insserv", "/etc/init.d/lm_sensors");
+- } elsif (-x "/sbin/chkconfig" && -f "/etc/init.d/lm_sensors") {
+- system("/sbin/chkconfig", "lm_sensors", "on");
+- if (-x "/sbin/service") {
+- system("/sbin/service", "lm_sensors", "start");
+- }
++ print $fh $modulesload_cfg;
++ close($fh);
++
++ $have_conffiles_created++;
++ }
++ else {
++ print "\nPlease create '$modulesload_file' with the following content\n"
++ . "to allow modules-load service to autoload modules on boot:\n\n";
++ print "#----cut here----\n"
++ . "# Generated by sensors-detect on " . scalar localtime() . "\n"
++ . join("\n", (@{$bus_modules}, @{$hwmon_modules})) . "\n"
++ . "#----cut here----\n\n";
++ }
++
++ if ($have_conffiles_created) {
++ printf "\nNote: You only have created the required configuration to autoload the\n"
++ . "required modules to use your sensors on boot. If you want to start using\n"
++ . "your sensors right now you have to either load them now once manually, to\n"
++ . "reboot this system or to execute the following command(s):\n\n";
++
++ if ($systemd_is_booted) {
++ print " # systemctl restart systemd-modules-load\n\n"
+ } else {
+- print "You should now start the lm_sensors service to load the required\n".
+- "kernel modules.\n\n";
+- }
+- } else {
+- print "To load everything that is needed, add this to one of the system\n".
+- "initialization scripts (e.g. /etc/rc.d/rc.local):\n\n";
+- print "#----cut here----\n";
+- if (@{$bus_modules}) {
+- print "# Adapter drivers\n";
+- print "modprobe $_\n" foreach (@{$bus_modules});
++ print " # /etc/init.d/modules-load restart\n\n"
+ }
+- print "# Chip drivers\n";
+- print "modprobe $_\n" foreach (@{$hwmon_modules});
+- print((-e '/usr/bin/sensors' ?
+- "/usr/bin/sensors -s\n" :
+- "/usr/local/bin/sensors -s\n").
+- "#----cut here----\n\n");
+-
+- print "You really should try these commands right now to make sure everything\n".
+- "is working properly. Monitoring programs won't work until the needed\n".
+- "modules are loaded.\n\n";
++ }
++ else {
++ print "\nNote: Please make sure the following modules are loaded when you\n"
++ . "want to make use of your sensors:\n\n";
++
++ print " " . join(" ", (@{$bus_modules}, @{$hwmon_modules})) . "\n\n";
+ }
+ }
+
+--
+2.9.3
+
+
+From 59680d1fd41402efb547ca75ad8397089df2e059 Mon Sep 17 00:00:00 2001
+From: Thomas Deutschmann <whissi@gentoo.org>
+Date: Mon, 29 Aug 2016 12:47:50 +0200
+Subject: [PATCH 3/3] sensors-detect: Add Gentoo config file protection
+
+Per default we don't modify live config file. Instead we create
+"._cfg0000_<filename>" files known from emerge when using CONFIG PROTECT.
+
+See CONFIGURATION FILES section of emerge(1) man page for details.
+
+Can be disabled using the "--no-gentoo-config-protect" parameter.
+---
+ prog/detect/sensors-detect | 51 +++++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 48 insertions(+), 3 deletions(-)
+
+diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect
+index bb5ae0f..2cc8f88 100755
+--- a/prog/detect/sensors-detect
++++ b/prog/detect/sensors-detect
+@@ -7093,7 +7093,7 @@ sub write_config
+ mkdir('/etc/modprobe.d', 0755)
+ or die "Sorry, can't create /etc/modprobe.d ($!)";
+ }
+- open(local *MODPROBE_D, ">", $have_modprobe_d . '/lm_sensors.conf')
++ open(local *MODPROBE_D, ">", gentoo_get_protected_file($have_modprobe_d . '/lm_sensors.conf'))
+ or die "Sorry, can't create /etc/modprobe.d/lm_sensors.conf ($!)";
+ print MODPROBE_D "# Generated by sensors-detect on " . scalar localtime() . "\n";
+ print MODPROBE_D $configfile;
+@@ -7134,7 +7134,7 @@ sub write_config
+ or die "Sorry, can't create '$modulesload_filedir' ($!)";
+ }
+
+- open(my $fh, '>', $modulesload_file)
++ open(my $fh, '>', gentoo_get_protected_file($modulesload_file))
+ or die "Sorry, can't open '$modulesload_file' for writing! ($!)";
+
+ print $fh $modulesload_cfg;
+@@ -7152,10 +7152,17 @@ sub write_config
+ }
+
+ if ($have_conffiles_created) {
++ if (!$opt{no_gentoo_config_protect}) {
++ print "\n * IMPORTANT: At least $have_conffiles_created config file(s) in '/etc' need updating.\n"
++ . " * See the CONFIGURATION FILES and CONFIGURATION FILES UPDATE TOOLS\n"
++ . " * sections of the emerge man page to learn how to update config files.\n";
++ }
++
+ printf "\nNote: You only have created the required configuration to autoload the\n"
+ . "required modules to use your sensors on boot. If you want to start using\n"
+ . "your sensors right now you have to either load them now once manually, to\n"
+- . "reboot this system or to execute the following command(s):\n\n";
++ . "reboot this system or to execute the following command(s)\%s:\n\n",
++ ($opt{no_gentoo_config_protect} ? "" : " _AFTER_\nyou have updated your config files");
+
+ if ($systemd_is_booted) {
+ print " # systemctl restart systemd-modules-load\n\n"
+@@ -7171,6 +7178,32 @@ sub write_config
+ }
+ }
+
++sub gentoo_get_protected_file
++{
++ my ($file) = @_;
++
++ if ($opt{no_gentoo_config_protect}) {
++ return $file;
++ }
++
++ my $basename = basename($file);
++ my $dirname = dirname($file);
++
++ my $protected_file;
++ for (my $prot_num = 0; $prot_num <= 9999; $prot_num++) {
++ $protected_file = sprintf('%s/._cfg%s_%s',
++ $dirname,
++ sprintf("%0*d", 4, $prot_num),
++ $basename);
++
++ if (! -f $protected_file) {
++ return $protected_file;
++ }
++ }
++
++ die "Running out of files -- cannot create protected file '$file'"
++}
++
+ sub main
+ {
+ my ($input, $superio_features);
+@@ -7181,6 +7214,8 @@ sub main
+ $opt{stat} = 1;
+ } elsif ($ARGV[0] eq "--auto") {
+ $opt{auto} = 1;
++ } elsif ($ARGV[0] eq "--no-gentoo-config-protect") {
++ $opt{no_gentoo_config_protect} = 1;
+ } else {
+ print STDERR "Error: unknown option $ARGV[0]\n";
+ exit 1;
+@@ -7234,6 +7269,16 @@ sub main
+ "unless you know what you're doing.\n\n";
+ }
+
++ if (!$opt{no_gentoo_config_protect}) {
++ print "Gentoo config file protection is active. Every file this program will\n",
++ "modify must be merged before the change will become active using\n",
++ "default Gentoo tools such as dispatch-conf, cfg-update, and etc-update.\n\n";
++ }
++ else {
++ print "Gentoo config file protection is _disabled_. This program will modify\n",
++ "your active configuration without backups.\n\n";
++ }
++
+ print "Some south bridges, CPUs or memory controllers contain embedded sensors.\n".
+ "Do you want to scan for them? This is totally safe. (YES/no): ";
+ $input = read_answer();
+--
+2.9.3
+