summary refs log tree commit diff
path: root/gnu/packages/simulation.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/simulation.scm')
-rw-r--r--gnu/packages/simulation.scm109
1 files changed, 108 insertions, 1 deletions
diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm
index e5e7d2bf60..059be5a2be 100644
--- a/gnu/packages/simulation.scm
+++ b/gnu/packages/simulation.scm
@@ -254,6 +254,113 @@ problems for efficient solution on parallel systems.")
     (license license:gpl3+)
     (home-page "https://openfoam.org")))
 
+(define-public open-simulation-interface
+  (package
+    (name "open-simulation-interface")
+    (version "3.5.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url (string-append "https://github.com/"
+                                        "OpenSimulationInterface/"
+                                        "open-simulation-interface"))
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "09vclrvsawx608kk0vnzywr71xn11qzwxzh2j508zjfn0kvhyx7q"))))
+    (build-system cmake-build-system)
+    (arguments (list #:tests? #f         ; tests are for the python package
+                     #:phases
+                     #~(modify-phases %standard-phases
+                         (add-after 'unpack 'fix-cmake
+                           (lambda _
+                             (substitute* "CMakeLists.txt"
+                               (("-targets\\.cmake") "_targets.cmake")))))))
+    (native-inputs (list protobuf))
+    (home-page
+     "https://github.com/OpenSimulationInterface/open-simulation-interface")
+    (synopsis "Generic interface for environmental perception")
+    (description "The Open Simulation Interface is a generic interface based on
+Google's protocol buffers for the environmental perception of automated driving
+functions in virtual scenarios.")
+    (license license:mpl2.0)))
+
+(define-public python-open-simulation-interface
+  (package/inherit open-simulation-interface
+    (build-system python-build-system)
+    (arguments '())))
+
+(define-public esmini
+  (package
+    (name "esmini")
+    (version "2.27.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/esmini/esmini")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (patches (search-patches "esmini-use-pkgconfig.patch"
+                                       "esmini-no-clutter-log.patch"))
+              (modules '((guix build utils) (ice-9 ftw)))
+              (snippet
+               #~(with-directory-excursion "externals"
+                   (for-each
+                    (lambda (dir) (unless (member dir '("." ".." "expr"))
+                               (delete-file-recursively dir)))
+                    (scandir "."))))
+              (sha256
+               (base32
+                "07ccydz7kxy5jc52f8fmxg4nkr1spshfnpzcv0wgd5lqz9ghjahz"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-DDYN_PROTOBUF=TRUE")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-cmake
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (substitute* "CMakeLists.txt"
+                (("\\$\\{CMAKE_HOME_DIRECTORY\\}/bin")
+                 (string-append (assoc-ref outputs "out") "/bin")))
+              (substitute* "EnvironmentSimulator/CMakeLists.txt"
+                (("\\$\\{OSI_DIR\\}/(include|lib)(-dyn)?" all what)
+                 (search-input-directory
+                  inputs
+                  (string-append what "/osi"
+                                 #$(version-major
+                                    (package-version
+                                     (this-package-input
+                                      "open-simulation-interface"))))))
+                (("\\$\\{SUMO_BASE_DIR\\}/\\$\\{EXT_DIR_NAME\\}")
+                 #$(this-package-input "sumo")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (with-directory-excursion "EnvironmentSimulator/Unittest/"
+                (for-each invoke (find-files "_test$")))))
+          (add-after 'install 'move-libraries
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (mkdir-p (string-append out "/lib"))
+                (with-directory-excursion (string-append out "/bin")
+                  (for-each
+                   (lambda (f)
+                     (rename-file f (string-append out "/lib/"
+                                                   (basename f))))
+                   (find-files "." "\\.so$")))))))))
+    (inputs (list mesa
+                  openscenegraph `(,openscenegraph "pluginlib")
+                  open-simulation-interface
+                  protobuf pugixml sumo))
+    (native-inputs (list googletest pkg-config))
+    (home-page "https://github.com/esmini/esmini")
+    (synopsis "Basic OpenSCENARIO player")
+    (description "@command{esmini} is a tool to play OpenSCENARIO files.
+It is provided as both a standalone application and a shared library and has
+some support for generating and analysing traffic scenarios..")
+    (license license:mpl2.0)))
+
 (define-public python-fenics-dijitso
   (package
     (name "python-fenics-dijitso")
@@ -924,7 +1031,7 @@ command-line utility for mesh optimisation.")
                     (invoke "py.test" "-v" "tests/migration")
                     (invoke "py.test" "-v" "tests/pyadjoint")))
              #t)))))
-    (home-page "http://www.dolfin-adjoint.org")
+    (home-page "https://www.dolfin-adjoint.org")
     (synopsis "Automatic differentiation library")
     (description "@code{python-dolfin-adjoint} is a solver of
 differential equations associated with a governing system and a