aboutsummaryrefslogtreecommitdiff
;;; 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))))
.scm (python-asyncssh): New variable. Signed-off-by: Christopher Baines <mail@cbaines.net> Lars-Dominik Braun 2020-10-29gnu: dropbear: Update to 2020.81....* gnu/packages/ssh.scm (dropbear): Update to 2020.81. Tobias Geerinckx-Rice ages/graphics.scm (eglexternalplatform, egl-wayland, mmm, directfb, flux), * gnu/packages/gstreamer.scm (openni2, ccextractor, libvisual, graphene), * gnu/packages/guile-xyz.scm (guile-srfi-180, guile-torrent), * gnu/packages/image.scm (openjpeg-data), * gnu/packages/java.scm (javacc), * gnu/packages/language.scm (liblouis, liblouisutdml), * gnu/packages/linux.scm (pamela, ttyebus), * gnu/packages/lxqt.scm (lxqt-connman-applet), * gnu/packages/mail.scm (libetpan), * gnu/packages/man.scm (ronn), * gnu/packages/music.scm (tascam-gtk, artyfx), * gnu/packages/networking.scm (srt, lksctp-tools, nng, nanomsg), * gnu/packages/python-crypto.scm (pure-python-otr), * gnu/packages/qt.scm (qtspell), * gnu/packages/raspberry-pi.scm (raspi-gpio, raspi-open-firmware), * gnu/packages/rdp.scm (freerdp), * gnu/packages/ruby.scm (ruby-prawn-templates, ruby-treetop, ruby-gimme, ruby-standard, ruby-rubocop-ast, ruby-rexml, ruby-range-compressor, ruby-regexp-property-values, ruby-regexp-parser, ruby-rubocop, ruby-pdf-reader, ruby-pdf-inspector, ruby-prawn), * gnu/packages/syncthing.scm (syncthing-gtk), * gnu/packages/video.scm (svt-hevc, mediasdk, libvideogfx, libde265, tslib), * gnu/packages/xml.scm (libxmlb, libxmlplusplus)[source]: Same. Efraim Flashner 2020-11-13gnu: gst-plugins-bad: Disable flaky test....* gnu/packages/gstreamer.scm (gst-plugins-bad)[arguments]: Disable one more test in adjust-tests phase. Marius Bakke 2020-11-13gnu: gst-plugins-good: Fix test failure on 32-bit systems....* gnu/packages/gstreamer.scm (gst-plugins-good)[arguments]: Add phase fix-broken-test. Marius Bakke 2020-11-09gnu: GStreamer: Update to 1.18.1....* gnu/packages/gstreamer.scm (gstreamer-docs, gstreamer, gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, gst-libav, gst-editing-services, python-gst): Update to 1.18.1. Marius Bakke 2020-10-13gnu: gstreamer: Update to 1.18.0....* gnu/packages/patches/python-gst-fix-build-with-python-3.8.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/gstreamer.scm (gstreamer-docs): New public variable. (gstreamer): Update to 1.18.0. [outputs]: Remove. [arguments]: Remove 'move-docs' phase. [native-inputs]: Remove GTK-DOC. (gst-plugins-base): Update to 1.18.0. [arguments]: Remove "-Ddoc=false" from #:configure-flags. (gst-plugins-good, gst-plugins-ugly): Update to 1.18.0. [arguments]: Remove 'patch-docbook-xml' phase. [native-inputs]: Remove DOCBOOK-XML-4.1.2. (gst-plugins-bad): Update to 1.18.0. [arguments]: Add workarounds for known test failures. [native-inputs]: Add GST-PLUGINS-GOOD. (gst-libav): Update to 1.18.0. [source](snippet): Remove. [arguments]: Remove 'patch-docbook-xml' phase. [native-inputs]: Remove DOCBOOK-XML-4.1.2. (gst-editing-services): Update to 1.18.0. [source](uri): Adjust. (python-gst): Update to 1.18.0. [source](patches): Remove. Marius Bakke 2020-10-13gnu: Remove python2-gst....It fails to build because of an incomplete python2 transformation, but is not worth fixing because Python 2 is EOL and nothing depends on this package. * gnu/packages/gstreamer.scm (python-gst)[properties]: Remove. (python2-gst): Remove variable. Marius Bakke 2020-10-13gnu: gst-plugins-bad: Add support for Secure Reliable Transport (SRT)....* gnu/packages/gstreamer.scm (gst-plugins-bad)[inputs]: Add srt-1.4.1. Leo Famulari 2020-10-02gnu: orc: Update to 0.4.32....* gnu/packages/gstreamer.scm (orc): Update to 0.4.32. Tobias Geerinckx-Rice 2020-08-20gnu: ccextractor: Fix build....* gnu/packages/gstreamer.scm (ccextractor): Add LEPTONICA to inputs. Jakub Kądziołka 2020-08-19gnu: gst-plugins-good: Update package definition....* gnu/packages/gstreamer.scm (gst-plugins-good): Update package definition. [arguments]<#:glib-or-gtk?>: New argument. <#:phases>['disable-tests-for-armhf]: Remove phase. ['disable-failing-tests]: Remove phase. ['patch-docbook-xml]: New phase. ['pre-check]: New phase. [native-inputs]: Add docbook-xml, gettext-minimal, gobject-introspection, gsettings-desktop-schemas, perl, libxml2 and xorg-server-for-tests. [inputs]: Add bzip2, glib, glib-networking, glu, libgudev, libx11, libxdamage, libxfixes, libxext, libxshmfence, mesa and v4l-utils. Remove gst-plugins-base. [propagated-inputs]: Add gstreamer and gst-plugins-base. [synopsis]: Modify. [description]: Modify. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-08-19gnu: gst-libav: Update package definition....* gnu/packages/gstreamer.scm (gst-libav): Update package definition. [arguments]<#:phases>['patch-docbook-xml]: New phase. [native-inputs]: Add docbook-xml, perl and ruby. [inputs]: Remove gst-plugins-base, orc and zlib. [propagated-inputs]: Add gstreamer and gst-plugins-base. [synopsis]: Modify. [description]: Modify. [license]: Change from gpl2+ to lgpl2.0+. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-08-19gnu: gst-plugins-ugly: Update package definition....* gnu/packages/gstreamer.scm (gst-plugins-ugly): Update package definition. [arguments]<#:glib-or-gtk?>: New argument. <#:phases>['patch-docbook-xml]: New phase. ['pre-check]: New phase. [native-inputs]: Add docbook-xml, gettext-minimal, gsettings-desktop-schemas, perl and xorg-server-for-tests. [inputs]: Add glib, glib-networking and opencore-amr. Remove gst-plugins-base. [propagated-inputs]: Add gstreamer and gst-plugins-base. [synopsis]: Modify. [description]: Modify. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-08-18gnu: Add openni2....* gnu/packages/gstreamer.scm (openni2): New variable. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-08-18gnu: Add libdc1394....* gnu/packages/gstreamer.scm (libdc1394): New variable. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-08-18gnu: Add ccextractor....* gnu/packages/gstreamer.scm (ccextractor): New variable. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-08-18gnu: Add libvisual-plugins....* gnu/packages/gstreamer.scm (libvisual-plugins): New variable. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-08-18gnu: Add libvisual....* gnu/packages/gstreamer.scm (libvisual): New variable. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan 2020-08-18gnu: Add esound....* gnu/packages/gstreamer.scm (esound): New variable. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Raghav Gururajan