sys-apps/lm_sensors: add new snapshot release
authorThomas Deutschmann <whissi@gentoo.org>
Mon, 10 Jun 2019 13:25:58 +0000 (15:25 +0200)
committerThomas Deutschmann <whissi@gentoo.org>
Mon, 10 Jun 2019 13:26:11 +0000 (15:26 +0200)
Closes: https://bugs.gentoo.org/680172
Package-Manager: Portage-2.3.67, Repoman-2.3.14
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
sys-apps/lm_sensors/Manifest
sys-apps/lm_sensors/files/lm_sensors-3.5.0-sensors-detect-gentoo.patch [new file with mode: 0644]
sys-apps/lm_sensors/lm_sensors-3.5.0_p20190505.ebuild [new file with mode: 0644]

index 34c38ccbbbf5d342c9ec7ca8aceb0551dfda46ac..727cc20c9292ea12f4c1be833f9ced8534ae69e4 100644 (file)
@@ -1 +1,2 @@
 DIST lm_sensors-3.5.0.tar.gz 267133 BLAKE2B f8fe8efe19cd17f2c828404bee7b2b285118279f06aaa2ebf831823d6767865a2b19da7bede1f3b43b2664ae3cec41b9e840be24fa673472fe577d38f602da4e SHA512 bea9b2ac01bc43622cafdce0b00ac3bb8cb2d818449c8b332ab51e7ad0022b66bcbf6ca1e99c8500bdc6092c5c1ef985bfe7cff05dbcf015bd3ccf58c00a72e1
+DIST lm_sensors-3.5.0_p20190505.tar.gz 269694 BLAKE2B 6d665b8cbf83b26786686c5000dcac139aac930f691bac9053173dfcb92b6320afeb2f9b5ba6305cba643ff8cde356ef9e6772948d0f618cb3f5a48b3b5396f2 SHA512 15e3c50a9f00d284995f1ae34ef38e1ce314acb0c15d4996002287fadcf89a6f066058838c74c2b2bbec2628a3e5b9e8e010b0f5139641ee5336ac061cb33353
diff --git a/sys-apps/lm_sensors/files/lm_sensors-3.5.0-sensors-detect-gentoo.patch b/sys-apps/lm_sensors/files/lm_sensors-3.5.0-sensors-detect-gentoo.patch
new file mode 100644 (file)
index 0000000..3fcd19c
--- /dev/null
@@ -0,0 +1,347 @@
+From eed538e59a63eaacae67d7bfdd95a19e18dad1a5 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.
+
+Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
+---
+ 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 5c771485..ea1c0d53 100755
+--- a/prog/detect/sensors-detect
++++ b/prog/detect/sensors-detect
+@@ -2976,7 +2976,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
+ {
+@@ -3050,6 +3050,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.21.0
+
+
+From bad0d73c98c9167ec4ade01c6b75159643d237f1 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
+Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
+---
+ 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 ea1c0d53..1e8ac00d 100755
+--- a/prog/detect/sensors-detect
++++ b/prog/detect/sensors-detect
+@@ -7338,6 +7338,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): ",
+@@ -7346,96 +7349,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 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.21.0
+
+
+From c1d471a8be4840a38fe82464e0756a243e158a30 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.
+
+Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
+---
+ 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 1e8ac00d..e548bfaf 100755
+--- a/prog/detect/sensors-detect
++++ b/prog/detect/sensors-detect
+@@ -7352,7 +7352,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;
+@@ -7393,7 +7393,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;
+@@ -7411,10 +7411,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"
+@@ -7430,6 +7437,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);
+@@ -7440,6 +7473,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;
+@@ -7493,6 +7528,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.21.0
+
diff --git a/sys-apps/lm_sensors/lm_sensors-3.5.0_p20190505.ebuild b/sys-apps/lm_sensors/lm_sensors-3.5.0_p20190505.ebuild
new file mode 100644 (file)
index 0000000..c63ff09
--- /dev/null
@@ -0,0 +1,218 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit linux-info systemd toolchain-funcs multilib-minimal
+
+DESCRIPTION="Hardware Monitoring user-space utilities"
+HOMEPAGE="https://hwmon.wiki.kernel.org/ https://github.com/lm-sensors/lm-sensors"
+
+MY_PN="${PN/_/-}"
+
+if [[ "${PV}" =~ .*_p[[:digit:]]{8}.* ]] ; then
+       COMMIT="2c8cca3d6cd60121b401734c1a24cfec7daed4fc"
+       SRC_URI="https://github.com/lm-sensors/${MY_PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+       S="${WORKDIR}/${MY_PN}-${COMMIT}"
+else
+       SRC_URI="https://github.com/lm-sensors/lm-sensors/archive/V$(ver_rs 1- -).tar.gz -> ${P}.tar.gz"
+       S="${WORKDIR}/${PN/_/-}-$(ver_rs 1- -)"
+fi
+
+LICENSE="GPL-2+ LGPL-2.1"
+
+# SUBSLOT based on SONAME of libsensors.so
+SLOT="0/5.0.0"
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux"
+IUSE="contrib sensord static-libs"
+
+COMMON_DEPS="
+       sensord? (
+               net-analyzer/rrdtool
+               virtual/logger
+       )"
+
+RDEPEND="${COMMON_DEPS}
+       dev-lang/perl
+       !<sys-apps/openrc-0.36"
+
+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.5.0-sensors-detect-gentoo.patch )
+
+DOCS=( CHANGES CONTRIBUTORS INSTALL README )
+DOCS+=( doc/{donations,fancontrol.txt,fan-divisors,libsensors-API.txt,progs,temperature-sensors,vid} )
+
+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
+
+       if use contrib; then
+               insinto /usr/share/${PN}
+               doins -r "${S}"/configs
+       fi
+}
+
+pkg_postinst() {
+       local _new_loader='3.4.0_p20160725'
+       local _v
+       for _v in ${REPLACING_VERSIONS}; do
+               if ! ver_test "${_v}" -gt "${_new_loader}"; 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
+}