sys-power/bbswitch-0.8-r3: kernel 5.6 support; $CC fixes.
authorPiotr Karbowski <slashbeast@gentoo.org>
Mon, 6 Apr 2020 18:40:41 +0000 (20:40 +0200)
committerPiotr Karbowski <slashbeast@gentoo.org>
Mon, 6 Apr 2020 18:42:10 +0000 (20:42 +0200)
Closes: https://bugs.gentoo.org/715500
Closes: https://bugs.gentoo.org/702730
Signed-off-by: Piotr Karbowski <slashbeast@gentoo.org>
sys-power/bbswitch/bbswitch-0.8-r3.ebuild [new file with mode: 0644]
sys-power/bbswitch/bbswitch-9999.ebuild
sys-power/bbswitch/files/bbswitch-0.8-kernel-5.6.patch [new file with mode: 0644]

diff --git a/sys-power/bbswitch/bbswitch-0.8-r3.ebuild b/sys-power/bbswitch/bbswitch-0.8-r3.ebuild
new file mode 100644 (file)
index 0000000..90af8d5
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit linux-mod toolchain-funcs
+
+if [[ ${PV} == 9999 ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/Bumblebee-Project/${PN}.git"
+       EGIT_BRANCH="develop"
+else
+       PATCHES=(
+               "${FILESDIR}/${PN}-0.8-kernel-4.12.patch"
+               "${FILESDIR}/${PN}-0.8-kernel-5.6.patch"
+       )
+       SRC_URI="https://github.com/Bumblebee-Project/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+       KEYWORDS="amd64 x86"
+fi
+
+DESCRIPTION="Toggle discrete NVIDIA Optimus graphics card"
+HOMEPAGE="https://github.com/Bumblebee-Project/bbswitch"
+
+SLOT="0"
+LICENSE="GPL-3+"
+IUSE=""
+
+DEPEND="
+       virtual/linux-sources
+       sys-kernel/linux-headers
+"
+RDEPEND=""
+
+MODULE_NAMES="bbswitch(acpi)"
+
+pkg_setup() {
+       linux-mod_pkg_setup
+
+       BUILD_TARGETS="default"
+       BUILD_PARAMS="KVERSION=${KV_FULL} CC=$(tc-getCC)"
+}
+
+src_prepare() {
+       # Fix build failure, bug #513542
+       sed "s%^KDIR :=.*%KDIR := ${KERNEL_DIR}%g" -i Makefile || die
+
+       default
+}
+
+src_install() {
+       einstalldocs
+
+       insinto /etc/modprobe.d
+       newins "${FILESDIR}"/bbswitch.modprobe bbswitch.conf
+
+       linux-mod_src_install
+}
index ad44354463cd540af50cdd33a144f296041576cf..7efe9cf7ccdc7d7a7fa41519134ae13d0279a621 100644 (file)
@@ -1,16 +1,19 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
 
-inherit linux-mod
+inherit linux-mod toolchain-funcs
 
 if [[ ${PV} == 9999 ]]; then
        inherit git-r3
        EGIT_REPO_URI="https://github.com/Bumblebee-Project/${PN}.git"
        EGIT_BRANCH="develop"
 else
-       PATCHES=( "${FILESDIR}/${PN}-0.8-kernel-4.12.patch" )
+       PATCHES=(
+               "${FILESDIR}/${PN}-0.8-kernel-4.12.patch"
+               "${FILESDIR}/${PN}-0.8-kernel-5.6.patch"
+       )
        SRC_URI="https://github.com/Bumblebee-Project/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
        KEYWORDS="~amd64 ~x86"
 fi
@@ -34,7 +37,7 @@ pkg_setup() {
        linux-mod_pkg_setup
 
        BUILD_TARGETS="default"
-       BUILD_PARAMS="KVERSION=${KV_FULL}"
+       BUILD_PARAMS="KVERSION=${KV_FULL} CC=$(tc-getCC)"
 }
 
 src_prepare() {
diff --git a/sys-power/bbswitch/files/bbswitch-0.8-kernel-5.6.patch b/sys-power/bbswitch/files/bbswitch-0.8-kernel-5.6.patch
new file mode 100644 (file)
index 0000000..aa95a21
--- /dev/null
@@ -0,0 +1,52 @@
+From c2f808efeb0820edf23dbb66362ad3091321253f Mon Sep 17 00:00:00 2001
+From: Mateusz Mandera <mateusz.mandera@protonmail.com>
+Date: Tue, 31 Mar 2020 15:11:30 +0200
+Subject: [PATCH] Use proc_ops structure for kernel version >= 5.6.0
+
+Since 5.6.0, proc_create requires a proc_ops* argument
+instead of file_operations*.
+---
+ bbswitch.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/bbswitch.c b/bbswitch.c
+index d64cdae..9ca0e42 100644
+--- a/bbswitch.c
++++ b/bbswitch.c
+@@ -42,6 +42,9 @@
+ #include <linux/suspend.h>
+ #include <linux/seq_file.h>
+ #include <linux/pm_runtime.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
++#include <linux/proc_fs.h>
++#endif
+ #define BBSWITCH_VERSION "0.8"
+@@ -382,6 +385,15 @@ static int bbswitch_pm_handler(struct notifier_block *nbp,
+     return 0;
+ }
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
++static struct proc_ops bbswitch_fops = {
++    .proc_open   = bbswitch_proc_open,
++    .proc_read   = seq_read,
++    .proc_write  = bbswitch_proc_write,
++    .proc_lseek = seq_lseek,
++    .proc_release= single_release
++};
++#else
+ static struct file_operations bbswitch_fops = {
+     .open   = bbswitch_proc_open,
+     .read   = seq_read,
+@@ -389,6 +401,7 @@ static struct file_operations bbswitch_fops = {
+     .llseek = seq_lseek,
+     .release= single_release
+ };
++#endif
+ static struct notifier_block nb = {
+     .notifier_call = &bbswitch_pm_handler
+-- 
+2.26.0
+