git: ce57a1a89fb6 - 2024Q4 - devel/sol2: fix dependant ports build failure with clang 18

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Tue, 15 Oct 2024 03:37:55 UTC
The branch 2024Q4 has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ce57a1a89fb6b3fb64d93cbb5383a4a6008b3bb1

commit ce57a1a89fb6b3fb64d93cbb5383a4a6008b3bb1
Author:     Pavel Timofeev <timp87@gmail.com>
AuthorDate: 2024-10-14 15:02:33 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2024-10-15 03:37:52 +0000

    devel/sol2: fix dependant ports build failure with clang 18
    
    PR:             282018
    (cherry picked from commit 36244079e47839605d7ad2a55edc67ec25784fd3)
---
 devel/sol2/Makefile                                | 10 ++++++++-
 ...atch-include_sol_function__types__stateless.hpp | 24 ++++++++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/devel/sol2/Makefile b/devel/sol2/Makefile
index 5534a858df0f..5add3e1ba977 100644
--- a/devel/sol2/Makefile
+++ b/devel/sol2/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	sol2
 DISTVERSIONPREFIX=	v
 DISTVERSION=	4.0.0-alpha
+PORTREVISION=	1
 CATEGORIES=	devel
 
 MAINTAINER=	yuri@FreeBSD.org
@@ -19,4 +20,11 @@ CMAKE_TESTING_ON=	SOL2_TESTS
 
 NO_ARCH=	yes
 
-.include <bsd.port.mk>
+.include <bsd.port.pre.mk>
+
+.if ${CHOSEN_COMPILER_TYPE} == clang && \
+	${COMPILER_VERSION} >= 180 && ${COMPILER_VERSION} < 190
+EXTRA_PATCHES=	${PATCHDIR}/extra-patch-include_sol_function__types__stateless.hpp
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/devel/sol2/files/extra-patch-include_sol_function__types__stateless.hpp b/devel/sol2/files/extra-patch-include_sol_function__types__stateless.hpp
new file mode 100644
index 000000000000..631f76037184
--- /dev/null
+++ b/devel/sol2/files/extra-patch-include_sol_function__types__stateless.hpp
@@ -0,0 +1,24 @@
+--- include/sol/function_types_stateless.hpp.orig	2021-03-06 06:03:23 UTC
++++ include/sol/function_types_stateless.hpp
+@@ -320,7 +320,9 @@ namespace sol { namespace function_detail {
+ 		}
+ 
+ 		template <bool is_yielding, bool no_trampoline>
+-		static int call(lua_State* L) noexcept(std::is_nothrow_copy_assignable_v<T>) {
++                static int call(lua_State* L)
++                // regression in clang 18 - llvm/llvm-project#91362
++                {
+ 			int nr;
+ 			if constexpr (no_trampoline) {
+ 				nr = real_call(L);
+@@ -360,7 +362,9 @@ namespace sol { namespace function_detail {
+ 		}
+ 
+ 		template <bool is_yielding, bool no_trampoline>
+-		static int call(lua_State* L) noexcept(std::is_nothrow_copy_assignable_v<T>) {
++		static int call(lua_State* L)
++		// regression in clang 18 - llvm/llvm-project#91362
++		{
+ 			int nr;
+ 			if constexpr (no_trampoline) {
+ 				nr = real_call(L);