aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/robotics.scm
blob: 949978d5dd14d75d5692027a5775f9be44faeef0 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2022 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 robotics)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix build-system cmake)
  #:use-module (gnu packages avahi)
  #:use-module (gnu packages base)
  #:use-module (gnu packages cpp)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages protobuf)
  #:use-module (gnu packages qt)
  #:use-module (gnu packages sdl)
  #:use-module (gnu packages valgrind)
  #:use-module (gnu packages xml))

(define-public enki
  ;; Previous versions use Qt4 and are unsuitable for Aseba.
  (let ((commit "afd2d8e2f91c095f6745505ca1f32f31ea874200")
        (revision "0"))
    (package
      (name "enki")
      (version (git-version "2.0pre" revision commit))
      (home-page "https://github.com/enki-community/enki/")
      (source (origin
                (method git-fetch)
                (uri (git-reference (url home-page) (commit commit)))
                (sha256
                 (base32
                  "1d1901zzsfml97hb4mb3ah3ab1bk4kh7bn6m7xrj1rv0gk9wkhq7"))
                (file-name (string-append name "-" version "-checkout"))))
      (build-system cmake-build-system)
      (arguments
       '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
      (native-inputs (list pkg-config))
      (inputs
       ;; Optionally, add Python + Boost for Python bindings.
       (list sdl2))
      (propagated-inputs
       ;; 'Viewer.h' includes 'QGLWidget'.
       (list qtbase-5 ;the viewer module needs Qt5 + MESA
             mesa))
      (synopsis "Robot simulator")
      (description
       "Enki is a robot simulator written in C++.  It provides collision and
limited physics support for robots evolving on a flat surface.  On a
contemporary desktop computer, Enki is able to simulate groups of robots
hundred times faster than real-time.")

      ;; The 'LICENSE' file as well as source file headers says that
      ;; researchers using the software are "asked" to cite using a given
      ;; citation, but that sentence is written as not being part of the
      ;; license (fortunately).
      (license license:gpl2+))))

(define-public aseba
  ;; Use the commit that allows us to build with Qt5.
  (let ((commit "3b35de80d5fdd47592b1c01d57e1f4ef37c5e5ea")
        (revision "0"))
    (package
      (name "aseba")
      (version (git-version "1.6.0" revision commit))
      (home-page "https://github.com/aseba-community/aseba")
      (source (origin
                (method git-fetch)
                (uri (git-reference (url home-page) (commit commit)
                                    (recursive? #t))) ;for Blockly
                (sha256
                 (base32
                  "0j31lmc9f0ksvkh0md2fgsz92hcsrwnrqqcynamizs2ah8iwlqi5"))
                (file-name (string-append name "-" version "-checkout"))
                (modules '((guix build utils)))
                (snippet
                 ;; Add missing Qt5::Network.
                 '(substitute* "targets/playground/CMakeLists.txt"
                    (("target_link_libraries(.*)\\$\\{EXTRA_LIBS\\}" _ middle)
                     (string-append "target_link_libraries" middle
                                    " Qt5::Network ${EXTRA_LIBS}"))))))
      (build-system cmake-build-system)
      (arguments
       '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
         #:parallel-build? #f                    ;occasionally fails with '-j'
         #:phases (modify-phases %standard-phases
                    (add-after 'unpack 'help-valgrind
                      (lambda* (#:key inputs #:allow-other-keys)
                        (let ((debug (search-input-directory inputs
                                                             "/lib/debug")))
                          (substitute* "tests/common/CMakeLists.txt"
                            (("--error-exitcode=1" flag)
                             (string-append "--extra-debuginfo-path="
                                            debug " " flag)))))))))
      (native-inputs
       (list pkg-config
             valgrind                             ;for tests
             `(,(canonical-package glibc) "debug")))
      (inputs
       (list dashel
             enki
             protobuf-3.5 ;for logging
             qtbase-5
             qtsvg-5
             qttools-5 ;for libQt5Help, needed by "studio"
             qtx11extras
             eudev
             libxml2
             sdl2
             avahi))            ;XXX: we need the libdnssd compat layer
      (synopsis "Event-based robot programming tools")
      (description
       "Aseba means @dfn{actuator and sensor event-based architecture}.
It is a set of tools which allow beginners to program robots easily and
efficiently.  It includes robot simulators, a programming language, and a
visual programming language (VPL) that is notably used together with the
Thymio educational robot.")

      ;; Source file headers say "version 3.0" without "or any later version".
      (license license:lgpl3))))
linux-libre 6.3....* etc/news.scm: Add entry. Leo Famulari 2023-07-23news: Add entry for the linux-libre 6.4 update....* etc/news.scm: Add entry. Leo Famulari 2023-07-25etc: Add a Qt team....* etc/teams.scm.in (qt): New variable. ('Maxim Cournoyer'): Add to qt team. Maxim Cournoyer 2023-07-25etc: Add a telephony team....* etc/teams.scm.in (telephony): New variable. ('Maxim Cournoyer'): Add to telephony team. Maxim Cournoyer 2023-07-16guix-install.sh: Fix incomplete installation....‘false || return’ returns false, and ‘set -e’ aborts the script. This leaves Guix half installed with visual indication of error. * etc/guix-install.sh (sys_customize_bashrc, sys_maybe_setup_selinux): Explicitly return 0. Tobias Geerinckx-Rice 2023-07-16guix-install.sh: Install SELinux policy only if tools are present....* etc/guix-install.sh (sys_maybe_setup_selinux): Silently return if the ‘semodule’ or ‘restorecon’ commands are missing. Tobias Geerinckx-Rice 2023-07-17teams: Change email address for Christopher Baines....This will allow me to automatically detect when I'm getting emails related to Guix teams. * etc/teams.scm.in: Change email address for Christopher Baines. Christopher Baines 2023-07-09guix-install.sh: Remove any old systemd units first....Don't clobber /dev/null permissions if units are masked. * etc/guix-install.sh (sys_enable_guix_daemon): Factor out unit installation. Unconditionally remove any old units. Install and enable gnu-store.mount after guix-daemon.service. Tobias Geerinckx-Rice 2023-07-09guix-install.sh: Don't patch guix-daemon.service....* etc/guix-install.sh (sys_enable_guix_daemon): Remove obsolete sed invocations. Tobias Geerinckx-Rice 2023-07-09guix-install.sh: Unconditionally install gnu-store.mount....* etc/guix-install.sh (sys_enable_guix_daemon): Remove obsolete conditional. Tobias Geerinckx-Rice 2023-07-05guix-install.sh: Don't extract the binary ‘.’....* etc/guix-install.sh (sys_create_store): Strip the first tar file name component. Tobias Geerinckx-Rice 2023-06-21news: Fix typo....* etc/news.scm: Fix typo in French version. Ludovic Courtès 2023-06-18news: Add entry for 'guix locate'....* etc/news.scm: Add entry. Co-authored-by: Florian Pelz <pelzflorian@pelzflorian.de> Ludovic Courtès 2023-05-25guix-install.sh: Install SELinux policy and relabel file systems if needed....Fixes <https://issues.guix.gnu.org/62487>. * etc/guix-install.sh (sys_maybe_setup_selinux): New function. (main): Use it. Ludovic Courtès 2023-05-25etc: SELinux: Update policy file....Tested on Rocky Linux 9, as discussed at <https://issues.guix.gnu.org/62487>. * etc/guix-daemon.cil.in: Add rules for /gnu/store remount and file creation in /tmp. Ludovic Courtès 2023-05-24teams: Add Vagrant Cascadian to the embedded team....* etc/teams.scm.in ("Vagrant Cascadian"): Add to embedded team. Vagrant Cascadian 2023-05-24teams: Split Embedded and Bootstrap into separate teams....* etc/teams.scm.in (embedded-bootstrap): Replace by two separate teams. (embedded): New variable. (bootstrap): New variable. Adjust membership to use new teams. Vagrant Cascadian 2023-05-19teams: Correct chemistry.scm typo....* etc/teams.scm.in (science): Change chemestry.scm to chemistry.scm. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Antero Mejr 2023-05-18etc: gitconfig: Do not enforced signed commits....This change was more invasive than initially thought, and cannot be disabled easily, as raised by a few people. Let's revert it for now. At least the pre-push hook should be deployed automatically and catch any unsigned commits attempted to be pushed to Savannah. * etc/git/gitconfig [commit]: Remove section. Maxim Cournoyer 2023-05-18news: Add entry to 'guix style -S arguments'....* etc/news.scm: Add entry. Ludovic Courtès 2023-05-18doc: Change '--with-configure-flag' example to something that works....Passing '-DBUILD_COMPLEX=OFF' to lapack would eventually lead to a link error. Reported by Florian Pelz <pelzflorian@pelzflorian.de>. * doc/guix.texi (Package Transformation Options): Change '--with-configure-flag' example. * etc/news.scm: Likewise. Ludovic Courtès 2023-05-11teams: Fix script to produce a single X-Debbugs-Cc header....Fixes <https://issues.guix.gnu.org/63378>. * etc/teams.scm.in (cc): Adjust format pattern. (sort-members, member->string): New procedures. (list-members): Refactor in terms of the above procedures. (main): Adjust the output of the 'cc-members-header-cmd' and 'cc-mentors-header-cmd' actions. Reviewed-by: Arun Isaac <arunisaac@systemreboot.net> Maxim Cournoyer 2023-05-07etc: teams: Add sequoia.scm to the rust team....* etc/teams.scm.in (rust): Add gnu/packages/sequoia.scm to the rust team module scope. Efraim Flashner 2023-05-05news: Add 'de' translation....* etc/news.scm: Add German translation of 'with-configure-flag' entry. Florian Pelz 2023-05-04news: Add entry for '--with-configure-flag'....* etc/news.scm: Add entry. Ludovic Courtès