blob: a9464cdd97019a006018405a02a4d13a2a92a3be [file] [log] [blame]
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
inherit linux-info systemd toolchain-funcs multilib-minimal eapi7-ver
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="807f9b1529892c0ac89bca0c7ae781c59f9c8393"
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="*"
IUSE="contrib 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} )
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
}