From b8a4109655d335052fff129b206061ecb5ad845a Mon Sep 17 00:00:00 2001
From: Piotr Karbowski <slashbeast@gentoo.org>
Date: Mon, 6 Apr 2020 20:40:41 +0200
Subject: sys-power/bbswitch-0.8-r3: kernel 5.6 support; $CC fixes.

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          | 57 ++++++++++++++++++++++
 sys-power/bbswitch/bbswitch-9999.ebuild            | 11 +++--
 .../bbswitch/files/bbswitch-0.8-kernel-5.6.patch   | 52 ++++++++++++++++++++
 3 files changed, 116 insertions(+), 4 deletions(-)
 create mode 100644 sys-power/bbswitch/bbswitch-0.8-r3.ebuild
 create mode 100644 sys-power/bbswitch/files/bbswitch-0.8-kernel-5.6.patch

(limited to 'sys-power/bbswitch')

diff --git a/sys-power/bbswitch/bbswitch-0.8-r3.ebuild b/sys-power/bbswitch/bbswitch-0.8-r3.ebuild
new file mode 100644
index 000000000000..90af8d532409
--- /dev/null
+++ b/sys-power/bbswitch/bbswitch-0.8-r3.ebuild
@@ -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
+}
diff --git a/sys-power/bbswitch/bbswitch-9999.ebuild b/sys-power/bbswitch/bbswitch-9999.ebuild
index ad44354463cd..7efe9cf7ccdc 100644
--- a/sys-power/bbswitch/bbswitch-9999.ebuild
+++ b/sys-power/bbswitch/bbswitch-9999.ebuild
@@ -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
index 000000000000..aa95a21cdb04
--- /dev/null
+++ b/sys-power/bbswitch/files/bbswitch-0.8-kernel-5.6.patch
@@ -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
+
-- 
cgit v1.2.3-65-gdbad