app-laptop/tp_smapi: new revision to fix the build with >= linux-4.15.
authorMichael Orlitzky <mjo@gentoo.org>
Tue, 30 Jan 2018 03:56:53 +0000 (22:56 -0500)
committerMichael Orlitzky <mjo@gentoo.org>
Tue, 30 Jan 2018 03:59:31 +0000 (22:59 -0500)
Closes: https://bugs.gentoo.org/646096
Package-Manager: Portage-2.3.19, Repoman-2.3.6

app-laptop/tp_smapi/files/linux-4.15-timer_setup-fix.patch [new file with mode: 0644]
app-laptop/tp_smapi/tp_smapi-0.42-r2.ebuild [new file with mode: 0644]

diff --git a/app-laptop/tp_smapi/files/linux-4.15-timer_setup-fix.patch b/app-laptop/tp_smapi/files/linux-4.15-timer_setup-fix.patch
new file mode 100644 (file)
index 0000000..88c5580
--- /dev/null
@@ -0,0 +1,43 @@
+From 76c5120f7be4880cf2c6801f872327e4e70c449f Mon Sep 17 00:00:00 2001
+From: Jan Nordholz <jnordholz@sec.t-labs.tu-berlin.de>
+Date: Mon, 4 Dec 2017 03:27:11 +0100
+Subject: [PATCH] Adapt HDAPS driver to use the new timer_setup() interface.
+
+Linux 4.15 removed the ancient init_timer() API and changed the signature
+of the timer handler function.
+
+Signed-off-by: Jan Nordholz <jnordholz@sec.t-labs.tu-berlin.de>
+Closes: #31
+---
+ hdaps.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/hdaps.c b/hdaps.c
+index 0763c3a..76930a3 100644
+--- a/hdaps.c
++++ b/hdaps.c
+@@ -469,7 +469,11 @@ static void hdaps_calibrate(void)
+ /* Timer handler for updating the input device. Runs in softirq context,
+  * so avoid lenghty or blocking operations.
+  */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
+ static void hdaps_mousedev_poll(unsigned long unused)
++#else
++static void hdaps_mousedev_poll(struct timer_list *unused)
++#endif
+ {
+       int ret;
+@@ -779,8 +783,12 @@ static int __init hdaps_init(void)
+                       hdaps_invert = 0; /* default */
+       /* Init timer before platform_driver_register, in case of suspend */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
+       init_timer(&hdaps_timer);
+       hdaps_timer.function = hdaps_mousedev_poll;
++#else
++      timer_setup(&hdaps_timer, hdaps_mousedev_poll, 0);
++#endif
+       ret = platform_driver_register(&hdaps_driver);
+       if (ret)
+               goto out;
diff --git a/app-laptop/tp_smapi/tp_smapi-0.42-r2.ebuild b/app-laptop/tp_smapi/tp_smapi-0.42-r2.ebuild
new file mode 100644 (file)
index 0000000..e09bd1f
--- /dev/null
@@ -0,0 +1,76 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit flag-o-matic linux-mod
+
+DESCRIPTION="IBM ThinkPad SMAPI BIOS driver"
+HOMEPAGE="https://github.com/evgeni/${PN}"
+SRC_URI="${HOMEPAGE}/releases/download/tp-smapi/${PV}/${P}.tgz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE="hdaps"
+
+# We need dmideode if the kernel does not support
+# DMI_DEV_TYPE_OEM_STRING in dmi.h.
+DEPEND="sys-apps/dmidecode"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/linux-4.15-timer_setup-fix.patch" )
+
+# This code is factored out of both pkg_pretend() and pkg_setup()
+# because the PMS states that ebuilds may not call phase functions
+# directly (see the "List of functions" section). This was bug #596616
+# and #596622.
+tp_smapi_pkg_pretend() {
+       linux-mod_pkg_setup
+
+       MODULE_NAMES="thinkpad_ec(extra:) tp_smapi(extra:)"
+       BUILD_PARAMS="KSRC=${KV_DIR} KBUILD=${KV_OUT_DIR}"
+       BUILD_TARGETS="default"
+
+       if use hdaps; then
+               CONFIG_CHECK="~INPUT_UINPUT"
+               WARNING_INPUT_UINPUT="Your kernel needs uinput for the hdaps module to perform better"
+               # Why call this twice?
+               linux-info_pkg_setup
+
+               MODULE_NAMES="${MODULE_NAMES} hdaps(extra:)"
+               BUILD_PARAMS="${BUILD_PARAMS} HDAPS=1"
+
+               CONFIG_CHECK="~!SENSORS_HDAPS"
+               ERROR_SENSORS_HDAPS="${P} with USE=hdaps conflicts with in-kernel HDAPS (CONFIG_SENSORS_HDAPS)"
+               linux-info_pkg_setup
+       fi
+}
+
+pkg_pretend() {
+       tp_smapi_pkg_pretend
+}
+
+pkg_setup() {
+       # run again as pkg_pretend is not var safe
+       tp_smapi_pkg_pretend
+}
+
+src_compile() {
+       # Kernel Makefiles may pull in -mpreferred-stack-boundary=3
+       # which requires that SSE disabled or compilation will fail.
+       # So we need to ensure that appended user CLAGS do not re-enable SSE
+       # https://bugs.gentoo.org/show_bug.cgi?id=492964
+       replace-flags '-msse*' ''
+       replace-flags '-mssse3' ''
+
+       linux-mod_src_compile
+}
+
+src_install() {
+       linux-mod_src_install
+       einstalldocs
+       newinitd "${FILESDIR}/${PN}-0.40-initd" smapi
+       newconfd "${FILESDIR}/${PN}-0.40-confd" smapi
+}