unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#54482] [PATCH] gnu: Add simavr
@ 2022-03-20 16:36 Artyom V. Poptsov
  2022-03-20 17:30 ` Maxime Devos
  0 siblings, 1 reply; 4+ messages in thread
From: Artyom V. Poptsov @ 2022-03-20 16:36 UTC (permalink / raw)
  To: 54482


[-- Attachment #1.1: Type: text/plain, Size: 126 bytes --]

Hello,

this patch adds simavr [1] -- an AVR simulator.

Thanks,

- Artyom

References:
1: https://github.com/buserror/simavr

[-- Attachment #1.2: 0001-gnu-Add-simavr.patch --]
[-- Type: text/x-diff, Size: 4553 bytes --]

From 05b3a83a9f0f9b0e08d2675cb9b1a80c6b30114d Mon Sep 17 00:00:00 2001
From: "Artyom V. Poptsov" <poptsov.artyom@gmail.com>
Date: Sat, 19 Mar 2022 23:39:54 +0300
Subject: [PATCH] gnu: Add simavr

* gnu/packages/avr.scm (simavr): New variable.
---
 gnu/packages/avr.scm | 74 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 73 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 3cc5a6964e..9836cc6305 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,6 +26,7 @@
 (define-module (gnu packages avr)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix utils)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
@@ -35,7 +37,17 @@
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages flashing-tools)
   #:use-module (gnu packages gcc)
-  #:use-module (gnu packages vim))
+  #:use-module (gnu packages vim)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages avr)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages ruby))
 
 (define-public avr-binutils
   (package
@@ -181,3 +193,63 @@ inlining, and features an aggressive tree-shaker, eliminating unused top-level
 definitions.  Microscheme has a robust @dfn{Foreign Function Interface} (FFI)
 meaning that C code may be invoked directly from (ms) programs.")
     (license license:expat)))
+
+(define-public simavr
+  (package
+    (name "simavr")
+    (version "1.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/buserror/simavr")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "0njz03lkw5374x1lxrq08irz4b86lzj2hibx46ssp7zv712pq55q"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f
+      #:modules '((guix build gnu-build-system)
+                  (guix build utils))
+      #:phases #~(modify-phases %standard-phases
+                   (delete 'configure)
+                   (replace 'check
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (when tests?
+                         (invoke "make"
+                                 "-C"
+                                 "tests"
+                                 (string-append "CC=" #$(cc-for-target))
+                                 "RELEASE=1"
+                                 "run_tests")))))
+      #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                           "RELEASE=1"
+                           (string-append "PREFIX=" #$output)
+                           (string-append "DESTDIR=" #$output))))
+    (propagated-inputs
+     (list avr-toolchain))
+    (native-inputs
+     (list autoconf
+           which
+           git
+           automake
+           pkg-config
+           ncurses
+           ruby))
+    (inputs
+     (list bash-minimal libelf freeglut))
+    (home-page "https://github.com/buserror/simavr")
+    (synopsis "Lean, mean and hackable AVR simulator for GNU/Linux and OSX")
+    (description
+     "simavr is a new AVR simulator for GNU/Linux, or any platform that uses
+@command{avr-gcc}.  It uses avr-gcc's own register definition to simplify
+creating new targets for supported AVR devices.  The core was made to be small
+and compact, and hackable so allow quick prototyping of an AVR project.  The
+AVR core is now stable for use with parts with <= 128KB flash, and with
+preliminary support for the bigger parts.  The simulator loads ELF files
+directly, and there is even a way to specify simulation parameterps directly
+in the emulated code using an @code{.elf} section.  You can also load
+multipart HEX files.")
+    (license license:gpl3)))
-- 
2.25.1


[-- Attachment #1.3: Type: text/plain, Size: 207 bytes --]


-- 
Artyom "avp" Poptsov <poptsov.artyom@gmail.com>
Home page: https://memory-heap.org/~avp/
CADR Hackerspace co-founder: https://cadrspace.ru/
GPG: D0C2 EAC1 3310 822D 98DE  B57C E9C5 A2D9 0898 A02F

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [bug#54482] [PATCH] gnu: Add simavr
  2022-03-20 16:36 [bug#54482] [PATCH] gnu: Add simavr Artyom V. Poptsov
@ 2022-03-20 17:30 ` Maxime Devos
  2022-03-21 21:00   ` Artyom V. Poptsov
  0 siblings, 1 reply; 4+ messages in thread
From: Maxime Devos @ 2022-03-20 17:30 UTC (permalink / raw)
  To: Artyom V. Poptsov, 54482

[-- Attachment #1: Type: text/plain, Size: 1345 bytes --]

Artyom V. Poptsov schreef op zo 20-03-2022 om 19:36 [+0300]:
> +  #:use-module (gnu packages autotools)
> +  #:use-module (gnu packages base)
> +  #:use-module (gnu packages bash)
> +  #:use-module (gnu packages avr)

Why is (gnu packages avr) importing (gnu packages avr)?

> +  #:use-module (gnu packages elf)
> +  #:use-module (gnu packages gl)
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages ncurses)
> +  #:use-module (gnu packages version-control)
> +  #:use-module (gnu packages ruby))

I think most users of avr-libc and avr-toolchain don't need simavr,
so WDYT of defining simavr in a separate module to avoid loading
the (gnu packages ruby) module (which has a large closure, including
much of haskell, java) unless actually necessary?  Benefits are lower
memory usage and less startup time.

Long-term, separating modules (*) a bit more would help with avoiding
circular imports (and maybe eventually, making sure imports aren't
circular at compile-time), makings some ideas for making "guix pull"
faster more feasible
<https://lists.gnu.org/archive/html/guix-devel/2022-02/msg00193.html>
and effective.  I don't think any conclusion was reached upon that
though ...

(*) Though in this case, there doesn't appear to be any circularity,
yet.

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [bug#54482] [PATCH] gnu: Add simavr
  2022-03-20 17:30 ` Maxime Devos
@ 2022-03-21 21:00   ` Artyom V. Poptsov
  2022-03-24 11:58     ` bug#54482: " Ludovic Courtès
  0 siblings, 1 reply; 4+ messages in thread
From: Artyom V. Poptsov @ 2022-03-21 21:00 UTC (permalink / raw)
  To: Maxime Devos; +Cc: 54482


[-- Attachment #1.1: Type: text/plain, Size: 155 bytes --]

Hello Maxime,

thanks for the feedback!

Here's the updated version of the patch.  I decided to move 'simavr'
package to a new 'avr-xyz' module.

- Artyom

[-- Attachment #1.2: 0001-gnu-avr-xyz-Add-simavr.patch --]
[-- Type: text/x-diff, Size: 5482 bytes --]

From 2ea020a319f5c2fa27662a8e505a1d4b8e916ea9 Mon Sep 17 00:00:00 2001
From: "Artyom V. Poptsov" <poptsov.artyom@gmail.com>
Date: Sat, 19 Mar 2022 23:39:54 +0300
Subject: [PATCH] gnu: avr-xyz: Add simavr

* gnu/packages/avr-xyz.scm: New module.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add 'avr-xyz.scm'.
---
 gnu/local.mk             |  2 +
 gnu/packages/avr-xyz.scm | 97 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 99 insertions(+)
 create mode 100644 gnu/packages/avr-xyz.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 484757b207..edb8f6a576 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -49,6 +49,7 @@
 # Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 # Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
 # Copyright © 2022 Remco van 't Veer <remco@remworks.net>
+# Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 #
 # This file is part of GNU Guix.
 #
@@ -119,6 +120,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/autotools.scm			\
   %D%/packages/avahi.scm			\
   %D%/packages/avr.scm				\
+  %D%/packages/avr-xyz.scm			\
   %D%/packages/axoloti.scm			\
   %D%/packages/backup.scm			\
   %D%/packages/base.scm				\
diff --git a/gnu/packages/avr-xyz.scm b/gnu/packages/avr-xyz.scm
new file mode 100644
index 0000000000..800f8af21e
--- /dev/null
+++ b/gnu/packages/avr-xyz.scm
@@ -0,0 +1,97 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages avr-xyz)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
+  #:use-module (guix gexp)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages avr)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages ruby))
+
+(define-public simavr
+  (package
+    (name "simavr")
+    (version "1.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/buserror/simavr")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "0njz03lkw5374x1lxrq08irz4b86lzj2hibx46ssp7zv712pq55q"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f
+      #:modules '((guix build gnu-build-system)
+                  (guix build utils))
+      #:phases #~(modify-phases %standard-phases
+                   (delete 'configure)
+                   (replace 'check
+                     (lambda* (#:key tests? outputs #:allow-other-keys)
+                       (when tests?
+                         (invoke "make"
+                                 "-C"
+                                 "tests"
+                                 (string-append "CC=" #$(cc-for-target))
+                                 "RELEASE=1"
+                                 "run_tests")))))
+      #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
+                           "RELEASE=1"
+                           (string-append "PREFIX=" #$output)
+                           (string-append "DESTDIR=" #$output))))
+    (propagated-inputs
+     (list avr-toolchain))
+    (native-inputs
+     (list autoconf
+           which
+           git
+           automake
+           pkg-config
+           ncurses
+           ruby))
+    (inputs
+     (list bash-minimal libelf freeglut))
+    (home-page "https://github.com/buserror/simavr")
+    (synopsis "Lean, mean and hackable AVR simulator for GNU/Linux and OSX")
+    (description
+     "simavr is a new AVR simulator for GNU/Linux, or any platform that uses
+@command{avr-gcc}.  It uses avr-gcc's own register definition to simplify
+creating new targets for supported AVR devices.  The core was made to be small
+and compact, and hackable so allow quick prototyping of an AVR project.  The
+AVR core is now stable for use with parts with <= 128KB flash, and with
+preliminary support for the bigger parts.  The simulator loads ELF files
+directly, and there is even a way to specify simulation parameterps directly
+in the emulated code using an @code{.elf} section.  You can also load
+multipart HEX files.")
+    (license license:gpl3)))
-- 
2.25.1


[-- Attachment #1.3: Type: text/plain, Size: 207 bytes --]


-- 
Artyom "avp" Poptsov <poptsov.artyom@gmail.com>
Home page: https://memory-heap.org/~avp/
CADR Hackerspace co-founder: https://cadrspace.ru/
GPG: D0C2 EAC1 3310 822D 98DE  B57C E9C5 A2D9 0898 A02F

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* bug#54482: [PATCH] gnu: Add simavr
  2022-03-21 21:00   ` Artyom V. Poptsov
@ 2022-03-24 11:58     ` Ludovic Courtès
  0 siblings, 0 replies; 4+ messages in thread
From: Ludovic Courtès @ 2022-03-24 11:58 UTC (permalink / raw)
  To: Artyom V. Poptsov; +Cc: 54482-done, Maxime Devos

[-- Attachment #1: Type: text/plain, Size: 484 bytes --]

Hi Artyom,

"Artyom V. Poptsov" <poptsov.artyom@gmail.com> skribis:

> From 2ea020a319f5c2fa27662a8e505a1d4b8e916ea9 Mon Sep 17 00:00:00 2001
> From: "Artyom V. Poptsov" <poptsov.artyom@gmail.com>
> Date: Sat, 19 Mar 2022 23:39:54 +0300
> Subject: [PATCH] gnu: avr-xyz: Add simavr
>
> * gnu/packages/avr-xyz.scm: New module.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add 'avr-xyz.scm'.

Applied with the cosmetic changes below.

Thank you and thanks Maxime!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 867 bytes --]

diff --git a/gnu/packages/avr-xyz.scm b/gnu/packages/avr-xyz.scm
index 800f8af21e..a05157ede7 100644
--- a/gnu/packages/avr-xyz.scm
+++ b/gnu/packages/avr-xyz.scm
@@ -83,9 +83,9 @@ (define-public simavr
     (inputs
      (list bash-minimal libelf freeglut))
     (home-page "https://github.com/buserror/simavr")
-    (synopsis "Lean, mean and hackable AVR simulator for GNU/Linux and OSX")
+    (synopsis "Lean, mean and hackable simulator for AVR CPUs/MCUs")
     (description
-     "simavr is a new AVR simulator for GNU/Linux, or any platform that uses
+     "simavr is a new AVR simulator for GNU/Linux or any platform that uses
 @command{avr-gcc}.  It uses avr-gcc's own register definition to simplify
 creating new targets for supported AVR devices.  The core was made to be small
 and compact, and hackable so allow quick prototyping of an AVR project.  The

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-03-24 11:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-20 16:36 [bug#54482] [PATCH] gnu: Add simavr Artyom V. Poptsov
2022-03-20 17:30 ` Maxime Devos
2022-03-21 21:00   ` Artyom V. Poptsov
2022-03-24 11:58     ` bug#54482: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).