summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2016-09-16 14:36:11 +0200
committerThomas Deutschmann <whissi@gentoo.org>2016-09-16 14:37:14 +0200
commit9ba6c0d353dd2ad3936fe35095588648b472f188 (patch)
treeb09ce40af6192c3631777b2d40e1948226b53216 /sys-apps/lm_sensors
parentdev-lang/scala: Bump 2.11 slot to 2.11.8. (diff)
downloadgentoo-9ba6c0d353dd2ad3936fe35095588648b472f188.tar.gz
gentoo-9ba6c0d353dd2ad3936fe35095588648b472f188.tar.bz2
gentoo-9ba6c0d353dd2ad3936fe35095588648b472f188.zip
sys-apps/lm_sensors: Version bump to snapshot release from 2016-07-25; Package now uses module-load service
Changes: ======== - Based on latest unreleased changes (snapshot release from 2016-07-25; updated/added detection for Fintek F81768, Nuvoton NCT6793D, Microchip MCP9808 and Mark F71868A chips; various fixes for sensors-detect, see https://git.io/v6Wig for all changes) - sensors-detect now writes to "/etc/modules-load.d/lm_sensors.conf" and uses a config file protection mechanism like known from emerge (i.e. after making changes you have to call tools such as dispatch-conf, cfg-update or etc-update to merge the changes; new "--no-gentoo-config-protect" parameter will disable config file protection) - Due to previous change lm_service service no longer loads modules. You have to use mechanism your init system provides to do that (i.e. make sure your init system's modules-load service is enabled). - Ebuild is now multilib compatible (see bug 529684) - Runscripts no longer passes config file as argument. While this removes the possibility to use different configurations per default services it allows you to use "/etc/sensors.d" (see bug 490502 and bug 307249) - Runscripts improved in general. I.e. if you start fancontrol service without a valid config (so that fancontrol doesn't start and exit with an error) you will now know at least, that the service didn't start. Now you will also have reliable status functions to know service state. Gentoo-Bug: https://bugs.gentoo.org/592916 Gentoo-Bug: https://bugs.gentoo.org/529684 Gentoo-Bug: https://bugs.gentoo.org/490502 Gentoo-Bug: https://bugs.gentoo.org/307249 Package-Manager: portage-2.3.0
Diffstat (limited to 'sys-apps/lm_sensors')
-rw-r--r--sys-apps/lm_sensors/Manifest1
-rw-r--r--sys-apps/lm_sensors/files/fancontrol.confd16
-rw-r--r--sys-apps/lm_sensors/files/fancontrol.initd22
-rw-r--r--sys-apps/lm_sensors/files/fancontrol.service-r19
-rw-r--r--sys-apps/lm_sensors/files/lm_sensors-3.4.0-sensors-detect-gentoo.patch342
-rw-r--r--sys-apps/lm_sensors/files/lm_sensors.confd4
-rw-r--r--sys-apps/lm_sensors/files/lm_sensors.initd22
-rw-r--r--sys-apps/lm_sensors/files/sensord.confd19
-rw-r--r--sys-apps/lm_sensors/files/sensord.initd20
-rw-r--r--sys-apps/lm_sensors/files/sensord.service-r19
-rw-r--r--sys-apps/lm_sensors/lm_sensors-3.4.0_p20160725.ebuild211
-rw-r--r--sys-apps/lm_sensors/metadata.xml25
12 files changed, 692 insertions, 8 deletions
diff --git a/sys-apps/lm_sensors/Manifest b/sys-apps/lm_sensors/Manifest
index f39831112d79..c9e6ed72b04a 100644
--- a/sys-apps/lm_sensors/Manifest
+++ b/sys-apps/lm_sensors/Manifest
@@ -1,3 +1,4 @@
DIST lm_sensors-3.3.4.tar.bz2 172226 SHA256 b4608610cb5de4b24e3fe1ae357712e8633a8a929bbb42df5eecc4ccee6ba76d SHA512 a375f747a1687da0fe743d731893156f7983e001725c2d7cd284cefd3e8922deb3dfe542d3c901e3da8fff321633d64180a637d780b5e1bb3f1e9a254c16b7e6 WHIRLPOOL 4011264a56c36ffcfe28d357ceae1929fdf8a21c27bfaba928c9a7b48ef2b8422cd6650981a4c8f220900cc45526ca4bbfda9810b54db0efaf15cdaad4599838
DIST lm_sensors-3.3.5.tar.bz2 173609 SHA256 5dae6a665e1150159a93743c4ff1943a7efe02cd9d3bb12c4805e7d7adcf4fcf SHA512 0874084c3dd40b93ed05e1955f76e35e78ac3ac2343341d8ab5412fd941ea300b3a4b1320bec3a5bfb07309e82f42cc5dac0a728cdfddac4053d4fdb96dc12e7 WHIRLPOOL f82d0d1a4b7647cf9076f16861024dd65fd97bd34a7498fcc06e851913f5b71805689d915b67a628b6cd7aea2b46225d64df8833550c785236311c9980ac8ed1
DIST lm_sensors-3.4.0.tar.bz2 175802 SHA256 e0579016081a262dd23eafe1d22b41ebde78921e73a1dcef71e05e424340061f SHA512 993064bd14b855c1ae8c057e89313df5b3d5efe441fb2e8c3e508f42bb15658564df2563fac8fabbdb0d650dfdbc694037736c748d45cb9d85dfb8fb5a3d1ea9 WHIRLPOOL 82ed9b922a352702d974ea075222894c69a081da1fca9e026e3176266bb6a8911fd8fc0cd73f2d9ab3524cd30cfe2e688a015032829cf32d844592debaf9924d
+DIST lm_sensors-3.4.0_p20160725.tar.gz 206868 SHA256 c3bb872cabcf3fa4b597bc1a8d6ee277a80b28c811125a45341e0874a97ac102 SHA512 abae5c4ba2ed0b763fda918e2ededb2148a3edd1d33709a34b91a33398a64e8988d14c5d16a5c756bf55beaa383e661c76e1acccc7b5ef858aa772e96878131b WHIRLPOOL 4d7620f74ea46f559b6b293a7cb20f0296277f7c10f54b368fd63bef2d1496b3769f39066cc4f980337d99b3a1dbb51af8e9eed724605f153a08cfa9fd28739b
diff --git a/sys-apps/lm_sensors/files/fancontrol.confd b/sys-apps/lm_sensors/files/fancontrol.confd
new file mode 100644
index 000000000000..a7169583173e
--- /dev/null
+++ b/sys-apps/lm_sensors/files/fancontrol.confd
@@ -0,0 +1,16 @@
+# /etc/conf.d/fancontrol
+
+# Configuration file
+#FANCONTROL_CONFIGFILE="/etc/fancontrol"
+
+# You can use this configuration option to pass additional options to the
+# start-stop-daemon, see start-stop-daemon(8) for more details.
+# Per default we forces fancontrol into background and wait 1000ms after we
+# have started the service to ensure that the daemon is really up and
+# running.
+#FANCONTROL_SSDARGS="--background --wait 1000"
+
+# The termination timeout (start-stop-daemon parameter "retry") ensures
+# that the service will be terminated within a given time (60 + 5 seconds
+# per default) when you are stopping the service.
+#FANCONTROL_TERMTIMEOUT="TERM/60/KILL/5"
diff --git a/sys-apps/lm_sensors/files/fancontrol.initd b/sys-apps/lm_sensors/files/fancontrol.initd
new file mode 100644
index 000000000000..05f787d026dc
--- /dev/null
+++ b/sys-apps/lm_sensors/files/fancontrol.initd
@@ -0,0 +1,22 @@
+#!/sbin/openrc-run
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+FANCONTROL_CONFIGFILE=${FANCONTROL_CONFIGFILE:-"/etc/fancontrol"}
+FANCONTROL_SSDARGS=${FANCONTROL_SSDARGS:-"--background --wait 1000"}
+FANCONTROL_TERMTIMEOUT=${FANCONTROL_TERMTIMEOUT:-"TERM/60/KILL/5"}
+
+
+command="/usr/sbin/fancontrol"
+command_args="${FANCONTROL_CONFIGFILE}"
+start_stop_daemon_args="${FANCONTROL_SSDARGS}"
+pidfile="/run/fancontrol.pid"
+retry="${FANCONTROL_TERMTIMEOUT}"
+
+required_files="${FANCONTROL_CONFIGFILE}"
+
+depend() {
+ need localmount
+ use lm_sensors
+}
diff --git a/sys-apps/lm_sensors/files/fancontrol.service-r1 b/sys-apps/lm_sensors/files/fancontrol.service-r1
new file mode 100644
index 000000000000..7d4342c30171
--- /dev/null
+++ b/sys-apps/lm_sensors/files/fancontrol.service-r1
@@ -0,0 +1,9 @@
+[Unit]
+Description=Fan control daemon
+
+[Service]
+PIDFile=/run/fancontrol.pid
+ExecStart=/usr/sbin/fancontrol
+
+[Install]
+WantedBy=multi-user.target
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 000000000000..dd77d66c0855
--- /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
+
diff --git a/sys-apps/lm_sensors/files/lm_sensors.confd b/sys-apps/lm_sensors/files/lm_sensors.confd
new file mode 100644
index 000000000000..bae2ea0bbbec
--- /dev/null
+++ b/sys-apps/lm_sensors/files/lm_sensors.confd
@@ -0,0 +1,4 @@
+# /etc/conf.d/lm_sensors
+
+# NOTE:
+# For module loading please use /etc/modules-load.d/lm_sensors.conf
diff --git a/sys-apps/lm_sensors/files/lm_sensors.initd b/sys-apps/lm_sensors/files/lm_sensors.initd
new file mode 100644
index 000000000000..4804b7832e92
--- /dev/null
+++ b/sys-apps/lm_sensors/files/lm_sensors.initd
@@ -0,0 +1,22 @@
+#!/sbin/openrc-run
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+command="/usr/bin/sensors"
+
+depend() {
+ need localmount
+ after modules-load
+}
+
+start() {
+ ebegin "Initializing sensors"
+ ${command} --set >/dev/null 2>&1
+ eend $?
+}
+
+stop() {
+ # Nothing to stop
+ return 0;
+}
diff --git a/sys-apps/lm_sensors/files/sensord.confd b/sys-apps/lm_sensors/files/sensord.confd
new file mode 100644
index 000000000000..a6f2f265c11f
--- /dev/null
+++ b/sys-apps/lm_sensors/files/sensord.confd
@@ -0,0 +1,19 @@
+# /etc/conf.d/sensord
+
+# PID file
+#SENSORD_PIDFILE="/run/sensord.pid"
+
+# You can use this configuration option to pass additional options to the
+# start-stop-daemon, see start-stop-daemon(8) for more details.
+# Per default we wait 1000ms after we have started the service to ensure
+# that the daemon is really up and running.
+#SENSORD_SSDARGS="--wait 1000"
+
+# The termination timeout (start-stop-daemon parameter "retry") ensures
+# that the service will be terminated within a given time (60 + 5 seconds
+# per default) when you are stopping the service.
+#SENSORD_TERMTIMEOUT="TERM/60/KILL/5"
+
+# Extra options to pass to the sensord daemon,
+# see sensord(8) for more information
+#SENSORD_OPTS=""
diff --git a/sys-apps/lm_sensors/files/sensord.initd b/sys-apps/lm_sensors/files/sensord.initd
new file mode 100644
index 000000000000..96acb59887e4
--- /dev/null
+++ b/sys-apps/lm_sensors/files/sensord.initd
@@ -0,0 +1,20 @@
+#!/sbin/openrc-run
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+SENSORD_PIDFILE=${SENSORD_PIDFILE:-"/run/sensord.pid"}
+SENSORD_SSDARGS=${SENSORD_SSDARGS:-"--wait 1000"}
+SENSORD_TERMTIMEOUT=${SENSORD_TERMTIMEOUT:-"TERM/60/KILL/5"}
+SENSORD_OPTS=${SENSORD_OPTS:-""}
+
+command="/usr/sbin/sensord"
+command_args="${SENSORD_OPTS} --pid-file ${SENSORD_PIDFILE}"
+start_stop_daemon_args="${SENSORD_SSDARGS}"
+pidfile="${SENSORD_PIDFILE}"
+retry="${SENSORD_TERMTIMEOUT}"
+
+depend() {
+ need localmount
+ use logger lm_sensors
+}
diff --git a/sys-apps/lm_sensors/files/sensord.service-r1 b/sys-apps/lm_sensors/files/sensord.service-r1
new file mode 100644
index 000000000000..b7a1e1bc3bd0
--- /dev/null
+++ b/sys-apps/lm_sensors/files/sensord.service-r1
@@ -0,0 +1,9 @@
+[Unit]
+Description=Sensor information logging daemon
+
+[Service]
+PIDFile=/run/sensord.pid
+ExecStart=/usr/sbin/sensord
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys-apps/lm_sensors/lm_sensors-3.4.0_p20160725.ebuild b/sys-apps/lm_sensors/lm_sensors-3.4.0_p20160725.ebuild
new file mode 100644
index 000000000000..01e2e73f91f6
--- /dev/null
+++ b/sys-apps/lm_sensors/lm_sensors-3.4.0_p20160725.ebuild
@@ -0,0 +1,211 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="6"
+
+inherit linux-info systemd toolchain-funcs multilib-minimal
+
+DESCRIPTION="Hardware Monitoring user-space utilities"
+HOMEPAGE="http://www.lm-sensors.org/ https://github.com/groeck/lm-sensors"
+
+COMMIT="45ffa15cf02e63f70ff3b85c23e22dfbab7e8f9c"
+MY_PN="${PN/_/-}"
+
+#SRC_URI="http://dl.lm-sensors.org/lm-sensors/releases/${P}.tar.bz2"
+SRC_URI="https://github.com/groeck/${MY_PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+ LGPL-2.1"
+
+# SUBSLOT based on SONAME of libsensors.so
+SLOT="0/4.4.0"
+
+KEYWORDS="~alpha ~amd64 ~arm ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~arm-linux ~x86-linux"
+IUSE="sensord static-libs"
+
+COMMON_DEPS="
+ sensord? (
+ net-analyzer/rrdtool
+ virtual/logger
+ )"
+
+RDEPEND="${COMMON_DEPS}
+ dev-lang/perl
+ !<sys-apps/openrc-0.21.7"
+
+DEPEND="${COMMON_DEPS}
+ sys-devel/bison
+ sys-devel/flex"
+
+CONFIG_CHECK="~HWMON ~I2C_CHARDEV ~I2C"
+WARNING_HWMON="${PN} requires CONFIG_HWMON to be enabled for use."
+WARNING_I2C_CHARDEV="sensors-detect requires CONFIG_I2C_CHARDEV to be enabled."
+WARNING_I2C="${PN} requires CONFIG_I2C to be enabled for most sensors."
+
+PATCHES=( "${FILESDIR}"/${PN}-3.4.0-sensors-detect-gentoo.patch )
+
+DOCS=( CHANGES CONTRIBUTORS INSTALL README )
+DOCS+=( doc/{donations,fancontrol.txt,fan-divisors,libsensors-API.txt,progs,temperature-sensors,vid} )
+
+S="${WORKDIR}/${MY_PN}-${COMMIT}"
+
+src_prepare() {
+ default
+
+ if [[ -n "${COMMIT}" ]]; then
+ local _version="${PV%_*}+git_${COMMIT}"
+
+ sed -i \
+ -e "s:LM_VERSION.*:LM_VERSION \"${_version}\":" \
+ version.h || \
+ die "Failed to update version.h"
+
+ sed -i \
+ -e "s/^\$revision = '.*/\$revision = '${_version}';/" \
+ -e "/^\$revision =~ s.*/d" \
+ prog/detect/sensors-detect || \
+ die "Failed to set revision in prog/detect/sensors-detect"
+
+ sed -i \
+ -e "s/^echo \"# pwmconfig revision.*/echo \"# pwmconfig revision ${_version}\"/" \
+ -e "/^REVISION=.*/d" \
+ -e "/^REVDATE=.*/d" \
+ -e "s:^PIDFILE=\".*:PIDFILE=\"/run/fancontrol.pid\":" \
+ prog/pwm/pwmconfig || \
+ die "Failed to adjust prog/pwm/pwmconfig"
+ else
+ sed -i \
+ -e "s:^PIDFILE=\".*:PIDFILE=\"/run/fancontrol.pid\":" \
+ prog/pwm/pwmconfig || \
+ die "Failed to adjust PIDFILE in prog/pwm/pwmconfig"
+ fi
+
+ # Respect LDFLAGS
+ sed -i -e 's/\$(LIBDIR)$/\$(LIBDIR) \$(LDFLAGS)/g' Makefile || \
+ die "Failed to sed in LDFLAGS"
+
+ sed -i \
+ -e "s:^PIDFILE=\".*:PIDFILE=\"/run/fancontrol.pid\":" \
+ prog/pwm/fancontrol || \
+ die "Failed to adjust PIDFILE of prog/pwm/fancontrol"
+
+ # Don't use EnvironmentFile in systemd unit
+ sed -i \
+ -e '/^EnvironmentFile=/d' \
+ -e '/^Exec.*modprobe.*/d' \
+ prog/init/lm_sensors.service || \
+ die "Failed to remove EnvironmentFile from systemd unit file"
+
+ if ! use static-libs; then
+ sed -i -e '/^BUILD_STATIC_LIB/d' Makefile || \
+ die "Failed to disable static building"
+ fi
+
+ # Don't show outdated user instructions
+ sed -i -e '/^ @echo "\*\*\* /d' Makefile || \
+ die "Failed to remove outdated user instructions"
+
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ default
+
+ if multilib_is_native_abi && use sensord; then
+ # sensord requires net-analyzer/rrdtool which doesn't have real multilib
+ # support. To prevent errors like
+ #
+ # skipping incompatible /usr/lib/librrd.so when searching for -lrrd
+ # cannot find -lrrd
+ #
+ # we only build sensord when we are building for profile's native ABI
+ # (it doesn't affect libsensors.so).
+ sed -i -e 's:^#\(PROG_EXTRA.*\):\1:' Makefile || \
+ die "Failed to enable building of sensord"
+ fi
+}
+
+multilib_src_compile() {
+ emake \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ LD="$(tc-getLD)" \
+ AR="$(tc-getAR)"
+}
+
+multilib_src_install() {
+ emake \
+ DESTDIR="${D%/}" \
+ PREFIX="/usr" \
+ MANDIR="/usr/share/man" \
+ ETCDIR="/etc" \
+ LIBDIR="/usr/$(get_libdir)" \
+ install
+}
+
+multilib_src_install_all() {
+ newinitd "${FILESDIR}"/${PN}.initd ${PN}
+ newconfd "${FILESDIR}"/${PN}.confd ${PN}
+ systemd_dounit prog/init/lm_sensors.service
+
+ newinitd "${FILESDIR}"/fancontrol.initd fancontrol
+ newconfd "${FILESDIR}"/fancontrol.confd fancontrol
+ systemd_newunit "${FILESDIR}"/fancontrol.service-r1 fancontrol.service
+
+ if use sensord; then
+ newconfd "${FILESDIR}"/sensord.confd sensord
+ newinitd "${FILESDIR}"/sensord.initd sensord
+ systemd_newunit "${FILESDIR}"/sensord.service-r1 sensord.service
+ fi
+
+ einstalldocs
+
+ docinto developers
+ dodoc doc/developers/applications
+}
+
+pkg_postinst() {
+ local _new_loader='3.4.0_p20160725'
+ local _v
+ for _v in ${REPLACING_VERSIONS}; do
+ if ! version_is_at_least ${_new_loader} ${v}; then
+ # This is an upgrade which require migration
+
+ elog ""
+ elog "Since version 3.4.0_p20160725 ${PN} no longer loads modules on its own"
+ elog "instead it is using \"modules-load\" services provided by OpenRC or systemd."
+ elog ""
+ elog "To migrate your configuration you have 2 options:"
+ elog ""
+ elog " a) Re-create a new configuration using \"/usr/sbin/sensors-detect\""
+ elog ""
+ elog " b) Copy existing \"modules_<n>\", \"HWMON_MODULES\" or \"BUS_MODULES\""
+ elog " variables from \"/etc/conf.d/lm_modules\" to"
+ elog " \"/etc/modules-load.d/lm_sensors.conf\" and adjust format."
+ elog ""
+ elog " For details see https://wiki.gentoo.org/wiki/Systemd#Automatic_module_loading"
+ elog ""
+ elog " Important: Don't forget to migrate your module's argument"
+ elog " (modules_<name>_args variable) if your are not already"
+ elog " using \"/etc/modprobe.d\" (which is recommended)."
+
+ # Show this elog only once
+ break
+ fi
+ done
+
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ # New installation
+
+ elog ""
+ elog "Please run \`/usr/sbin/sensors-detect' in order to setup"
+ elog "\"/etc/modules-load.d/lm_sensors.conf\"."
+ elog ""
+ elog "You might want to add ${PN} to your default runlevel to make"
+ elog "sure the sensors get initialized on the next startup."
+ elog ""
+ elog "Be warned, the probing of hardware in your system performed by"
+ elog "sensors-detect could freeze your system. Also make sure you read"
+ elog "the documentation before running ${PN} on IBM ThinkPads."
+ fi
+}
diff --git a/sys-apps/lm_sensors/metadata.xml b/sys-apps/lm_sensors/metadata.xml
index c865c34fd411..d8294cc5920c 100644
--- a/sys-apps/lm_sensors/metadata.xml
+++ b/sys-apps/lm_sensors/metadata.xml
@@ -1,13 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="person">
- <email>polynomial-c@gentoo.org</email>
- <name>Lars Wendler</name>
- </maintainer>
- <use>
- <flag name="sensord">Enable sensord - a daemon that can be used to
+ <maintainer type="person">
+ <email>polynomial-c@gentoo.org</email>
+ <name>Lars Wendler</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>whissi@gentoo.org</email>
+ <name>Thomas Deutschmann</name>
+ </maintainer>
+ <slots>
+ <subslots>Reflect ABI of libsensors.so.</subslots>
+ </slots>
+ <use>
+ <flag name="sensord">
+ Enable sensord - a daemon that can be used to
periodically log sensor readings from hardware health-monitoring
- chips</flag>
- </use>
+ chips
+ </flag>
+ </use>
</pkgmetadata>