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.scm468
1 files changed, 120 insertions, 348 deletions
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index d7c9f9f142..cbe9d79d78 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018, 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
@@ -17,7 +17,7 @@
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020,2021 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2020, 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2020, 2021 Morgan Smith <Morgan.J.Smith@outlook.com>
@@ -112,6 +112,8 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages serialization)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages tcl)
@@ -122,6 +124,7 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages xiph)
   #:use-module (gnu packages openkinect)
   #:use-module (gnu packages xorg))
 
@@ -266,7 +269,7 @@ plans and designs.")
 suite grouped together under the gEDA name.  gEDA/gaf is a collection of tools
 which currently includes: gschem, a schematic capture program; gnetlist, a
 netlist generation program; gsymcheck, a syntax checker for schematic symbols;
-gattrib, a spreadsheet programm that manipulates the properties of symbols of
+gattrib, a spreadsheet programme that manipulates the properties of symbols of
 a schematic; libgeda, libraries for gschem gnetlist and gsymcheck; gsch2pcb, a
 tool to forward annotation from your schematic to layout using PCB; some minor
 utilities.")
@@ -1248,7 +1251,7 @@ replacement for the OpenDWG libraries.")
 (define-public minicom
   (package
     (name "minicom")
-    (version "2.7.1")
+    (version "2.8")
     (source
      (origin
        (method git-fetch)
@@ -1256,13 +1259,16 @@ replacement for the OpenDWG libraries.")
              (url "https://salsa.debian.org/minicom-team/minicom.git")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "0f36wv015zpz1x895qv0z6marlynzyh0d5mfkyd7lfyy2xd1i2w0"))
+        (base32 "0kfihxbh9qkjk9m1932ajyqx384c2aj3d9yaphh3i9i7y1shxlpx"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-lock-dir=/var/lock")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))))
          (replace 'bootstrap
            ;; autogen.sh needlessly hard-codes aclocal-1.14.
            (lambda _
@@ -2016,256 +2022,6 @@ parallel computing platforms.  It also supports serial execution.")
     (license (list license:gpl2+
                    license:lgpl2.0+)))) ; freehdl's libraries
 
-(define-public qucs
-  ;; Qucs 0.0.19 segfaults when using glibc-2.26. Temporarily build from git.
-  ;; TODO: When qucs-0.0.20 is released, revert the commit that introduced this
-  ;; comment and update the package.
-  (let ((commit "b4f27d9222568066cd59e4c387c51a35056c99d8")
-        (revision "0"))
-    (package
-      (name "qucs")
-      (version (git-version "0.0.19" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/Qucs/qucs")
-                      (commit commit)))
-                (sha256
-                 (base32 "10bclay9xhkffmsh4j4l28kj1qpxx0pnxja5vx6305cllnq4r3gb"))
-                (file-name (string-append name "-" version "-checkout"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-before 'bootstrap 'patch-bootstrap
-             (lambda _
-               (for-each patch-shebang
-                         '("bootstrap"
-                           "qucs/bootstrap"
-                           "qucs-doc/bootstrap"
-                           "qucs-core/bootstrap"))
-               #t))
-           (add-before 'configure 'patch-configure
-             (lambda* (#:key inputs #:allow-other-keys)
-               (substitute* "qucs/configure"
-                 (("\\$QTDIR") (assoc-ref inputs "qt4")))
-               #t))
-           (add-after 'patch-configure 'patch-scripts
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (substitute* '("qucs/qucs/qucsdigi"
-                              "qucs/qucs/qucsdigilib"
-                              "qucs/qucs/qucsveri")
-                 (("\\$BINDIR")
-                  (string-append (assoc-ref outputs "out") "/bin"))
-                 (("freehdl-config")
-                  (string-append (assoc-ref inputs "freehdl") "/bin/freehdl-config"))
-                 (("freehdl-v2cc")
-                  (string-append (assoc-ref inputs "freehdl") "/bin/freehdl-v2cc"))
-                 (("cp ")
-                  (string-append (assoc-ref inputs "coreutils") "/bin/cp "))
-                 (("glibtool")
-                  (string-append (assoc-ref inputs "libtool") "/bin/libtool"))
-                 (("sed")
-                  (string-append (assoc-ref inputs "sed") "/bin/sed"))
-                 (("iverilog")
-                  (string-append (assoc-ref inputs "iverilog") "/bin/iverilog"))
-                 (("vvp")
-                  (string-append (assoc-ref inputs "iverilog") "/bin/vvp")))
-               #t))
-           (add-before 'check 'pre-check
-             (lambda _
-               ;; The test suite requires a running X server.
-               (system "Xvfb :1 &")
-               (setenv "DISPLAY" ":1")
-               #t))
-           (add-after 'install 'make-wrapper
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 ;; 'qucs' directly invokes gcc, hence this wrapping.
-                 (wrap-program (string-append out "/bin/qucs")
-                   `("CPLUS_INCLUDE_PATH" ":" prefix
-                     (,(string-append (assoc-ref inputs "gcc-toolchain")
-                                      "/include")))
-                   `("PATH" ":" prefix
-                     (,(string-append (assoc-ref inputs "gcc-toolchain")
-                                      "/bin")))
-                   `("LIBRARY_PATH" ":" prefix
-                     (,(string-append (assoc-ref inputs "gcc-toolchain")
-                                      "/lib")))
-                   `("ADMSXMLBINDIR" ":" prefix
-                     (,(string-append (assoc-ref inputs "adms") "/bin")))
-                   `("ASCOBINDIR" ":" prefix
-                     (,(string-append (assoc-ref inputs "asco") "/bin")))
-                   `("QUCS_OCTAVE" ":" prefix
-                     (,(string-append (assoc-ref inputs "octave") "/bin/octave")))))
-               #t)))
-         #:parallel-build? #f ; race condition
-         #:configure-flags '("--disable-doc"))) ; we need octave-epstk
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("bison" ,bison)
-         ("flex" ,flex)
-         ("gperf" ,gperf)
-         ("libtool-native" ,libtool)
-         ("pkg-config" ,pkg-config)
-         ("python" ,python-2) ; for tests
-         ("matplotlib" ,python2-matplotlib) ; for tests
-         ("numpy" ,python2-numpy) ; for tests
-         ("xorg-server" ,xorg-server-for-tests))) ; for tests
-      (inputs
-       `(("adms" ,adms)
-         ("asco" ,asco)
-         ("coreutils" ,coreutils)
-         ("freehdl" ,freehdl)
-         ("gcc-toolchain" ,gcc-toolchain)
-         ("iverilog" ,iverilog)
-         ("libtool" ,libtool)
-         ("octave" ,octave-cli)
-         ("qt4" ,qt-4)
-         ("sed" ,sed)))
-      (home-page "http://qucs.sourceforge.net/")
-      (synopsis "Circuit simulator with graphical user interface")
-      (description
-       "Qucs is a circuit simulator with graphical user interface.  The software
-aims to support all kinds of circuit simulation types---e.g. DC, AC,
-S-parameter, transient, noise and harmonic balance analysis.  Pure digital
-simulations are also supported.")
-      (license license:gpl2+))))
-
-(define-public qucs-s
-  (package
-    (name "qucs-s")
-    (version "0.0.21")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ra3xdh/qucs_s/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "12m1jwhb9qwvb141qzyskbxnw3wn1x22d02z4b4862p7xvccl5h7"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f ; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-scripts
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* '("qucs/qucsdigi"
-                            "qucs/qucsdigilib"
-                            "qucs/qucsveri")
-               (("\\$BINDIR")
-                (string-append (assoc-ref inputs "qucs") "/bin"))
-               (("freehdl-config")
-                (string-append (assoc-ref inputs "freehdl") "/bin/freehdl-config"))
-               (("freehdl-v2cc")
-                (string-append (assoc-ref inputs "freehdl") "/bin/freehdl-v2cc"))
-               (("cp ")
-                (string-append (assoc-ref inputs "coreutils") "/bin/cp "))
-               (("glibtool")
-                (string-append (assoc-ref inputs "libtool") "/bin/libtool"))
-               (("sed")
-                (string-append (assoc-ref inputs "sed") "/bin/sed"))
-               (("iverilog")
-                (string-append (assoc-ref inputs "iverilog") "/bin/iverilog"))
-               (("vvp")
-                (string-append (assoc-ref inputs "iverilog") "/bin/vvp")))
-             #t))
-         (add-after 'patch-scripts 'patch-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "qucs/main.cpp"
-               (((string-append "QucsSettings\\.Qucsator = QucsSettings\\.BinDir "
-                                "\\+ \"qucsator\" \\+ executableSuffix"))
-                (string-append "}{ QucsSettings.Qucsator = \""
-                               (assoc-ref inputs "qucs") "/bin/qucsator\""))
-               (((string-append "QucsSettings\\.XyceExecutable = "
-                                "\"/usr/local/Xyce-Release-6.8.0-OPENSOURCE/bin/Xyce"))
-                (string-append "}{ QucsSettings.XyceExecutable = \""
-                               (assoc-ref inputs "xyce-serial") "/bin/Xyce"))
-               (((string-append "else QucsSettings\\.XyceParExecutable = "
-                                "\"mpirun -np %p /usr/local"
-                                "/Xyce-Release-6.8.0-OPENMPI-OPENSOURCE/bin/Xyce"))
-                (string-append "QucsSettings.XyceParExecutable = \""
-                               (assoc-ref inputs "mpi") "/bin/mpirun -np %p "
-                               (assoc-ref inputs "xyce-parallel") "/bin/Xyce"))
-               (("else QucsSettings\\.NgspiceExecutable = \"ngspice\"")
-                (string-append "QucsSettings.NgspiceExecutable = " "\""
-                               (assoc-ref inputs "ngspice") "/bin/ngspice\"")))
-             (substitute* "qucs/extsimkernels/ngspice.cpp"
-               (("share/qucs/xspice_cmlib") "share/qucs-s/xspice_cmlib"))
-             (substitute* "qucs/qucs_actions.cpp"
-               (("qucstrans")
-                (string-append (assoc-ref inputs "qucs") "/bin/qucstrans"))
-               (("qucsattenuator")
-                (string-append (assoc-ref inputs "qucs") "/bin/qucsattenuator"))
-               (("qucsrescodes")
-                (string-append (assoc-ref inputs "qucs") "/bin/qucsrescodes")))
-             #t))
-         (add-after 'install 'install-scripts
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (for-each
-              (lambda (script)
-                (let ((file (string-append "../qucs_s-" ,version
-                                           "/qucs/" script))
-                      (out (assoc-ref outputs "out")))
-                  (install-file file (string-append out "/bin"))
-                  (chmod (string-append out "/bin/" script) #o555)))
-              '("qucsdigi" "qucsdigilib" "qucsveri"))
-             #t))
-         (add-after 'install-scripts 'make-wrapper
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (file (string-append out "/bin/qucs-s"))
-                    (qucs (assoc-ref inputs "qucs"))
-                    (qucsator (string-append qucs "/bin/qucsator")))
-               (wrap-program file
-                 `("CPLUS_INCLUDE_PATH" ":" prefix
-                   (,(string-append (assoc-ref inputs "gcc-toolchain")
-                                    "/include")))
-                 `("PATH" ":" prefix
-                   (,(string-append (assoc-ref inputs "gcc-toolchain")
-                                    "/bin")))
-                 `("LIBRARY_PATH" ":" prefix
-                   (,(string-append (assoc-ref inputs "gcc-toolchain")
-                                    "/lib")))
-                 `("QUCSATOR" ":" prefix (,qucsator))
-                 `("QUCSCONV" ":" prefix (,(string-append qucsator "/bin/qucsconv")))
-                 `("ADMSXMLBINDIR" ":" prefix (,(string-append (assoc-ref inputs "adms")
-                                                               "/bin")))
-                 `("ASCOBINDIR" ":" prefix (,(string-append (assoc-ref inputs "asco")
-                                                            "/bin")))
-                 `("QUCS_OCTAVE" ":" prefix (,(string-append (assoc-ref inputs "octave")
-                                                             "/bin/octave"))))
-               (symlink qucsator (string-append out "/bin/qucsator"))
-               #t))))))
-    (native-inputs
-     `(("libtool-native" ,libtool)))
-    (inputs
-     `(("adms" ,adms)
-       ("asco" ,asco)
-       ("coreutils" ,coreutils)
-       ("freehdl" ,freehdl)
-       ("gcc-toolchain" ,gcc-toolchain)
-       ("iverilog" ,iverilog)
-       ("libtool" ,libtool)
-       ("mpi" ,openmpi)
-       ("ngspice" ,ngspice)
-       ("octave" ,octave-cli)
-       ("qt4" ,qt-4)
-       ("qucs" ,qucs)
-       ("sed" ,sed)
-       ("xyce-serial" ,xyce-serial)
-       ("xyce-parallel" ,xyce-parallel)))
-    (home-page "https://ra3xdh.github.io/")
-    (synopsis "Circuit simulator with graphical user interface")
-    (description
-     "Qucs-S is a spin-off of the Qucs cross-platform circuit simulator.
-The S letter indicates SPICE.  The purpose of the Qucs-S subproject is to use
-free SPICE circuit simulation kernels with the Qucs GUI.  It provides the
-simulator backends @code{Qucsator}, @code{ngspice} and @code{Xyce}.")
-    (license license:gpl2+)))
-
 (define-public librepcb
   (package
     (name "librepcb")
@@ -2601,104 +2357,120 @@ OpenSCAD code.  It supports syntax highlighting, indenting and refilling of
 comments.")))
 
 (define-public freecad
-  (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-after 'install 'wrap-pythonpath
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (wrap-program (string-append out "/bin/FreeCAD")
-                   (list "GUIX_PYTHONPATH"
-                         'prefix (list (getenv "GUIX_PYTHONPATH"))))))))))
-      (home-page "https://www.freecadweb.org/")
-      (synopsis "Your Own 3D Parametric Modeler")
-      (description
-       "FreeCAD is a general purpose feature-based, parametric 3D modeler for
+  (package
+    (name "freecad")
+    (version "0.19.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/FreeCAD/FreeCAD")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32
+            "0c53q2iawy4yfp11czyc7lbr9ivp3r7v24x4c20myh11wyplffc0"))))
+    (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)
+       ("double-conversion" ,double-conversion)
+       ("eigen" ,eigen)
+       ("freetype" ,freetype)
+       ("gl2ps" ,gl2ps)
+       ("glew" ,glew)
+       ("hdf5" ,hdf5-1.10)
+       ("jsoncpp" ,jsoncpp)
+       ("libarea" ,libarea)
+       ("libjpeg-turbo" ,libjpeg-turbo)
+       ("libmedfile" ,libmedfile)
+       ("libspnav" ,libspnav)
+       ("libtheora" ,libtheora)
+       ("libtiff" ,libtiff)
+       ("libxi" ,libxi)
+       ("libxmlplusplus" ,libxmlplusplus)
+       ("libxmu" ,libxmu)
+       ("lz4" ,lz4)
+       ("netcdf" ,netcdf)
+       ("opencascade-occt" ,opencascade-occt)
+       ("openmpi" ,openmpi)
+       ("proj" ,proj)
+       ("python-gitpython" ,python-gitpython)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-pivy" ,python-pivy)
+       ("python-pyside-2" ,python-pyside-2)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-shiboken-2" ,python-shiboken-2)
+       ("python-wrapper" ,python-wrapper)
+       ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
+       ("qtwebkit" ,qtwebkit)
+       ("qtx11extras" ,qtx11extras)
+       ("qtxmlpatterns" ,qtxmlpatterns)
+       ("sqlite" ,sqlite)
+       ("tbb" ,tbb)
+       ("vtk" ,vtk-8)
+       ("xerces-c" ,xerces-c)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f          ; Project has no tests
+       #:configure-flags
+       (list
+        "-DBUILD_QT5=ON"
+        "-DBUILD_FLAT_MESH:BOOL=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=\"\\);") ""))))
+         (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"))))))))))
+    (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