commit:     c578a4e87a66dd39ebaf96aea13b06f4ceaca8b9
Author:     Marek Szuba <marecki <AT> gentoo <DOT> org>
AuthorDate: Wed Sep  7 13:04:01 2022 +0000
Commit:     Marek Szuba <marecki <AT> gentoo <DOT> org>
CommitDate: Wed Sep  7 14:30:06 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c578a4e8

sys-apps/lm-sensors: recommend new module for Nuvoton W83677HG-I in 
sensors-detect

Backported patch from upstream Git master.

Closes: https://bugs.gentoo.org/811327
Signed-off-by: Marek Szuba <marecki <AT> gentoo.org>

 .../files/lm-sensors-3.6.0-w83627ehf-nct6775.patch |  46 +++++
 sys-apps/lm-sensors/lm-sensors-3.6.0-r1.ebuild     | 226 +++++++++++++++++++++
 2 files changed, 272 insertions(+)

diff --git a/sys-apps/lm-sensors/files/lm-sensors-3.6.0-w83627ehf-nct6775.patch 
b/sys-apps/lm-sensors/files/lm-sensors-3.6.0-w83627ehf-nct6775.patch
new file mode 100644
index 000000000000..e4493c414a49
--- /dev/null
+++ b/sys-apps/lm-sensors/files/lm-sensors-3.6.0-w83627ehf-nct6775.patch
@@ -0,0 +1,46 @@
+From 23c53b457407ab3ed217f963fc0329d0ae4bdeac Mon Sep 17 00:00:00 2001
+From: Jean Delvare <[email protected]>
+Date: Tue, 12 May 2020 16:22:06 +0200
+Subject: [PATCH] sensors-detect: Fix the driver for Nuvoton W83677HG-I
+
+Originally, support for the Nuvoton W83677HG-I and derivatives was
+first added to the w83627ehf driver, so that's the driver recommended
+by sensors-detect. Later, support for the same device was added to
+the nct6775 driver. In kernel v5.6, support was removed from the
+w83627ehf driver to get rid of the duplicate code.
+
+So sensors-detect should now point users of this device to the
+nct6775 driver. We can't do that for very old kernels though, as this
+driver did not exist back then. I chose v3.10 for the cut-over, as
+this is when support for the Nuvoton W83677HG-I was finalized in the
+nct6775 driver, at least according to git log.
+
+Signed-off-by: Jean Delvare <[email protected]>
+---
+ prog/detect/sensors-detect | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect
+index 6fc441aa6..319b1b7b9 100755
+--- a/prog/detect/sensors-detect
++++ b/prog/detect/sensors-detect
+@@ -2273,7 +2273,7 @@ use constant FEAT_SMBUS  => (1 << 7);
+               features => FEAT_IN | FEAT_FAN | FEAT_TEMP,
+       }, {
+               name => "Nuvoton W83677HG-I 
(NCT5572D/NCT6771F/NCT6772F/NCT6775F) Super IO Sensors",
+-              driver => "w83627ehf",
++              driver => sub { kernel_version_at_least(3, 10, 0) ? "nct6775" : 
"w83627ehf" },
+               devid => 0xB470,
+               devid_mask => 0xFFF0,
+               logdev => 0x0b,
+@@ -4574,7 +4574,9 @@ sub scan_cpu
+ sub chip_special_cases
+ {
+       # Some chip to driver mappings depend on the environment
+-      foreach my $chip (@chip_ids) {
++      foreach my $chip (@chip_ids, @superio_ids_natsemi, @superio_ids_smsc,
++                        @superio_ids_smsc_ns, @superio_ids_winbond,
++                        @superio_ids_ite) {
+               if (ref($chip->{driver}) eq 'CODE') {
+                       $chip->{driver} = $chip->{driver}->();
+               }

diff --git a/sys-apps/lm-sensors/lm-sensors-3.6.0-r1.ebuild 
b/sys-apps/lm-sensors/lm-sensors-3.6.0-r1.ebuild
new file mode 100644
index 000000000000..69ccb494585d
--- /dev/null
+++ b/sys-apps/lm-sensors/lm-sensors-3.6.0-r1.ebuild
@@ -0,0 +1,226 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+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";
+
+if [[ "${PV}" =~ .*_p[[:digit:]]{8}.* ]] ; then
+       COMMIT="2c8cca3d6cd60121b401734c1a24cfec7daed4fc"
+       SRC_URI="https://github.com/lm-sensors/${PN}/archive/${COMMIT}.tar.gz 
-> ${P}.tar.gz"
+       S="${WORKDIR}/${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 ~loong ~mips ~ppc ~ppc64 ~riscv 
~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
+       "${FILESDIR}"/${PN}-3.6.0-no-which.patch
+       "${FILESDIR}"/${PN}-3.6.0-w83627ehf-nct6775.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() {
+       # We need to set CC and friends again here to avoid recompilation for 
cross
+       # bug #799851
+       emake \
+               CC="$(tc-getCC)" \
+               CXX="$(tc-getCXX)" \
+               LD="$(tc-getLD)" \
+               AR="$(tc-getAR)" \
+               DESTDIR="${ED}" \
+               PREFIX="/usr" \
+               MANDIR="/usr/share/man" \
+               ETCDIR="/etc" \
+               LIBDIR="/usr/$(get_libdir)" \
+               install
+}
+
+multilib_src_install_all() {
+       newinitd "${FILESDIR}"/lm_sensors.initd lm_sensors
+       newconfd "${FILESDIR}"/lm_sensors.confd lm_sensors
+       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/lm_sensors
+               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 lm_sensors 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
+}

Reply via email to