summary refs log tree commit diff
path: root/gnu/packages/engineering.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/engineering.scm')
-rw-r--r--gnu/packages/engineering.scm377
1 files changed, 234 insertions, 143 deletions
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index b39c9ecb47..3b8bcd9194 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -67,6 +67,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages digest)
+  #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
@@ -102,6 +103,7 @@
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
@@ -272,14 +274,14 @@ utilities.")
   (package
     (inherit geda-gaf)
     (name "lepton-eda")
-    (version "1.9.11-20200604")
+    (version "1.9.13-20201211")
     (home-page "https://github.com/lepton-eda/lepton-eda")
     (source (origin
               (method git-fetch)
               (uri (git-reference (url home-page) (commit version)))
               (sha256
                (base32
-                "091y8h7wcr9smwhb1wf12sj27n5jrannbj3y6qq3q2gwiifiz8sd"))
+                "0xfx6d0pyfrxr1c0nm4pbmb716hng78rgizaa6vsas9347n4kk1n"))
               (file-name (git-file-name name version))))
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -293,56 +295,93 @@ utilities.")
        ,@(package-native-inputs geda-gaf)))
     (inputs
      `(("glib" ,glib)
-       ("gtk" ,gtk+-2)
+       ("gtk" ,gtk+)
+       ("gtksheet" ,gtksheet)
        ("guile" ,guile-2.2)
        ("shared-mime-info" ,shared-mime-info)
        ("m4" ,m4)
        ("pcb" ,pcb)))
     (arguments
-     (substitute-keyword-arguments (package-arguments geda-gaf)
-       ((#:configure-flags flags ''())
-        ;; When running "make", the POT files are built with the build time as
-        ;; their "POT-Creation-Date".  Later on, "make" notices that .pot
-        ;; files were updated and goes on to run "msgmerge"; as a result, the
-        ;; non-deterministic POT-Creation-Date finds its way into .po files,
-        ;; and then in .gmo files.  To avoid that, simply make sure 'msgmerge'
-        ;; never runs.  See <https://bugs.debian.org/792687>.
-        `(cons "ac_cv_path_MSGMERGE=true" ,flags))
-       ((#:phases phases '%standard-phases)
-        `(modify-phases %standard-phases
-           (add-before 'bootstrap 'prepare
-             (lambda _
-               ;; Some of the scripts there are invoked by autogen.sh.
-               (for-each patch-shebang (find-files "build-tools"))
-
-               ;; Make sure 'msgmerge' can modify the PO files.
-               (for-each (lambda (po)
-                           (chmod po #o666))
-                         (find-files "." "\\.po$"))
-
-               ;; This would normally be created by invoking 'git', but it
-               ;; doesn't work here.
-               (call-with-output-file "version.h"
-                 (lambda (port)
-                   (format port "#define PACKAGE_DATE_VERSION \"~a\"~%"
-                           ,(string-drop version
-                                         (+ 1 (string-index version #\-))))
-                   (format port "#define PACKAGE_DOTTED_VERSION \"~a\"~%"
-                           ,(string-take version
-                                         (string-index version #\-)))
-                   (format port "#define PACKAGE_GIT_COMMIT \"cabbag3\"~%")))
-               #t))
-           (add-after 'install 'compile-scheme-files
-             (lambda* (#:key outputs #:allow-other-keys)
-               (invoke "make" "precompile")
-               (for-each (lambda (program)
-                           (wrap-program program
-                             `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                               (,(string-append (assoc-ref outputs "out")
-                                                "/share/lepton-eda/ccache/")))))
-                         (find-files (string-append (assoc-ref outputs "out") "/bin")
-                                     ".*"))
-               #t))))))
+     `(#:configure-flags
+       (let ((pcb (assoc-ref %build-inputs "pcb")))
+         ;; When running "make", the POT files are built with the build time as
+         ;; their "POT-Creation-Date".  Later on, "make" notices that .pot
+         ;; files were updated and goes on to run "msgmerge"; as a result, the
+         ;; non-deterministic POT-Creation-Date finds its way into .po files,
+         ;; and then in .gmo files.  To avoid that, simply make sure 'msgmerge'
+         ;; never runs.  See <https://bugs.debian.org/792687>.
+         (list "ac_cv_path_MSGMERGE=true"
+               "--with-gtk3"
+               (string-append "--with-pcb-datadir=" pcb "/share")
+               (string-append "--with-pcb-lib-path="
+                              pcb "/share/pcb/pcblib-newlib:"
+                              pcb "/share/pcb/newlib")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-dynamic-link
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "libleptongui/scheme/schematic/ffi.scm.in"
+               (("@LIBLEPTONGUI@")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/libleptongui.so")))
+             (substitute* '("libleptongui/scheme/schematic/ffi/gtk.scm.in"
+                            "libleptonattrib/lepton-attrib.scm")
+               (("@LIBGTK@")
+                (string-append (assoc-ref inputs "gtk")
+                               "/lib/libgtk-3.so")))
+             (substitute* "liblepton/scheme/lepton/ffi.scm.in"
+               (("@LIBLEPTON@")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/liblepton.so")))
+             (substitute* "libleptonattrib/lepton-attrib.scm"
+               (("@LIBLEPTONATTRIB@")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/libleptonattrib.so")))
+             (substitute* "liblepton/scheme/lepton/log.scm.in"
+               (("@LIBGLIB@")
+                (string-append (assoc-ref inputs "glib")
+                               "/lib/libglib-2.0.so")))
+
+             ;; For finding libraries when running tests before installation.
+             (setenv "LIBLEPTONGUI"
+                     (string-append (getcwd)
+                                    "/libleptongui/src/.libs/libleptongui.so"))
+             (setenv "LIBLEPTON"
+                     (string-append (getcwd)
+                                    "/libleptongui/src/.libs/liblepton.so"))
+             (setenv "LD_LIBRARY_PATH"
+                     (string-append (getcwd) "/libleptonattrib/src/.libs/:"
+                                    (getenv "LIBRARY_PATH")))
+             #t))
+         (add-before 'bootstrap 'prepare
+           (lambda _
+             ;; Some of the scripts there are invoked by autogen.sh.
+             (for-each patch-shebang (find-files "build-tools"))
+
+             ;; Make sure 'msgmerge' can modify the PO files.
+             (for-each (lambda (po)
+                         (chmod po #o666))
+                       (find-files "." "\\.po$"))
+
+             ;; This would normally be created by invoking 'git', but it
+             ;; doesn't work here.
+             (call-with-output-file "version.h"
+               (lambda (port)
+                 (format port "#define PACKAGE_DATE_VERSION \"~a\"~%"
+                         ,(string-drop version
+                                       (+ 1 (string-index version #\-))))
+                 (format port "#define PACKAGE_DOTTED_VERSION \"~a\"~%"
+                         ,(string-take version
+                                       (string-index version #\-)))
+                 (format port "#define PACKAGE_GIT_COMMIT \"cabbag3\"~%")))
+             #t))
+         (add-after 'install 'compile-scheme-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (unsetenv "LIBLEPTONGUI")
+             (unsetenv "LIBLEPTON")
+             (unsetenv "LD_LIBRARY_PATH")
+             (invoke "make" "precompile")
+             #t)))))
     (description
      "Lepton EDA ia an @dfn{electronic design automation} (EDA) tool set
 forked from gEDA/gaf in late 2016.  EDA tools are used for electrical circuit
@@ -849,7 +888,6 @@ The viewer can be used interactively with a REPL (for example Geiser in
 Emacs).")
       (license license:gpl3+))))
 
-;; TODO Add doc https://gitlab.com/kicad/services/kicad-doc/-/tree/master
 (define-public kicad
   (package
     (name "kicad")
@@ -899,6 +937,9 @@ Emacs).")
              #t)))))
     (native-search-paths
      (list (search-path-specification
+            (variable "KICAD")          ; to find kicad-doc
+            (files '("")))
+           (search-path-specification
             (variable "KICAD_TEMPLATE_DIR")
             (files '("share/kicad/template")))
            (search-path-specification
@@ -970,6 +1011,46 @@ translations for KiCad.")
 (define-public kicad-i18l
   (deprecated-package "kicad-i18l" kicad-i18n))
 
+(define-public kicad-doc
+  (package
+    (name "kicad-doc")
+    (version "5.1.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/kicad/services/kicad-doc.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "03kvss8a0xrjnfvkwymm0vfd7rn9ix7i926xdzz9jg9iycrjfj3g"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags (list "-DBUILD_FORMATS=html")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build)
+         (add-before 'install 'set-perl-env
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "PERL5LIB"
+                     (string-append (assoc-ref inputs "perl-unicode-linebreak")
+                                    "/lib/perl5/site_perl" ":"
+                                    (getenv "PERL5LIB")))
+             #t))
+         (delete 'check))))
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ("gettext" ,gettext-minimal)
+       ("git" ,git-minimal)
+       ("perl" ,perl)
+       ("perl-unicode-linebreak" ,perl-unicode-linebreak)
+       ("po4a" ,po4a)
+       ("source-highlight" ,source-highlight)))
+    (home-page "https://kicad.org")
+    (synopsis "KiCad official documentation")
+    (description "This repository contains the official KiCad documentation.")
+    (license license:gpl3+)))
+
 (define-public kicad-symbols
   (package
     (name "kicad-symbols")
@@ -1077,7 +1158,7 @@ the 'showing the effect of'-style of operation.")
 (define-public volk
   (package
     (name "volk")
-    (version "2.4.0")
+    (version "2.4.1")
     (source
      (origin
        (method git-fetch)
@@ -1087,7 +1168,7 @@ the 'showing the effect of'-style of operation.")
              (recursive? #t)))          ; for cpu_features git submodule
        (file-name (git-file-name name version))
        (sha256
-        (base32 "14y0988r5qi1h3yvkivx5ihccn8r15910lq30r8iy71ih190r5m9"))))
+        (base32 "1mkqiw0i2fbbsk46zvk8yv5swl7ifhq6y1dlfphq8dsmkvxckqby"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -1133,22 +1214,23 @@ use on a given system.")
 (define-public libredwg
   (package
     (name "libredwg")
-    (version "0.11")
+    (version "0.11.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://gnu/libredwg/libredwg-"
              version ".tar.xz"))
        (sha256
-        (base32 "1vd7ii32k5447z7k4w9s005hv1ffpj6dyf1w40x6c53qksrblny2"))))
+        (base32 "1xx6y6ckm4mzqln8y8lqf5frcn2b32ypc0d0h9dzpz6363zh7pdn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-bindings")))
     (native-inputs
      `(("libxml2" ,libxml2)
        ("parallel" ,parallel)
+       ("perl" ,perl)
        ("pkg-config" ,pkg-config)
-       ("python" ,python)
+       ("python" ,python-wrapper)
        ("python-libxml2" ,python-libxml2)))
     (inputs
      `(("pcre2" ,pcre2)))
@@ -2432,101 +2514,110 @@ full programmatic control over your models.")
     (license license:gpl2+)))
 
 (define-public freecad
-  (package
-    (name "freecad")
-    (version "0.18.4")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/FreeCAD/FreeCAD")
-             (commit version)))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           ;; Fix build with Python 3.8, see
-           ;; <https://tracker.freecadweb.org/view.php?id=4143>.
-           (substitute* "src/Base/swigpyrun.inl"
-             (("PyObject \\*modules = interp->modules;")
-              "PyObject *modules = PyEval_GetBuiltins();"))
-           #t))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "170hk1kgrvsddrwykp24wyj0cha78zzmzbf50gn98x7ngqqs395s"))))
-    (build-system qt-build-system)
-    (native-inputs
-     `(("doxygen" ,doxygen)
-       ("graphviz" ,graphviz)
-       ("qttools" ,qttools)
-       ("pkg-config" ,pkg-config)
-       ("swig" ,swig)))
-    (inputs
-     `(("boost" ,boost)
-       ("coin3D" ,coin3D)
-       ("eigen" ,eigen)
-       ("freetype" ,freetype)
-       ("glew" ,glew)
-       ("hdf5" ,hdf5-1.10)
-       ("libarea" ,libarea)
-       ("libmedfile" ,libmedfile)
-       ("libspnav" ,libspnav)
-       ("libxi" ,libxi)
-       ("libxmu" ,libxmu)
-       ("openmpi" ,openmpi)
-       ("opencascade-occt" ,opencascade-occt)
-       ("python-matplotlib" ,python-matplotlib)
-       ("python-pyside-2" ,python-pyside-2)
-       ("python-pyside-2-tools" ,python-pyside-2-tools)
-       ("python-shiboken-2" ,python-shiboken-2)
-       ("python-wrapper" ,python-wrapper)
-       ("qtbase" ,qtbase)
-       ("qtsvg" ,qtsvg)
-       ("qtx11extras" ,qtx11extras)
-       ("qtxmlpatterns" ,qtxmlpatterns)
-       ;; qtwebkit is optional. We remove it currently, because it takes
-       ;; much time to compile and substitutes are often unavailable
-       ;;("qtwebkit" ,qtwebkit)
-       ("tbb" ,tbb)
-       ("vtk" ,vtk)
-       ("xerces-c" ,xerces-c)
-       ("zlib" ,zlib)))
-    (arguments
-     `(#:tests? #f
-       #:configure-flags
-       (list
-        "-DBUILD_QT5=ON"
-        (string-append "-DCMAKE_INSTALL_LIBDIR="
-                       (assoc-ref %outputs "out") "/lib"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'restore-pythonpath
-           (lambda _
-             (substitute* "src/Main/MainGui.cpp"
-               (("_?putenv\\(\"PYTHONPATH=\"\\);") ""))
-             #t))
-         (add-after 'install 'wrap-pythonpath
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/FreeCAD")
-                 (list "PYTHONPATH"
-                       'prefix (list (getenv "PYTHONPATH")))))
-             #t)))))
-    (home-page "https://www.freecadweb.org/")
-    (synopsis "Your Own 3D Parametric Modeler")
-    (description
-     "FreeCAD is a general purpose feature-based, parametric 3D modeler for
+  (let ((commit-ref "7616153b3c31ace006169cdc2fdafab484498858")
+        (revision "1"))
+    (package
+      (name "freecad")
+      (version (git-version "0.18.5" revision commit-ref))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/FreeCAD/FreeCAD")
+                 (commit commit-ref)))
+          (file-name (git-file-name name version))
+          (sha256
+            (base32
+              "16965yxnp2pq7nm8z3p0pjkzjdyq62vfrj8j3nk26bwc898czyn2"))))
+      (build-system qt-build-system)
+      (native-inputs
+       `(("doxygen" ,doxygen)
+         ("graphviz" ,graphviz)
+         ("qttools" ,qttools)
+         ("pkg-config" ,pkg-config)
+         ("python-pyside-2-tools" ,python-pyside-2-tools)
+         ("swig" ,swig)))
+      (inputs
+       `(("boost" ,boost)
+         ("coin3D" ,coin3D)
+         ("eigen" ,eigen)
+         ("freetype" ,freetype)
+         ("glew" ,glew)
+         ("hdf5" ,hdf5-1.10)
+         ("libarea" ,libarea)
+         ("libmedfile" ,libmedfile)
+         ("libspnav" ,libspnav)
+         ("libxi" ,libxi)
+         ("libxmu" ,libxmu)
+         ("openmpi" ,openmpi)
+         ("opencascade-occt" ,opencascade-occt)
+         ("python-matplotlib" ,python-matplotlib)
+         ("python-pyside-2" ,python-pyside-2)
+         ("python-shiboken-2" ,python-shiboken-2)
+         ("python-pivy" ,python-pivy)
+         ("python-wrapper" ,python-wrapper)
+         ("qtbase" ,qtbase)
+         ("qtsvg" ,qtsvg)
+         ("qtx11extras" ,qtx11extras)
+         ("qtxmlpatterns" ,qtxmlpatterns)
+         ("qtwebkit" ,qtwebkit)
+         ("tbb" ,tbb)
+         ("vtk" ,vtk)
+         ("xerces-c" ,xerces-c)
+         ("zlib" ,zlib)))
+      (arguments
+       `(#:tests? #f
+         #:configure-flags
+         (list
+          "-DBUILD_QT5=ON"
+          (string-append "-DCMAKE_INSTALL_LIBDIR=" (assoc-ref %outputs "out") "/lib")
+          (string-append "-DPYSIDE2UICBINARY="
+                         (assoc-ref %build-inputs "python-pyside-2-tools")
+                         "/bin/uic")
+          (string-append "-DPYSIDE2RCCBINARY="
+                         (assoc-ref %build-inputs "python-pyside-2-tools")
+                         "/bin/rcc")
+          "-DPYSIDE_LIBRARY=PySide2::pyside2"
+          (string-append
+           "-DPYSIDE_INCLUDE_DIR="
+           (assoc-ref %build-inputs "python-pyside-2") "/include;"
+           (assoc-ref %build-inputs "python-pyside-2") "/include/PySide2;"
+           (assoc-ref %build-inputs "python-pyside-2") "/include/PySide2/QtCore;"
+           (assoc-ref %build-inputs "python-pyside-2") "/include/PySide2/QtWidgets;"
+           (assoc-ref %build-inputs "python-pyside-2") "/include/PySide2/QtGui;")
+          "-DSHIBOKEN_LIBRARY=Shiboken2::libshiboken"
+          (string-append "-DSHIBOKEN_INCLUDE_DIR="
+                         (assoc-ref %build-inputs "python-shiboken-2")
+                         "/include/shiboken2"))
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'restore-pythonpath
+             (lambda _
+               (substitute* "src/Main/MainGui.cpp"
+                 (("_?putenv\\(\"PYTHONPATH=\"\\);") ""))
+               #t))
+           (add-after 'install 'wrap-pythonpath
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (wrap-program (string-append out "/bin/FreeCAD")
+                   (list "PYTHONPATH"
+                         'prefix (list (getenv "PYTHONPATH")))))
+               #t)))))
+      (home-page "https://www.freecadweb.org/")
+      (synopsis "Your Own 3D Parametric Modeler")
+      (description
+       "FreeCAD is a general purpose feature-based, parametric 3D modeler for
 CAD, MCAD, CAx, CAE and PLM, aimed directly at mechanical engineering and
 product design but also fits a wider range of uses in engineering, such as
 architecture or other engineering specialties.  It is 100% Open Source (LGPL2+
 license) and extremely modular, allowing for very advanced extension and
 customization.")
-    (license
-     (list
-      license:lgpl2.1+
-      license:lgpl2.0+
-      license:gpl3+
-      license:bsd-3))))
+      (license
+       (list
+        license:lgpl2.1+
+        license:lgpl2.0+
+        license:gpl3+
+        license:bsd-3)))))
 
 (define-public libmedfile
   (package