summaryrefslogtreecommitdiff
path: root/gnu/packages/engineering.scm
diff options
context:
space:
mode:
authorPeter Polidoro <peter@polidoro.io>2026-07-01 11:16:47 -0400
committerCayetano Santos <csantosb@inventati.org>2026-07-06 20:25:12 +0200
commita6a25b9344a874a5766fb773990b547d486f88f5 (patch)
tree1d1faf6422518a7277bb9d7c52ede69502f12f60 /gnu/packages/engineering.scm
parent21067308c0143cb6ad0148101923ad361e9a392c (diff)
gnu: Move csxcad and openems packages to engineering module.
* gnu/packages/electronics.scm: Add module scope comment and remove unused imports. (appcsxcad, csxcad, python-csxcad, openems, python-openems, qcsxcad): Move from here ... * gnu/packages/engineering.scm: Add module scope comment. (csxcad, python-csxcad, qcsxcad, appcsxcad, openems, python-openems): ... to here. Merges guix/guix!9650 Adresses guix/guix#9638 Signed-off-by: Cayetano Santos <csantosb@inventati.org>
Diffstat (limited to 'gnu/packages/engineering.scm')
-rw-r--r--gnu/packages/engineering.scm290
1 files changed, 290 insertions, 0 deletions
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 7b018c03f9a..6429d161b0f 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -48,6 +48,7 @@
48;;; Copyright © 2025 Remco van 't Veer <remco@remworks.net> 48;;; Copyright © 2025 Remco van 't Veer <remco@remworks.net>
49;;; Copyright © 2025-2026 bdunahu <bdunahu@operationnull.com> 49;;; Copyright © 2025-2026 bdunahu <bdunahu@operationnull.com>
50;;; Copyright © 2026 Cayetano Santos <csantosb@inventati.org> 50;;; Copyright © 2026 Cayetano Santos <csantosb@inventati.org>
51;;; Copyright © 2026 Thomas Kramer <thomas@f-si.org>
51;;; Copyright © 2026 Daniel Khodabakhsh <d@niel.khodabakh.sh> 52;;; Copyright © 2026 Daniel Khodabakhsh <d@niel.khodabakh.sh>
52;;; Copyright © 2026 Spencer King <spencer.king@wustl.edu> 53;;; Copyright © 2026 Spencer King <spencer.king@wustl.edu>
53;;; Copyright © 2026 Brent Wedderburn <mb@bean.za.net> 54;;; Copyright © 2026 Brent Wedderburn <mb@bean.za.net>
@@ -68,6 +69,10 @@
68;;; You should have received a copy of the GNU General Public License 69;;; You should have received a copy of the GNU General Public License
69;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. 70;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
70 71
72;;; Packages for computer-aided engineering workflows, including CAD/CAM,
73;;; physical modeling and simulation, field solvers, manufacturing, robotics,
74;;; surveying, and engineering computation tools.
75
71(define-module (gnu packages engineering) 76(define-module (gnu packages engineering)
72 #:use-module ((guix licenses) #:prefix license:) 77 #:use-module ((guix licenses) #:prefix license:)
73 #:use-module (guix build-system ant) 78 #:use-module (guix build-system ant)
@@ -601,6 +606,291 @@ multipole-accelerated algorithm.")
601multipole-accelerated algorithm.") 606multipole-accelerated algorithm.")
602 (license (license:non-copyleft #f "See induct.c.")))) 607 (license (license:non-copyleft #f "See induct.c."))))
603 608
609(define-public csxcad
610 (package
611 (name "csxcad")
612 (version "0.6.3")
613 (source
614 (origin
615 (method git-fetch)
616 (uri (git-reference
617 (url "https://github.com/thliebig/CSXCAD")
618 (commit (string-append "v" version))))
619 (file-name (git-file-name name version))
620 (sha256
621 (base32 "1c383zsv4fp40kmpawamfi9zg3b8x3d4m091ldwk15mii3467hp3"))))
622 (build-system cmake-build-system)
623 (arguments
624 (list
625 #:tests? #f ; No tests.
626 #:configure-flags
627 #~(list
628 (string-append "-DFPARSER_ROOT_DIR=" #$(this-package-input "fparser")))
629 #:phases
630 #~(modify-phases %standard-phases
631 (add-after 'unpack 'fix-cmake-and-sources
632 (lambda _
633 (substitute* "CMakeLists.txt"
634 ((" system\n")
635 "")
636 (("find_package\\(HDF5 1.8 COMPONENTS C HL REQUIRED\\)")
637 "find_package(HDF5 REQUIRED COMPONENTS C HL)"))
638 ;; Fix missing `std::`.
639 ;; This is fixed in upstream already but not tagged.
640 (substitute* "src/CSPropDiscMaterial.cpp"
641 (("\tcout ")
642 "\tstd::cout ")))))))
643 (inputs (list boost
644 cgal
645 eigen
646 fparser
647 hdf5
648 gmp
649 libjpeg-turbo
650 libpng
651 libtiff
652 lz4
653 mpfr
654 openmpi
655 tinyxml
656 vtk
657 zlib))
658 (home-page "https://github.com/thliebig/CSXCAD")
659 (synopsis "3D geometry library for C++")
660 (description
661 "@code{csxcad} is a C++ library to describe geometrical objects
662and their physical or non-physical properties for electromagnetics simulations.")
663 (license license:lgpl3+)))
664
665(define-public python-csxcad
666 (package
667 (inherit csxcad)
668 (name "python-csxcad")
669 (build-system pyproject-build-system)
670 (arguments
671 (list
672 ;; Tests are broken in v0.6.3.
673 ;; Check on update.
674 #:tests? #f
675 #:phases
676 #~(modify-phases %standard-phases
677 (add-before 'build 'prepare-build
678 (lambda _
679 (chdir "./python")
680 (setenv "CSXCAD_INSTALL_PATH"
681 #$(this-package-input "csxcad")))))))
682 (native-inputs (list python-minimal python-cython python-numpy
683 python-setuptools))
684 (inputs (list csxcad fparser hdf5 python-numpy tinyxml))
685 (synopsis "Python bindings for @code{csxcad}")
686 (description "Library for describing geometrical objects and their
687physical and non-physical properties.")
688 (license license:lgpl3+)))
689
690(define-public qcsxcad
691 (package
692 (name "qcsxcad")
693 (version "0.6.3")
694 (source
695 (origin
696 (method git-fetch)
697 (uri (git-reference
698 (url "https://github.com/thliebig/QCSXCAD")
699 (commit (string-append "v" version))))
700 (file-name (git-file-name name version))
701 (sha256
702 (base32 "0ag1shyhsmfsvqm35fi2kfnbcngmln8rjsv88f97gyx9wiqc808y"))))
703 (build-system qt-build-system)
704 (arguments
705 (list
706 #:tests? #f ;No tests.
707 #:qtbase qtbase ;For Qt 6
708 #:phases
709 #~(modify-phases %standard-phases
710 (add-after 'unpack 'fix-sources
711 ;; Fix missing `std::`-prefix and missing include.
712 ;; This is fixed in upstream but not tagged with a version.
713 (lambda _
714 (substitute* "vtkInteractorStyleRubberBand2DPlane.cpp"
715 (("#include \"vtkCamera.h\"")
716 "#include <iostream>\n#include \"vtkCamera.h\"")
717 (("\tcerr ")
718 "\tstd::cerr "))
719 (substitute* "VTKPrimitives.cpp"
720 (("#include \"VTKPrimitives.h\"")
721 "#include <iostream>\n#include \"VTKPrimitives.h\"")
722 (("\tcerr ")
723 "\tstd::cerr ")
724 (("\tcout ")
725 "\tstd::cout "))
726 (substitute* "QVTKStructure.cpp"
727 (("#include \"QVTKStructure.h\"")
728 "#include <iostream>\n#include \"QVTKStructure.h\"")
729 (("\tcerr ")
730 "\tstd::cerr ")
731 (("\tcout ")
732 "\tstd::cout ")))))))
733 (inputs (list boost
734 cgal
735 csxcad
736 eigen
737 freetype
738 gmp
739 libjpeg-turbo
740 libpng
741 libtiff
742 lz4
743 openmpi
744 qt5compat
745 tinyxml
746 vtk))
747 (home-page "https://github.com/thliebig/QCSXCAD")
748 (synopsis "GUI library for @code{csxcad}")
749 (description
750 "GUI library for @code{csxcad} --- a library for describing geometrical
751 objects and their properties. This library is used in @code{appcsxcad}
752 which provides a standalone graphical frontend to @{csxcad}.")
753 (license license:lgpl3+)))
754
755(define-public appcsxcad
756 (package
757 (name "appcsxcad")
758 (version "0.2.3")
759 (source
760 (origin
761 (method git-fetch)
762 (uri (git-reference
763 (url "https://github.com/thliebig/AppCSXCAD")
764 (commit (string-append "v" version))))
765 (file-name (git-file-name name version))
766 (sha256
767 (base32 "145awcsg4vl2xmrh5yf9fcasmghrai3x6ivgdxmrm1w3v9gyaccf"))))
768 (build-system qt-build-system)
769 (arguments
770 (list
771 #:qtbase qtbase ;for Qt 6
772 #:tests? #f)) ;No tests.
773 (inputs (list boost
774 cgal
775 csxcad
776 eigen
777 expat
778 freetype
779 gmp
780 hdf5
781 libjpeg-turbo
782 libpng
783 libtiff
784 lz4
785 openmpi
786 qcsxcad
787 tinyxml
788 vtk))
789 (home-page "https://github.com/thliebig/AppCSXCAD")
790 (synopsis "Minimal GUI application for the @code{qcsxcad} library")
791 (description
792 "A minimal application for the @code{qcsxcad} library which is used to
793 describe geometrical objects and their physical and non-physical properties.")
794 (license license:gpl3)))
795
796(define-public openems
797 (package
798 (name "openems")
799 (version "0.0.36")
800 (source
801 (origin
802 (method git-fetch)
803 (uri (git-reference
804 (url "https://github.com/thliebig/openEMS")
805 (commit (string-append "v" version))))
806 (file-name (git-file-name name version))
807 (sha256
808 (base32 "1vxlknnji7kha0kabpjqh48i4r0rqlla9gcxhn69d0gcw76albmw"))))
809 (build-system cmake-build-system)
810 (arguments
811 (list
812 #:configure-flags
813 #~(list (string-append "-DCSXCAD_ROOT_DIR="
814 #$(this-package-input "csxcad"))
815 (string-append "-DFPARSER_ROOT_DIR="
816 #$(this-package-input "fparser")))
817 #:phases
818 #~(modify-phases %standard-phases
819 (add-after 'unpack 'fix-cmake
820 (lambda _
821 (substitute* "CMakeLists.txt"
822 ((" system\n") "")
823 (("find_package\\(HDF5 1.8 COMPONENTS C HL REQUIRED\\)")
824 "find_package(HDF5 1.8 REQUIRED)"))))
825 (delete 'check)
826 (add-after 'install 'check
827 (lambda* (#:key tests? source inputs #:allow-other-keys)
828 (when tests?
829 (let* ((testsuite (string-append source "/TESTSUITE"))
830 (testsuite-tmp "/tmp/openEMS-TESTSUITE"))
831 ;; Testsuite directory needs to be writable.
832 (copy-recursively testsuite testsuite-tmp)
833 (invoke "octave" "--no-gui" "--eval"
834 (string-append
835 "addpath('" #$output "/share/openEMS/matlab');"
836 "addpath('"
837 (search-input-directory inputs "share/CSXCAD/matlab")
838 "');"
839 ;; Work around bug in test script.
840 "addpath('" testsuite-tmp "/helperscripts');"
841 "run('" testsuite-tmp "/run_testsuite.m');")))))))))
842 (native-inputs (list cmake-minimal octave pkg-config))
843 (inputs (list boost
844 csxcad
845 fparser
846 hdf5
847 openmpi
848 tinyxml
849 vtk))
850 (home-page "https://www.openems.de")
851 (synopsis "Electromagnetic field solver")
852 (description "@code{OpenEMS} is an electromagnetic field solver using
853the @acronym{FDTD, Finite-Difference Time-Domain} method.")
854 (license license:gpl3+)))
855
856(define-public python-openems
857 (package
858 (inherit openems)
859 (name "python-openems")
860 (build-system pyproject-build-system)
861 (arguments
862 (list
863 #:tests? #f ; No tests. Check again on package upgrade.
864 #:phases
865 #~(modify-phases %standard-phases
866 (add-after 'unpack 'fix-sources
867 ;; Check if this is still needed on upgrade.
868 (lambda _
869 (substitute* "python/openEMS/_nf2ff.pxd"
870 (("cimport cython.numeric")
871 "import cython
872from cython cimport numeric"))))
873 (add-before 'build 'prepare-build
874 (lambda* _
875 (chdir "./python")
876 (setenv "CSXCAD_INSTALL_PATH"
877 #$(this-package-input "csxcad"))
878 (setenv "OPENEMS_INSTALL_PATH"
879 #$(this-package-input "openems")))))))
880 (native-inputs (list python-cython python-setuptools))
881 (inputs (list csxcad
882 fparser
883 openems
884 python-csxcad
885 python-hdf5storage
886 python-numpy
887 tinyxml))
888 (home-page "https://www.openems.de")
889 (synopsis "Python API for the electromagnetic field solver @code{OpenEMS}")
890 (description "@code{OpenEMS} is an electromagnetic field solver using
891the @acronym{FDTD, Finite-Difference Time-Domain} method.")
892 (license license:gpl3+)))
893
604(define-public fritzing 894(define-public fritzing
605 (package 895 (package
606 (name "fritzing") 896 (name "fritzing")