From 6208c4931097d01121af37d0b64d31a19d149cc2 Mon Sep 17 00:00:00 2001 From: Cayetano Santos Date: Tue, 24 Feb 2026 19:14:02 +0100 Subject: [PATCH] gnu: Add ripes. * gnu/packages/computer-architecture.scm (ripes): New variable. * gnu/local.mk (dist_patch_DATA): Register it. * po/packages/POTFILES.in: Add new module. Change-Id: I1e0ab70527cd0dfe86ccee88c6f39a1e2efadaf8 --- gnu/local.mk | 1 + gnu/packages/computer-architecture.scm | 106 +++++++++++++++++++++++++ po/packages/POTFILES.in | 1 + 3 files changed, 108 insertions(+) create mode 100644 gnu/packages/computer-architecture.scm diff --git a/gnu/local.mk b/gnu/local.mk index 38d2b2ecad..aa51ca503e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -208,6 +208,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/commencement.scm \ %D%/packages/compression.scm \ %D%/packages/compton.scm \ + %D%/packages/computer-architecture.scm \ %D%/packages/configuration-management.scm \ %D%/packages/connman.scm \ %D%/packages/containers.scm \ diff --git a/gnu/packages/computer-architecture.scm b/gnu/packages/computer-architecture.scm new file mode 100644 index 0000000000..db289e1568 --- /dev/null +++ b/gnu/packages/computer-architecture.scm @@ -0,0 +1,106 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2026 Cayetano Santos +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages computer-architecture) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system qt) + #:use-module (guix gexp) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages electronics) + #:use-module (gnu packages python) + #:use-module (gnu packages qt)) + +(define-public ripes + ;; Includes Qt6 support. + (let ((commit "720066f8d1c9f8d62fad058f44471763a0312084") + (revision "0")) + (package + (name "ripes") + (version (git-version "2.2.6" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mortbopet/Ripes/") + (commit commit) + ;; TODO: Unbundle. Ripes recursively requires tones of non + ;; packaged dependencies in "external" directories. + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1kkdc3y18h985zvgmhbdbms3zynygrg5f64w1lm948hffj58x7gy")))) + (build-system qt-build-system) + (arguments + (list + #:qtbase qtbase ;for Qt6 + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-tests + (lambda _ + (substitute* "test/CMakeLists.txt" + ;; Fails with "Compared values are not the same" + (("create_qtest\\(tst_riscv\\)") "") + ;; Fails with "Internal test error" + (("create_qtest\\(tst_reverse\\)") "")))) + (add-after 'unpack 'patch-bugs + (lambda* (#:key inputs #:allow-other-keys) + ;; TODO: Remove when fixed upstream. + ;; See https://github.com/mortbopet/Ripes/issues/388 and 62 + (substitute* + (string-append "external/VSRTL/external/cereal/include" + "/cereal/external/rapidjson/document.h") + (("GenericStringRef& operator=.*") + (string-append + "GenericStringRef& operator=(const GenericStringRef& rhs)" + " { s = rhs.s; return *this; }"))) + ;; As suggested by error message itself. + (substitute* '("external/VSRTL/interface/vsrtl_vcdfile.cpp") + (("#include ") + "#include \n#include ")) + ;; As suggested by error message itself. + (substitute* '("external/VSRTL/interface/vsrtl_vcdfile.h") + (("#include ") + "#include \n#include ")))) + (add-before 'configure 'set-envs + (lambda* (#:key inputs #:allow-other-keys) + (setenv "VERILATOR_ROOT" + (dirname + (dirname + (search-input-file inputs "/bin/verilator")))))) + (replace 'check ;as for .github/workflows/test.yml + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (for-each + (lambda (f) (invoke f)) + (filter executable-file? (find-files "test" "tst_"))))))) + #:configure-flags + #~(list "-DRIPES_BUILD_VERILATOR_PROCESSORS=ON" + "-DRIPES_BUILD_TESTS=ON"))) + (native-inputs + (list python-minimal-wrapper verilator)) + (inputs + (list qtsvg qtcharts)) + (home-page "https://github.com/mortbopet/Ripes/") + (synopsis "Visual computer architecture editor for RISCV") + (description + "Ripes is a visual computer architecture simulator and assembly code +editor built for the RISCV instruction set architecture.") + (license license:expat)))) diff --git a/po/packages/POTFILES.in b/po/packages/POTFILES.in index 5402ce34bf..702e0c6d81 100644 --- a/po/packages/POTFILES.in +++ b/po/packages/POTFILES.in @@ -72,6 +72,7 @@ gnu/packages/code.scm gnu/packages/commencement.scm gnu/packages/compression.scm gnu/packages/compton.scm +gnu/packages/computer-architecture.scm gnu/packages/configuration-management.scm gnu/packages/connman.scm gnu/packages/containers.scm