Subject: [bug#64820] [PATCH] gnu: rvvm: Add rvvm.

From: Juliana Sims <[email-masked]>
Date: Mon, 24 Jul 2023 02:47:06 -0400

Hello,

This patch adds the RISC-V Virtual Machine which seems like a handy little tool
and claims to be faster than qemu. Neat!

Thanks,
Juliana

* gnu/packages/virtualization.scm (rvvm): New symbol.
---
 gnu/packages/virtualization.scm | 53 ++++++++++++++++++++++++++-------
 1 file changed, 43 insertions(+), 10 deletions(-)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 3f6c32f390..705d1ac183 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1127,6 +1127,39 @@ (define-public ganeti-instance-debootstrap
 Debian or a derivative using @command{debootstrap}.")
     (license license:gpl2+)))
 
+(define-public rvvm
+  (package
+    (name "rvvm")
+    (version "0.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/LekKit/RVVM")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ldabcrmpa044bahpqa6ymwbhhwy69slh77f0m3421sq6j50l06p"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:phases #~(modify-phases %standard-phases
+                        (replace 'install
+                          (lambda _
+                            (let ((bindir (string-append #$output "/bin/")))
+                              (mkdir-p bindir)
+                              (copy-file "rvvm"
+                                         (string-append bindir "rvvm"))))))
+           #:tests? #f)) ;no tests
+    (home-page "https://github.com/LekKit/RVVM")
+    (synopsis "RISC-V virtual machine")
+    (description
+     "RVVM is a RISC-V CPU and system software implementation written in C.  It
+supports the entire RV64GC ISA, and it passes compliance tests for both RV64 and
+RV32.  OpenSBI, U-Boot, and custom firmwares boot and execute properly.  It is
+capable of running Linux, FreeBSD, OpenBSD, Haiku, and other OSes.  Furthermore,
+it emulates a variety of hardware and peripherals.")
+    (license (list license:gpl3+ license:mpl2.0))))
+
 (define-public spike
   (package
     (name "spike")
@@ -1134,22 +1167,22 @@ (define-public spike
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/riscv-software-src/riscv-isa-sim")
-                     (commit (string-append "v" version))))
+                    (url "https://github.com/riscv-software-src/riscv-isa-sim")
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32 "0cik2m0byfp9ppq0hpg3xyrlp5ag1i4dww7a7872mlm36xxqagg0"))))
     (build-system gnu-build-system)
     (arguments
      (list
-       #:phases
-       #~(modify-phases %standard-phases
-           (add-before 'configure 'configure-dtc-path
-             (lambda* (#:key inputs #:allow-other-keys)
-               ;; Reference dtc by its absolute store path.
-               (substitute* "riscv/dts.cc"
-                 (("DTC")
-                  (string-append "\"" (search-input-file inputs "/bin/dtc") "\""))))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'configure-dtc-path
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Reference dtc by its absolute store path.
+              (substitute* "riscv/dts.cc"
+                (("DTC")
+                 (string-append "\"" (search-input-file inputs "/bin/dtc") "\""))))))))
     (inputs
      (list bash-minimal dtc))
     (native-inputs

base-commit: a0c387cb7942742851397687c584b1cacefe5122
-- 
2.41.0