aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/engineering.scm
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2021-10-12 16:50:47 +0000
committerMathieu Othacehe <othacehe@gnu.org>2021-10-12 17:46:23 +0000
commita1eca979fb8da842e73c42f4f53be29b169810f2 (patch)
tree681c7283e412bb8a29c2531c4408b49c3e184764 /gnu/packages/engineering.scm
parent48d86a9ec6d8d2e97da2299ea41a03ef4cdaab83 (diff)
parent371aa5777a3805a3886f3feea5f1960fe3fe4219 (diff)
downloadguix-a1eca979fb8da842e73c42f4f53be29b169810f2.tar
guix-a1eca979fb8da842e73c42f4f53be29b169810f2.tar.gz
Merge remote-tracking branch 'origin/master' into core-updates-frozen.
Diffstat (limited to 'gnu/packages/engineering.scm')
-rw-r--r--gnu/packages/engineering.scm298
1 files changed, 253 insertions, 45 deletions
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index b4b2e04eec..e7fe1cd281 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -24,6 +24,7 @@
;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -95,6 +96,7 @@
#:use-module (gnu packages image-processing)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libevent)
+ #:use-module (gnu packages libusb)
#:use-module (gnu packages linux) ;FIXME: for pcb
#:use-module (gnu packages lisp)
#:use-module (gnu packages m4)
@@ -134,17 +136,18 @@
(name "librecad")
(version "2.2.0-rc2")
(source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/LibreCAD/LibreCAD/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/LibreCAD/LibreCAD")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0a7fzhxkkn2s3hkgqrw3s3wyspzfla3c5lgbsjyqzvlnrp3anxnm"))))
- (build-system gnu-build-system)
+ "08cl4935c9vznz9qdw1zgd86rn7hl64zpfayxl07x21bhf53pn24"))))
+ (build-system qt-build-system)
(arguments
- '(#:phases
+ '(#:test-target "check"
+ #:phases
(modify-phases %standard-phases
;; Without this patch boost complains that "make_array" is not a
;; member of "boost::serialization".
@@ -184,19 +187,7 @@
(install-file "unix/librecad" bin)
(mkdir-p share)
(copy-recursively "unix/resources" share))
- #t))
- ;; Ensure that icons are found at runtime
- (add-after 'install 'wrap-executable
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (qt '("qtbase" "qtsvg")))
- (wrap-program (string-append out "/bin/librecad")
- `("QT_PLUGIN_PATH" ":" prefix
- ,(map (lambda (label)
- (string-append (assoc-ref inputs label)
- "/lib/qt5/plugins/"))
- qt)))
- #t))))))
+ #t)))))
(inputs
`(("boost" ,boost)
("muparser" ,muparser)
@@ -901,7 +892,7 @@ Emacs).")
(define-public kicad
(package
(name "kicad")
- (version "5.1.6")
+ (version "5.1.10")
(source
(origin
(method git-fetch)
@@ -909,7 +900,7 @@ Emacs).")
(url "https://gitlab.com/kicad/code/kicad.git")
(commit version)))
(sha256
- (base32 "1pa3z0h0679jmgxlzc833h6q85b5paxdp69kf2h93vkaryj58622"))
+ (base32 "10ix560bqy0lprnik1bprxw9ix4g8w2ipvyikx551ak9ryvgwjcc"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
@@ -1020,7 +1011,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
(file-name (git-file-name name version))
(sha256
(base32
- "0qryi8xjm23ka363zfl7bbga0v5c31fr3d4nyxp3m168vkv9zhha"))))
+ "0y51l0r62cnxkvpc21732p3cx7pjvaqjih8193502hlv9kv1j9p6"))))
(build-system cmake-build-system)
(arguments
`(#:phases
@@ -1041,7 +1032,7 @@ translations for KiCad.")
(define-public kicad-doc
(package
(name "kicad-doc")
- (version "5.1.6")
+ (version (package-version kicad))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1050,7 +1041,7 @@ translations for KiCad.")
(file-name (git-file-name name version))
(sha256
(base32
- "03kvss8a0xrjnfvkwymm0vfd7rn9ix7i926xdzz9jg9iycrjfj3g"))))
+ "005ljkb7liayvyj4vxd5ncrknfbhnk6xvyjk43qz810hrp1fv0hk"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags (list "-DBUILD_FORMATS=html")
@@ -1079,12 +1070,12 @@ translations for KiCad.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/KiCad/kicad-symbols")
+ (url "https://gitlab.com/kicad/libraries/kicad-symbols.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "12w3rdy085drlikkpb27n9ni7cyg9l0pqy7hnr86cxjcw3l5wcx6"))))
+ "0n25rq32jwyigfw26faqraillwv6zbi2ywy26dkz5zqlf5xp56ad"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ; no tests exist
@@ -1108,12 +1099,12 @@ libraries.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/KiCad/kicad-footprints")
+ (url "https://gitlab.com/kicad/libraries/kicad-footprints.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "1kmf91a5mmvj9izrv40mkaw1w36yjgn8daczd9rq2wlmd0rdp1zx"))))
+ "0gyqxryda273hjn2rv8dha461j9bjh054y5dlpiw1wiha65lrf9i"))))
(synopsis "Official KiCad footprint libraries")
(description "This package contains the official KiCad footprint libraries.")))
@@ -1125,12 +1116,12 @@ libraries.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/KiCad/kicad-packages3d")
+ (url "https://gitlab.com/kicad/libraries/kicad-packages3D.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "0b9jglf77fy0n0r8xs4yqkv6zvipyfvp0z5dnqlzp32csy5aqpi1"))))
+ "1szcin52fcsyb55bj7xq7lz6ig187dpz3lk7blwab7b9c4dn3c3y"))))
(synopsis "Official KiCad 3D model libraries")
(description "This package contains the official KiCad 3D model libraries.")))
@@ -1142,12 +1133,12 @@ libraries.")
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/KiCad/kicad-templates")
+ (url "https://gitlab.com/kicad/libraries/kicad-templates.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
- "1hppcsrkn4dk6ggby6ckh0q65qxkywrbyxa4lwpaf7pxjyv498xg"))))
+ "1a8xfcbdbb4ylrb5m7n2jjk9kwvgmlx1pmnn2cwj327a2b3m4jjs"))))
(synopsis "Official KiCad project and worksheet templates")
(description "This package contains the official KiCad project and
worksheet templates.")))
@@ -1715,7 +1706,7 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27344#236>.
(package
(name "libngspice")
- (version "34")
+ (version "35")
(source
(origin
(method url-fetch)
@@ -1726,7 +1717,7 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
"old-releases/" version
"/ngspice-" version ".tar.gz")))
(sha256
- (base32 "1dfpkgkwmgwhq8dnbb8dh28cfap6rw0yywkhmxr4jxclcvygyqr2"))))
+ (base32 "1v3ra9p2sc6ash1bbjm6i4i3dd6ymxjgnyha7z5rlmyvfv1gbdy1"))))
(build-system gnu-build-system)
(arguments
`(;; No tests for libngspice exist.
@@ -1743,16 +1734,11 @@ high-performance parallel differential evolution (DE) optimization algorithm.")
(substitute* "man/man1/Makefile.in"
(("^man_MANS = ngspice\\.1 ngnutmeg\\.1 ngsconvert\\.1 ngmultidec\\.1")
"man_MANS = "))))
- (add-after 'install 'delete-scripts-and-config
+ (add-after 'install 'delete-scripts
(lambda* (#:key outputs #:allow-other-keys)
(delete-file-recursively
(string-append (assoc-ref outputs "out")
- "/share/ngspice/scripts"))
- ;; This file is autogenerated by the configure script and should
- ;; not be distributed. It could be removed in ngspice 35. See
- ;; https://bugs.archlinux.org/task/70569 for reference.
- (delete-file (string-append (assoc-ref outputs "out")
- "/include/config.h")))))
+ "/share/ngspice/scripts")))))
#:configure-flags
(list "--enable-openmp"
"--enable-ciderlib"
@@ -2049,14 +2035,14 @@ parallel computing platforms. It also supports serial execution.")
(define-public librepcb
(package
(name "librepcb")
- (version "0.1.4")
+ (version "0.1.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://download.librepcb.org/releases/"
version "/librepcb-" version "-source.zip"))
(sha256
- (base32 "1b5dkanz3q0y5ag80w0l85hn7axrachb5m9zvyv4zvzrfy09wa88"))))
+ (base32 "0smp1p7wnrj0vh4rmz1cr2krfawc2lzx0pbzmgyay7xdp6jxympr"))))
(build-system gnu-build-system)
(inputs
`(("qtbase" ,qtbase-5)
@@ -2863,3 +2849,225 @@ for hooking Linux system calls in user space. This is achieved by
hot-patching the machine code of the standard C library in the memory of
a process.")
(license license:bsd-2))))
+
+(define-public libigl
+ (package
+ (name "libigl")
+ (version "2.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libigl/libigl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "004a22ifq2vibgkgvrlyihqimpsfizvq5l448204kwfg3lkycajj"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ '("-DLIBIGL_USE_STATIC_LIBRARY=OFF"
+ "-DLIBIGL_BUILD_TESTS=ON"
+ "-DLIBIGL_BUILD_TUTORIALS=OFF"
+ "-DLIBIGL_EXPORT_TARGETS=ON"
+ ;; The following options disable tests for the corresponding libraries.
+ ;; The options do not affect whether the libraries are linked to
+ ;; libigl or not, they are used for tests.
+ "-DLIBIGL_WITH_COMISO=OFF"
+ "-DLIBIGL_WITH_CORK=OFF"
+ "-DLIBIGL_WITH_MATLAB=OFF"
+ "-DLIBIGL_WITH_MOSEK=OFF"
+ "-DLIBIGL_WITH_TRIANGLE=OFF" ;; Undefined reference to "triangulate".
+ "-DLIBIGL_WITH_OPENGL_GLFW_IMGUI=OFF")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-external
+ (lambda _
+ (setenv "HOME" (getcwd)) ;; cmake needs this to export modules
+ (mkdir "external")
+ (copy-recursively (assoc-ref %build-inputs "libigl-glad") "external/glad")
+ (copy-recursively (assoc-ref %build-inputs "libigl-stb") "external/stb")
+ (copy-recursively (assoc-ref %build-inputs "libigl-tetgen") "external/tetgen")
+ (copy-recursively (assoc-ref %build-inputs "libigl-predicates") "external/predicates")))
+ (add-after 'unpack-external 'patch-cmake
+ (lambda _
+ ;; Fix references to external libraries
+ (substitute* "cmake/libigl.cmake"
+ (("if\\(NOT TARGET Eigen3::Eigen\\)" all)
+ (string-append "find_package(Eigen3 CONFIG REQUIRED)\n" all))
+ (("if\\(NOT TARGET CGAL::CGAL\\)" all)
+ (string-append "find_package(CGAL CONFIG COMPONENTS Core)\n" all))
+ (("if\\(NOT TARGET tinyxml2\\)" all)
+ (string-append "find_package(tinyxml2 CONFIG REQUIRED)\n"
+ "if (NOT TARGET tinyxml2::tinyxml2)"))
+ (("if\\(NOT TARGET embree\\)" all)
+ (string-append "find_package(embree 3 CONFIG REQUIRED)\n" all))
+ (("if\\(NOT TARGET glfw\\)" all)
+ (string-append "find_package(glfw3 CONFIG REQUIRED)\n" all))
+ (("igl_download_glad\\(\\)" all) "")
+ (("igl_download_stb\\(\\)" all) "")
+ (("igl_download_tetgen\\(\\)" all) "")
+ (("igl_download_triangle\\(\\)" all) "")
+ (("igl_download_predicates\\(\\)" all) ""))
+ (substitute* "tests/CMakeLists.txt"
+ (("igl_download_test_data\\(\\)") "")
+ (("set\\(IGL_TEST_DATA.*")
+ (format #f "set(IGL_TEST_DATA ~a)\n"
+ (assoc-ref %build-inputs "libigl-test-data")))
+ (("igl_download_catch2\\(\\)") "find_package(Catch2 CONFIG REQUIRED)")
+ (("list\\(APPEND CMAKE_MODULE_PATH \\$\\{LIBIGL_EXTERNAL\\}/catch2/contrib\\)")
+ "")
+ (("add_subdirectory\\(\\$\\{LIBIGL_EXTERNAL\\}/catch2 catch2\\)") ""))
+ ;; Install otherwise missing headers
+ (substitute* "cmake/libigl.cmake"
+ (("install_dir_files\\(copyleft\\)" all)
+ (string-join (list all
+ "install_dir_files(copyleft/cgal)"
+ "install_dir_files(copyleft/opengl)"
+ "install_dir_files(copyleft/tetgen)"
+ "install_dir_files(embree)"
+ "install_dir_files(opengl)"
+ "install_dir_files(png)"
+ "install_dir_files(predicates)"
+ "install_dir_files(xml)")
+ "\n"))))))))
+ ;; XXX: Inputs are currently only used to build tests.
+ ;; We would need to patch the CMake recipe to build a shared library
+ ;; with all of these.
+ (inputs
+ `(("boost" ,boost)
+ ("catch2" ,catch-framework2)
+ ("cgal" ,cgal)
+ ("eigen" ,eigen)
+ ("embree" ,embree)
+ ("glfw" ,glfw)
+ ("gmp" ,gmp)
+ ("mesa" ,mesa)
+ ("mpfr" ,mpfr)
+ ("tinyxml2" ,tinyxml2)
+ ;; When updating this package, update commit fields below according to
+ ;; the hashes listed in "cmake/LibiglDownloadExternal.cmake".
+ ("libigl-test-data"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libigl/libigl-tests-data")
+ (commit "19cedf96d70702d8b3a83eb27934780c542356fe")))
+ (file-name (git-file-name "libigl-test-data" version))
+ (sha256 (base32 "1wxglrxw74xw4a4jmmjpm8719f3mnlbxbwygjb4ddfixxxyya4i2"))))
+ ("libigl-glad"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libigl/libigl-glad")
+ (commit "09b4969c56779f7ddf8e6176ec1873184aec890f")))
+ (file-name (git-file-name "libigl-glad" version))
+ (sha256 (base32 "0rwrs7513ylp6gxv7crjzflapcg9p7x04nzfvywgl665vl53rawk"))))
+ ("libigl-stb"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libigl/libigl-stb.git")
+ (commit "cd0fa3fcd90325c83be4d697b00214e029f94ca3")))
+ (file-name (git-file-name "libigl-stb" version))
+ (sha256 (base32 "0wwlb370z40y63ic3ny6q7lxibhixg2k1pjdkl4ymzv79zld28kj"))))
+ ("libigl-predicates"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libigl/libigl-predicates.git")
+ (commit "488242fa2b1f98a9c5bd1441297fb4a99a6a9ae4")))
+ (file-name (git-file-name "libigl-predicates" version))
+ (sha256 (base32 "13bd98g8lgcq37i3crj66433z09grnb2xjrcqpwqmyn147rp5wyh"))))
+ ;; TODO: Package tetgen separately from <http://www.tetgen.org>
+ ("libigl-tetgen"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libigl/tetgen.git")
+ (commit "4f3bfba3997f20aa1f96cfaff604313a8c2c85b6")))
+ (file-name (git-file-name "libigl-tetgen" version))
+ (sha256 (base32 "1k724syssw37py7kwmibk3sfwkkgyjyy7qkijnhn6rjm91g8qxsg"))))))
+ (home-page "https://libigl.github.io/")
+ (synopsis "Simple C++ geometry processing library")
+ (description "This library provides functionality for shape modelling,
+visualization, matrix manipulation.")
+ (license (list license:gpl3 license:mpl2.0))))
+
+(define-public prusa-slicer
+ (package
+ (name "prusa-slicer")
+ (version "2.3.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/prusa3d/PrusaSlicer")
+ (commit (string-append "version_" version))))
+ (file-name (git-file-name name version))
+ (sha256 (base32 "0w0synqi3iz9aigsgv6x1c6sg123fasbx19h4w3ic1l48r8qmpwm"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Prusa slicer bundles a lot of dependencies in src/ directory.
+ ;; Most of them contain prusa-specific modifications (e.g. avrdude),
+ ;; but others do not. Here we replace the latter with Guix packages.
+ ;; Remove bundled libraries that were not modified by Prusa Slicer developers.
+ (delete-file-recursively "src/hidapi")
+ (delete-file-recursively "src/eigen")
+ (delete-file-recursively "src/libigl/igl")
+ (substitute* "src/CMakeLists.txt"
+ (("add_subdirectory\\(libigl\\)" all)
+ (string-append
+ all "\ninclude_directories(libigl INTERFACE libigl::core)"))
+ (("add_subdirectory\\(hidapi\\)")
+ "pkg_check_modules(HIDAPI REQUIRED hidapi-hidraw)")
+ (("include_directories\\(hidapi/include\\)")
+ "include_directories()"))
+ (substitute* "src/slic3r/CMakeLists.txt"
+ (("add_library\\(libslic3r_gui.*" all)
+ (string-append
+ all
+ "\ntarget_include_directories(libslic3r_gui PUBLIC ${HIDAPI_INCLUDE_DIRS})\n"))
+ (("\\bhidapi\\b") "${HIDAPI_LIBRARIES}"))))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ '("-DSLIC3R_FHS=1" ;; Use The Filesystem Hierarchy Standard.
+ "-DSLIC3R_GTK=3" ;; Use GTK+
+ ;; Use wxWidgets 3.0.x.x to prevent GUI crashes when adding support enforcers.
+ "-DSLIC3R_WX_STABLE=1")))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("boost" ,boost)
+ ("cereal" ,cereal)
+ ("cgal" ,cgal)
+ ("curl" ,curl)
+ ("dbus" ,dbus)
+ ("eigen" ,eigen)
+ ("expat" ,expat)
+ ("glew" ,glew)
+ ("glib" ,glib)
+ ("gmp" ,gmp)
+ ("gtk" ,gtk+)
+ ("hidapi" ,hidapi)
+ ("ilmbase" ,ilmbase)
+ ("libigl" ,libigl)
+ ("libpng" ,libpng)
+ ("mesa" ,mesa)
+ ("mpfr" ,mpfr)
+ ("nlopt" ,nlopt)
+ ("openvdb" ,openvdb)
+ ("pango" ,pango)
+ ("tbb" ,tbb)
+ ("udev" ,eudev)
+ ("wxwidgets" ,wxwidgets)
+ ("zlib" ,zlib)))
+ (home-page "https://www.prusa3d.com/prusaslicer/")
+ (synopsis "G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)")
+ (description "PrusaSlicer takes 3D models (STL, OBJ, AMF) and converts them into
+G-code instructions for FFF printers or PNG layers for mSLA 3D printers.")
+ (license license:agpl3)))