git: 681ab3448b51 - main - science/py-hoomd-blue: Fix build with LLVM 19

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Sun, 03 Nov 2024 17:56:26 UTC
The branch main has been updated by jhale:

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

commit 681ab3448b51a925c30d86c9ec698f82f22c4137
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2024-11-03 17:39:32 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2024-11-03 17:55:10 +0000

    science/py-hoomd-blue: Fix build with LLVM 19
    
    Approved by:    portmgr (blanket)
    MFH:            2024Q4
---
 science/py-hoomd-blue/Makefile                     |  2 --
 science/py-hoomd-blue/files/patch-hoomd_GPUFlags.h | 18 +++++++++++++
 ..._extern_nano-signal-slot_nano__signal__slot.hpp | 30 ++++++++++++++++++++++
 3 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/science/py-hoomd-blue/Makefile b/science/py-hoomd-blue/Makefile
index e7929a59883d..13a2b9fe990f 100644
--- a/science/py-hoomd-blue/Makefile
+++ b/science/py-hoomd-blue/Makefile
@@ -12,8 +12,6 @@ WWW=		https://glotzerlab.engin.umich.edu/hoomd-blue/ \
 LICENSE=	BSD3CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-BROKEN_FreeBSD_15=	compilation fails with clang-19, see https://github.com/glotzerlab/hoomd-blue/issues/1924
-
 BUILD_DEPENDS=	pybind11>0:devel/pybind11
 
 USES=		cmake:testing compiler:c++17-lang eigen:3 localbase:ldflags python shebangfix # see https://github.com/glotzerlab/hoomd-blue/issues/1204
diff --git a/science/py-hoomd-blue/files/patch-hoomd_GPUFlags.h b/science/py-hoomd-blue/files/patch-hoomd_GPUFlags.h
new file mode 100644
index 000000000000..9b655f55b4af
--- /dev/null
+++ b/science/py-hoomd-blue/files/patch-hoomd_GPUFlags.h
@@ -0,0 +1,18 @@
+Fix build with LLVM 19
+
+/wrkdirs/usr/ports/science/py-hoomd-blue/work/hoomd-blue-4.9.0/hoomd/GPUFlags.h:160:27:
+error: reference to non-static member function must be called
+  160 |     this->resetFlags(from.readFlags);
+      |                      ~~~~~^~~~~~~~~
+
+--- hoomd/GPUFlags.h.orig	2024-10-31 16:09:15 UTC
++++ hoomd/GPUFlags.h
+@@ -157,7 +157,7 @@ GPUFlags<T>::GPUFlags(const GPUFlags& from)
+     memclear();
+ 
+     // copy over the data to the new GPUFlags
+-    this->resetFlags(from.readFlags);
++    this->resetFlags(from.readFlags());
+     }
+ 
+ template<class T> GPUFlags<T>& GPUFlags<T>::operator=(const GPUFlags& rhs)
diff --git a/science/py-hoomd-blue/files/patch-hoomd_extern_nano-signal-slot_nano__signal__slot.hpp b/science/py-hoomd-blue/files/patch-hoomd_extern_nano-signal-slot_nano__signal__slot.hpp
new file mode 100644
index 000000000000..cd3fce241f6d
--- /dev/null
+++ b/science/py-hoomd-blue/files/patch-hoomd_extern_nano-signal-slot_nano__signal__slot.hpp
@@ -0,0 +1,30 @@
+Fix build with LLVM 19
+
+/wrkdirs/usr/ports/science/py-hoomd-blue/work/hoomd-blue-4.9.0/hoomd/extern/nano-signal-slot/nano_signal_slot.hpp:46:45:
+error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
+   46 |         Observer::insert(Delegate::template bind (instance), this);
+      |                                             ^
+/wrkdirs/usr/ports/science/py-hoomd-blue/work/hoomd-blue-4.9.0/hoomd/extern/nano-signal-slot/nano_signal_slot.hpp:87:45:
+error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
+   87 |         Observer::remove(Delegate::template bind (instance), this);
+
+--- hoomd/extern/nano-signal-slot/nano_signal_slot.hpp.orig	2016-07-13 20:06:52 UTC
++++ hoomd/extern/nano-signal-slot/nano_signal_slot.hpp
+@@ -43,7 +43,7 @@ class Signal<RT(Args...)> : private Observer
+     template <typename L>
+     void connect(L* instance)
+     {
+-        Observer::insert(Delegate::template bind (instance), this);
++        Observer::insert(Delegate::bind (instance), this);
+     }
+     template <typename L>
+     void connect(L& instance)
+@@ -84,7 +84,7 @@ class Signal<RT(Args...)> : private Observer
+     template <typename L>
+     void disconnect(L* instance)
+     {
+-        Observer::remove(Delegate::template bind (instance), this);
++        Observer::remove(Delegate::bind (instance), this);
+     }
+     template <typename L>
+     void disconnect(L& instance)