View Raw Ebuild
# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MODULES_OPTIONAL_IUSE="+modules"
inherit linux-mod-r1
ORAZER_P="openrazer-${PV}"
DESCRIPTION="A collection of kernel drivers for Razer devices."
HOMEPAGE="https://github.com/openrazer/openrazer"
SRC_URI="https://github.com/openrazer/openrazer/archive/refs/tags/v${PV}.tar.gz -> ${ORAZER_P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"
IUSE="dkms"
REQUIRED_USE="|| ( modules dkms )"
S="${WORKDIR%/}/${ORAZER_P}/driver"
MY_MODLIST=(
razerkbd=kernel/drivers/hid
razermouse=kernel/drivers/hid
razerkraken=kernel/drivers/hid
razeraccessory=kernel/drivers/hid
)
src_compile() {
local modlist=( "${MY_MODLIST[@]}" )
local modargs=( "-C" "${KV_DIR}" "M=${S}" )
linux-mod-r1_src_compile
}
src_install() {
linux-mod-r1_src_install
if use dkms; then
pushd ..
export DESTDIR=${ED}
emake setup_dkms
popd
fi
}
pkg_postinst() {
linux-mod-r1_pkg_postinst
if use modules; then
if [[ $(uname -r) != "${KV_FULL}" ]]; then
ewarn "You have just built ${PN} for kernel ${KV_FULL}, yet the currently"
ewarn "running kernel is $(uname -r). If you intend to use these openrazer modules"
ewarn "on the currently running machine, you will first need to reboot it into the"
ewarn "kernel ${KV_FULL}, for which these modules was built."
else
local i old
local -a loaded_modules
local -a my_modules=( "${MY_MODLIST[@]%=*}" )
for (( i = 0; i < ${#my_modules[@]}; ++i )); do
if [[ -f /sys/module/${my_modules[i]}/version ]]; then
old="$(< /sys/module/${my_modules[i]}/version)"
loaded_modules+=( "${my_modules[i]}" )
fi
done
if [[ ${old} != '' && ${old} != ${PV} ]]; then
ewarn
ewarn "You appear to have just upgraded ${PN} from version v$old to v$PV."
ewarn "However, the old version is still running on your system. In order to use the"
ewarn "new version, you will need to remove the old loaded modules (${loaded_modules[@]})"
ewarn "and load the new ones."
ewarn "You can accomplish this with the following commands as root user:"
ewarn
ewarn " # modprobe -r ${loaded_modules[@]}"
ewarn " and then pull out and replug corresponding devices. Or, just restart your computer."
ewarn
ewarn "If you want to reload modules without replug devices, refer to /lib/udev/razer_mount"
ewarn
fi
fi
elog
elog "Everytime when you upgrade/downgrade the kernel, these modules should be rebuilt via:"
elog " # emerge @module-rebuild"
elog "to satisfy the current used kernel."
if use dkms; then
elog " OR"
elog "Use DKMS tools like sys-kernel/dkms::guru to manage these modules dynamically."
fi
elog
elif use dkms; then
local inststate="(NOT INSTALLED)"
has_version sys-kernel/dkms && inststate="(INSTALLED)"
ewarn
ewarn "You should build these modules by yourself via DKMS tools like sys-kernel/dkms ${inststate}."
ewarn " e.g.: # dkms add ${PN}/${PV}"
ewarn " # dkms install ${PN}/${PV}"
ewarn
fi
}