Subject: [PATCH] gnu: Add rtneural.

From: Antero Mejr <[email-masked]>
Date: Sat, 07 Sep 2024 05:00:04 +0000

* gnu/packages/machine-learning.scm (rtneural): New variable.

Change-Id: I0e3a74dddaed7fc239b0408b74c4595ab139e474
---
The tests are too heavy for my machine to run. It builds with them
turned off, but I turned them back on to see if the QA machine can
handle it.

 gnu/packages/machine-learning.scm | 56 +++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 5d34283947..f1c31ffddf 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -6117,3 +6117,59 @@ (define-public python-gymnasium
      "This package provides a standard API for reinforcement learning and a
 diverse set of reference environments (formerly Gym).")
     (license license:expat)))
+
+(define-public rtneural
+  (let ((commit "f9c2c646c6bf5a9a74cf0fd0e062e1351dde6208") ;no releases
+        (revision "0"))
+    (package
+      (name "rtneural")
+      (version (git-version "0.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jatinchowdhury18/RTNeural")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0i2f5s6kjn9ivm17wbil0imgqfzxqpdw5avqdnha30czv5wa62ls"))
+         (modules '((guix build utils)))
+         (snippet #~(begin
+                      ;; unbundle
+                      (delete-file-recursively "modules")
+                      (substitute* "RTNeural/model_loader.h"
+                        (("#include \"../modules/json/json.hpp\"")
+                         "#include <nlohmann/json.hpp>"))
+                      (substitute* (find-files "RTNeural" "\\.h$")
+                        (("#include <Eigen/")
+                         "#include <eigen3/Eigen/"))
+                      (substitute* "CMakeLists.txt"
+                        (("include\\(cmake/CPM\\.cmake\\)") ""))
+                      (substitute* "RTNeural/CMakeLists.txt"
+                        (("STATIC") "SHARED"))
+                      (substitute* "cmake/Testing.cmake"
+                        (("CPMAddPackage.*$") ""))))))
+      (build-system cmake-build-system)
+      (arguments
+       (list #:configure-flags #~(list "-DBUILD_TESTS=ON")
+             #:phases
+             #~(modify-phases %standard-phases
+                 (replace 'install
+                   (lambda _
+                     (let ((inc (string-append #$output "/include/RTNeural"))
+                           (lib (string-append #$output "/lib")))
+                       (for-each (lambda (file)
+                                   (install-file file lib))
+                                 (find-files "." "\\.so"))
+                       (with-directory-excursion "../source/RTNeural"
+                         (for-each (lambda (file)
+                                     (install-file file inc))
+                                   (find-files "." "\\.h")))))))))
+      (inputs (list eigen nlohmann-json))
+      (home-page "https://github.com/jatinchowdhury18/RTNeural")
+      (synopsis "Real-time neural network interface library")
+      (description
+       "This package provides a neural network inferencing engine written in
+       C++.  The library was designed with the intention of being used in real-time
+       systems, specifically real-time audio processing.")
+      (license license:bsd-3))))

base-commit: 18d02443e1ec37779ee3cf63f9aaff1746bfdd8e
-- 
2.45.2