summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys-fs/zfs-kmod/files/2.1.5-build-issues.patch74
-rw-r--r--sys-fs/zfs-kmod/zfs-kmod-2.1.5.ebuild5
2 files changed, 79 insertions, 0 deletions
diff --git a/sys-fs/zfs-kmod/files/2.1.5-build-issues.patch b/sys-fs/zfs-kmod/files/2.1.5-build-issues.patch
new file mode 100644
index 000000000000..cca6561b16f7
--- /dev/null
+++ b/sys-fs/zfs-kmod/files/2.1.5-build-issues.patch
@@ -0,0 +1,74 @@
+https://github.com/openzfs/zfs/commit/a6e8113fed8a508ffda13cf1c4d8da99a4e8133a
+https://github.com/openzfs/zfs/commit/60e389ca10085acfa7cd35f79ab4465d968a942f
+Cherry-picked from https://github.com/openzfs/zfs/pull/13575
+
+https://bugs.gentoo.org/855182
+--- a/config/always-compiler-options.m4
++++ b/config/always-compiler-options.m4
+@@ -205,6 +205,29 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_OMIT_FRAME_POINTER], [
+ AC_SUBST([NO_OMIT_FRAME_POINTER])
+ ])
+
++dnl #
++dnl # Check if cc supports -Winfinite-recursion option.
++dnl #
++AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_INFINITE_RECURSION], [
++ AC_MSG_CHECKING([whether $CC supports -Winfinite-recursion])
++
++ saved_flags="$CFLAGS"
++ CFLAGS="$CFLAGS -Werror -Winfinite-recursion"
++
++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [
++ INFINITE_RECURSION=-Winfinite-recursion
++ AC_DEFINE([HAVE_INFINITE_RECURSION], 1,
++ [Define if compiler supports -Winfinite-recursion])
++ AC_MSG_RESULT([yes])
++ ], [
++ INFINITE_RECURSION=
++ AC_MSG_RESULT([no])
++ ])
++
++ CFLAGS="$saved_flags"
++ AC_SUBST([INFINITE_RECURSION])
++])
++
+ dnl #
+ dnl # Check if cc supports -fno-ipa-sra option.
+ dnl #
+--- a/config/zfs-build.m4
++++ b/config/zfs-build.m4
+@@ -211,6 +211,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [
+
+ ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE
+ ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE
++ ZFS_AC_CONFIG_ALWAYS_CC_INFINITE_RECURSION
+ ZFS_AC_CONFIG_ALWAYS_CC_IMPLICIT_FALLTHROUGH
+ ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN
+ ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION
+--- a/module/lua/ldo.c
++++ b/module/lua/ldo.c
+@@ -168,6 +168,13 @@ static void seterrorobj (lua_State *L, int errcode, StkId oldtop) {
+ L->top = oldtop + 1;
+ }
+
++/*
++ * Silence infinite recursion warning which was added to -Wall in gcc 12.1
++ */
++#if defined(HAVE_INFINITE_RECURSION)
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Winfinite-recursion"
++#endif
+
+ l_noret luaD_throw (lua_State *L, int errcode) {
+ if (L->errorJmp) { /* thread has an error handler? */
+@@ -190,6 +197,10 @@ l_noret luaD_throw (lua_State *L, int errcode) {
+ }
+ }
+
++#if defined(HAVE_INFINITE_RECURSION)
++#pragma GCC diagnostic pop
++#endif
++
+
+ int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud) {
+ unsigned short oldnCcalls = L->nCcalls;
diff --git a/sys-fs/zfs-kmod/zfs-kmod-2.1.5.ebuild b/sys-fs/zfs-kmod/zfs-kmod-2.1.5.ebuild
index 65567e49fef7..ac917091d0b4 100644
--- a/sys-fs/zfs-kmod/zfs-kmod-2.1.5.ebuild
+++ b/sys-fs/zfs-kmod/zfs-kmod-2.1.5.ebuild
@@ -62,6 +62,11 @@ RESTRICT="debug? ( strip ) test"
DOCS=( AUTHORS COPYRIGHT META README.md )
+PATCHES=(
+ # bug #855182
+ "${FILESDIR}"/${PV}-build-issues.patch
+)
+
pkg_pretend() {
use rootfs || return 0