commit:     cb4377173212fc0e7f5ac75a68bb6536bb7beb2c
Author:     Janne Grunau <j <AT> jannau <DOT> net>
AuthorDate: Sun May 19 13:40:50 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun May 19 16:46:38 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cb437717

sys-kernel/asahi-sources: add 6.8.9_p6

This switches asahi-sources to patch based build based on genpatches for
stable releases and asahi patches as requested from github on top.
This requires a little bit of cleanup. The asahi "patchset" contains a
SPI change merged in 6.8.2. So revert this first so the asahi patches
apply cleanly.
The desired RUST support in asahi "patchset" creates circular
dependencies with GCC_PLUGIN_RANDSTRUCT slected by
GENTOO_KERNEL_SELF_PROTECTION_COMMON. Remove randstruct from the latter
to break the circular dependencies.

Signed-off-by: Janne Grunau <j <AT> jannau.net>
Closes: https://github.com/gentoo/gentoo/pull/36743
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-kernel/asahi-sources/Manifest                  |  4 ++
 .../asahi-sources/asahi-sources-6.8.9_p6.ebuild    | 78 ++++++++++++++++++++++
 ...oo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch | 40 +++++++++++
 .../asahi-6.8.2_revert_spi_stable_asahi.patch      | 46 +++++++++++++
 4 files changed, 168 insertions(+)

diff --git a/sys-kernel/asahi-sources/Manifest 
b/sys-kernel/asahi-sources/Manifest
index 0c86b984215f..742e602c34cf 100644
--- a/sys-kernel/asahi-sources/Manifest
+++ b/sys-kernel/asahi-sources/Manifest
@@ -1,3 +1,7 @@
+DIST genpatches-6.8-12.base.tar.xz 687664 BLAKE2B 
3c27ee511c258f3659d7f8cd5b6d470ffa10a2fc95bd536b272e0bb20c368dfc8c512f23fdc025e85ad90d6f628a58c80d8d15ec0ef8898caf7461162cf2dec2
 SHA512 
cd845b49341366190834b9782c9ffa270608a35e616ff483b40094913f6d01809421b80a7830117b606e57e6bb0ed9b0ed6dc14220826364fc9d2ee6a5916ad6
+DIST genpatches-6.8-12.extras.tar.xz 3736 BLAKE2B 
15a15ca3097dc42ac5855e59fe61c961854c1afa8adc719c761ac58bb7c869d3240c228b0963a91927a9bc0af6998b4c40e4d286faf7d2defc2f21029d11c114
 SHA512 
4f1c8c07e81c0d1ed110bd4512d2a16c3e202c47d8ab6bedf5213cf6c2f8675e9b543e52dbce50fbbf550d88252e2c1c19c2465ddd7907f11a2979fa92466a7c
+DIST linux-6.8.tar.xz 142502100 BLAKE2B 
c6f17f816cea16e629f63e9379b98888713f57b2c5173306926471f139a9d612a0c74e119341f8075390e55e203d787d9edeb4ad5a064b18870f6f0f7ffaafb2
 SHA512 
5c4eb4aa1d3f7d1ea01c0f7ddeadacdece6e144fd4bdfc16b2b925d3e10dc04de3a6db69320b79a96c3560052616f001d2c09e7a1bb4f7b731e2380a7ecce068
 DIST linux-asahi-6.8.8-2.tar.gz 235265018 BLAKE2B 
cf543955971865d65c048b7021a8bf4d9711294afd49e4ce31bf3e4761dea8724950a52a7b6b852645760e0abb1ca2abe1ac6c3feafbcb933a53e56dcc4044e4
 SHA512 
101566de3777517d151effcdd2e38b6a5d5961754734cdabfae7c359bbf0f35e2c7a4ecb912d4c300adb3f09ecaa31eafaf076d849171e0e5244ec29a0bf30a4
 DIST linux-asahi-6.8.9-3.tar.gz 235275610 BLAKE2B 
8ee3ff2572a02851d66239c65187312a0f67aa492d9c3b3a734e291b250acbf9450960c745687ff98a339e4cc14a2eab7675c08d39f88de0c0aa7c320d20bdc8
 SHA512 
ebd854b357a1d0a7663129f48956da559bc23a4347836dd0c3a3eb8cd47013ed86d83711dc2b7a221c28f51bd0c42c0b1ea2302ef45ee4a2ddfbfacf33e6efc2
 DIST linux-asahi-6.8.9-5.tar.gz 235264452 BLAKE2B 
5a08d3df1d0e1fc274a68f29ab592c790421d58dafa5533b7f526f13c5046d668e0c864b9a71f2c5b736a1890a65ba0877694b11bbde9acf5ff873f7a8a5a167
 SHA512 
e592959bfd546588df26bcec6b6de86dc3450d6ae89b073b272dd41b9927a7c2b09b9f8ff77b3cc80393b65821062eddabe351f177bfc1f732f11d685594412f
+DIST linux-asahi-6.8.9-6.patch 5163031 BLAKE2B 
de6411c7f6bb95fec4162648c89d6bf6be5e863d4647877c4cbbb9e4c8540b12b1dacd42c26a1d3561a36fe6c79650caf5e0481338764a10101cec53921043c7
 SHA512 
0cc24bf50c16cb6fc59bf9bd025babcdca081bc789da5791d0fd914c65d31342cc632998fe4a667296ee3ed067b311dc105e994e2a77d569bac3a8ed48fb5ecc

diff --git a/sys-kernel/asahi-sources/asahi-sources-6.8.9_p6.ebuild 
b/sys-kernel/asahi-sources/asahi-sources-6.8.9_p6.ebuild
new file mode 100644
index 000000000000..a0aa5d1ee2e2
--- /dev/null
+++ b/sys-kernel/asahi-sources/asahi-sources-6.8.9_p6.ebuild
@@ -0,0 +1,78 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+ETYPE="sources"
+
+CKV="$(ver_cut 1-3)"
+K_SECURITY_UNSUPPORTED="1"
+K_WANT_GENPATCHES="base extras"
+K_GENPATCHES_VER="12"
+K_NODRYRUN="1"
+
+inherit kernel-2
+detect_version
+detect_arch
+
+if [[ ${PV} != ${PV/_rc} ]] ; then
+       # $PV is expected to be of following form: 6.0_rc5_p1
+       MY_TAG="$(ver_cut 6)"
+       MY_BASE="$(ver_rs 2 - $(ver_cut 1-4))"
+else
+       # $PV is expected to be of following form: 5.19.0_p1
+       MY_TAG="$(ver_cut 5)"
+       if [[ "$(ver_cut 3)" == "0" ]] ; then
+               MY_BASE="$(ver_cut 1-2)"
+       else
+               MY_BASE="$(ver_cut 1-3)"
+       fi
+fi
+
+EXTRAVERSION="-asahi-${MY_TAG}"
+
+ASAHI_TAG="asahi-${MY_BASE}-${MY_TAG}"
+
+DESCRIPTION="Asahi Linux kernel sources"
+HOMEPAGE="https://asahilinux.org";
+SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}
+       
https://github.com/AsahiLinux/linux/compare/v${MY_BASE}...${ASAHI_TAG}.patch
+               -> linux-${ASAHI_TAG}.patch
+"
+KV_FULL="${PVR/_p/-asahi-}"
+S="${WORKDIR}/linux-${KV_FULL}"
+
+KEYWORDS="~arm64"
+IUSE="rust"
+
+DEPEND="
+       ${DEPEND}
+       rust? (
+               || (
+                       >=dev-lang/rust-bin-1.76[rust-src,rustfmt]
+                       >=dev-lang/rust-1.76[rust-src,rustfmt]
+               )
+               dev-util/bindgen
+       )
+"
+
+UNIPATCH_STRICTORDER="yes"
+UNIPATCH_LIST="
+       
${FILESDIR}/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch
+       ${FILESDIR}/asahi-6.8.2_revert_spi_stable_asahi.patch
+       ${DISTDIR}/linux-asahi-6.8.9-6.patch
+       ${FILESDIR}/asahi-sources-6.6.0_p16-enable-speakers-stage1.patch
+       ${FILESDIR}/asahi-sources-6.6.0_p16-enable-speakers-stage2.patch
+"
+
+src_prepare() {
+       default
+
+       # remove asahi upstream set localversion, use EXTRAVERSION instead
+       rm localversion.05-asahi
+}
+
+pkg_postinst() {
+       einfo "For more information about Asahi Linux please visit ${HOMEPAGE},"
+       einfo "or consult the Wiki at https://github.com/AsahiLinux/docs/wiki.";
+       kernel-2_pkg_postinst
+}

diff --git 
a/sys-kernel/asahi-sources/files/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch
 
b/sys-kernel/asahi-sources/files/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch
new file mode 100644
index 000000000000..0e99029145e5
--- /dev/null
+++ 
b/sys-kernel/asahi-sources/files/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch
@@ -0,0 +1,40 @@
+From 7bc5223ed71bdee422c01c67b0456c4238b4a36e Mon Sep 17 00:00:00 2001
+From: Janne Grunau <[email protected]>
+Date: Sat, 18 May 2024 11:47:46 +0200
+Subject: [PATCH 1/1] config: gentoo: Drop RANDSTRUCT from
+ GENTOO_KERNEL_SELF_PROTECTION_COMMON
+
+It is incompatible with RUST and the current method of selected it
+results in Kconfig breakage due to circular dependencies. Drop it for
+asahi-kernel.
+
+Signed-off-by: Janne Grunau <[email protected]>
+---
+ distro/Kconfig | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/distro/Kconfig b/distro/Kconfig
+index 9166e4a9abe6..ad4b417e0da7 100644
+--- a/distro/Kconfig
++++ b/distro/Kconfig
+@@ -174,7 +174,7 @@ if GENTOO_KERNEL_SELF_PROTECTION
+ config GENTOO_KERNEL_SELF_PROTECTION_COMMON
+       bool "Enable Kernel Self Protection Project Recommendations"
+ 
+-      depends on GENTOO_LINUX && !ACPI_CUSTOM_METHOD && !COMPAT_BRK && 
!PROC_KCORE && !COMPAT_VDSO && !KEXEC && !HIBERNATION && !LEGACY_PTYS && 
!X86_X32_ABI && !MODIFY_LDT_SYSCALL && GCC_PLUGINS && !IOMMU_DEFAULT_DMA_LAZY 
&& !IOMMU_DEFAULT_PASSTHROUGH && IOMMU_DEFAULT_DMA_STRICT && SECURITY && 
!ARCH_EPHEMERAL_INODES  && RANDSTRUCT_PERFORMANCE
++      depends on GENTOO_LINUX && !ACPI_CUSTOM_METHOD && !COMPAT_BRK && 
!PROC_KCORE && !COMPAT_VDSO && !KEXEC && !HIBERNATION && !LEGACY_PTYS && 
!X86_X32_ABI && !MODIFY_LDT_SYSCALL && GCC_PLUGINS && !IOMMU_DEFAULT_DMA_LAZY 
&& !IOMMU_DEFAULT_PASSTHROUGH && IOMMU_DEFAULT_DMA_STRICT && SECURITY && 
!ARCH_EPHEMERAL_INODES
+ 
+       select BUG
+       select STRICT_KERNEL_RWX
+@@ -221,8 +221,6 @@ config GENTOO_KERNEL_SELF_PROTECTION_COMMON
+       select GCC_PLUGIN_LATENT_ENTROPY
+       select GCC_PLUGIN_STRUCTLEAK
+       select GCC_PLUGIN_STRUCTLEAK_BYREF_ALL
+-      select GCC_PLUGIN_RANDSTRUCT 
+-      select GCC_PLUGIN_RANDSTRUCT_PERFORMANCE
+       select ZERO_CALL_USED_REGS if CC_HAS_ZERO_CALL_USED_REGS
+ 
+       help
+-- 
+2.45.0
+

diff --git 
a/sys-kernel/asahi-sources/files/asahi-6.8.2_revert_spi_stable_asahi.patch 
b/sys-kernel/asahi-sources/files/asahi-6.8.2_revert_spi_stable_asahi.patch
new file mode 100644
index 000000000000..fc6522e205b8
--- /dev/null
+++ b/sys-kernel/asahi-sources/files/asahi-6.8.2_revert_spi_stable_asahi.patch
@@ -0,0 +1,46 @@
+diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
+index 46f153548760..d1b297f438f1 100644
+--- a/drivers/spi/spi.c
++++ b/drivers/spi/spi.c
+@@ -1042,14 +1042,10 @@ static void spi_set_cs(struct spi_device *spi, bool 
enable, bool force)
+       if (spi->mode & SPI_CS_HIGH)
+               enable = !enable;
+ 
+-      /*
+-       * Handle chip select delays for GPIO based CS or controllers without
+-       * programmable chip select timing.
+-       */
+-      if ((spi_is_csgpiod(spi) || !spi->controller->set_cs_timing) && 
!activate)
+-              spi_delay_exec(&spi->cs_hold, NULL);
+-
+       if (spi_is_csgpiod(spi)) {
++              if (!spi->controller->set_cs_timing && !activate)
++                      spi_delay_exec(&spi->cs_hold, NULL);
++
+               if (!(spi->mode & SPI_NO_CS)) {
+                       /*
+                        * Historically ACPI has no means of the GPIO polarity 
and
+@@ -1083,16 +1079,16 @@ static void spi_set_cs(struct spi_device *spi, bool 
enable, bool force)
+               if ((spi->controller->flags & SPI_CONTROLLER_GPIO_SS) &&
+                   spi->controller->set_cs)
+                       spi->controller->set_cs(spi, !enable);
++
++              if (!spi->controller->set_cs_timing) {
++                      if (activate)
++                              spi_delay_exec(&spi->cs_setup, NULL);
++                      else
++                              spi_delay_exec(&spi->cs_inactive, NULL);
++              }
+       } else if (spi->controller->set_cs) {
+               spi->controller->set_cs(spi, !enable);
+       }
+-
+-      if (spi_is_csgpiod(spi) || !spi->controller->set_cs_timing) {
+-              if (activate)
+-                      spi_delay_exec(&spi->cs_setup, NULL);
+-              else
+-                      spi_delay_exec(&spi->cs_inactive, NULL);
+-      }
+ }
+ 
+ #ifdef CONFIG_HAS_DMA

Reply via email to