X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/cb014f64a50c3c832858b8927de334740f83b8a5..2cae49f9c99e25686858d4a0e423ebd97bc77b2f:/gnu/packages/engineering.scm diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index f80ea02e30..bd89cef70c 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -18,6 +18,8 @@ ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Marius Bakke ;;; Copyright © 2020 Ekaitz Zarraga +;;; Copyright © 2020 B. Wilson +;;; Copyright © 2020 Vinicius Monego ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,6 +56,7 @@ #:use-module (gnu packages algebra) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bdw-gc) #:use-module (gnu packages bison) #:use-module (gnu packages boost) #:use-module (gnu packages check) @@ -61,6 +64,8 @@ #:use-module (gnu packages commencement) #:use-module (gnu packages compression) #:use-module (gnu packages curl) + #:use-module (gnu packages dejagnu) + #:use-module (gnu packages digest) #:use-module (gnu packages documentation) #:use-module (gnu packages flex) #:use-module (gnu packages fontutils) @@ -82,12 +87,17 @@ #:use-module (gnu packages image) #:use-module (gnu packages image-processing) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages libevent) #:use-module (gnu packages linux) ;FIXME: for pcb + #:use-module (gnu packages lisp) #:use-module (gnu packages m4) #:use-module (gnu packages maths) + #:use-module (gnu packages man) #:use-module (gnu packages multiprecision) #:use-module (gnu packages mpi) #:use-module (gnu packages ncurses) + #:use-module (gnu packages parallel) + #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) @@ -101,8 +111,10 @@ #:use-module (gnu packages tls) #:use-module (gnu packages tex) #:use-module (gnu packages version-control) + #:use-module (gnu packages web) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xml) + #:use-module (gnu packages openkinect) #:use-module (gnu packages xorg)) (define-public librecad @@ -258,14 +270,14 @@ utilities.") (package (inherit geda-gaf) (name "lepton-eda") - (version "1.9.9-20191003") + (version "1.9.11-20200604") (home-page "https://github.com/lepton-eda/lepton-eda") (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit version))) (sha256 (base32 - "08cc3zfk84qq9mrkc9pp4r9jlavvm01wwy0yd9frql68w2zw6mip")) + "091y8h7wcr9smwhb1wf12sj27n5jrannbj3y6qq3q2gwiifiz8sd")) (file-name (git-file-name name version)))) (native-inputs `(("autoconf" ,autoconf) @@ -414,14 +426,14 @@ optimizer; and it can produce photorealistic and design review images.") (define-public pcb-rnd (package (inherit pcb) (name "pcb-rnd") - (version "1.1.3") + (version "2.2.3") (source (origin (method url-fetch) (uri (string-append "http://repo.hu/projects/pcb-rnd/releases/" "pcb-rnd-" version ".tar.gz")) (sha256 (base32 - "0pycynla60b96jkb6fh6f4sx663pqbzjwnixhw5ym8sym2absm09")))) + "0j650498d87b4xsggzc0xlk73k0hhj43wfy45qz2lcn0xc3bks1m")))) (arguments `(#:tests? #f ; no check target #:phases @@ -535,7 +547,7 @@ featuring various improvements and bug fixes."))) (copy-recursively "doc" doc) (copy-recursively "examples" examples) #t)))))) - (home-page "http://www.rle.mit.edu/cpg/research_codes.htm") + (home-page "https://www.rle.mit.edu/cpg/research_codes.htm") (synopsis "Multipole-accelerated capacitance extraction program") (description "Fastcap is a capacitance extraction program based on a @@ -583,7 +595,7 @@ multipole-accelerated algorithm.") (copy-recursively "doc" doc) (copy-recursively "examples" examples) #t)))))) - (home-page "http://www.rle.mit.edu/cpg/research_codes.htm") + (home-page "https://www.rle.mit.edu/cpg/research_codes.htm") (synopsis "Multipole-accelerated inductance analysis program") (description "Fasthenry is an inductance extraction program based on a @@ -597,7 +609,7 @@ multipole-accelerated algorithm.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/fritzing/fritzing-app.git") + (url "https://github.com/fritzing/fritzing-app") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -646,7 +658,7 @@ multipole-accelerated algorithm.") ,(origin (method git-fetch) (uri (git-reference - (url "https://github.com/fritzing/fritzing-parts.git") + (url "https://github.com/fritzing/fritzing-parts") (commit version))) (file-name (git-file-name "fritzing-parts" version)) (sha256 @@ -704,7 +716,7 @@ as well as pick-place files.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/erichVK5/translate2geda.git") + (url "https://github.com/erichVK5/translate2geda") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -754,12 +766,7 @@ fonts to gEDA.") (sha256 (base32 "0ryv2hcbrwqc087w7rrs4a2irkcpmqync00g4dh8n7jn10w2jkim")) - (file-name (git-file-name name version)) - (snippet - ;; Remove bundled catch since we provide our own. - '(begin - (delete-file "libfive/test/catch.hpp") - #t)))) + (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments `(#:test-target "libfive-test" @@ -768,19 +775,11 @@ fonts to gEDA.") (add-after 'unpack 'remove-native-compilation (lambda _ (substitute* "CMakeLists.txt" (("-march=native") "")) - #t)) - (add-after 'unpack 'find-catch - (lambda* (#:key inputs #:allow-other-keys) - (setenv "CPLUS_INCLUDE_PATH" - (string-append (assoc-ref inputs "catch") - "/include/catch:" - (or (getenv "CPLUS_INCLUDE_PATH") ""))) #t))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("boost" ,boost) - ("catch" ,catch-framework2) ("libpng" ,libpng) ("qtbase" ,qtbase) ("eigen" ,eigen) @@ -796,20 +795,65 @@ language.") (license (list license:mpl2.0 ;library license:gpl2+))))) ;Guile bindings and GUI +(define-public inspekt3d + (let ((commit "703f52ccbfedad2bf5240bf8183d1b573c9d54ef") + (revision "0")) + (package + (name "inspekt3d") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/kavalogic-inc/inspekt3d.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0lan6930g5a9z4ack9jj0zdd0mb2s6q2xzpiwcjdc3pvl9b1nbw4")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-libfive-guile-location + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "inspekt3d/library.scm" + (("\"libfive-guile") + (string-append "\"" + (assoc-ref inputs "libfive") + "/lib/libfive-guile"))) + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("mesa" ,mesa) + ("guile" ,guile-2.2))) + (propagated-inputs + `(("libfive" ,libfive) + ("guile-opengl" ,guile-opengl))) + (home-page "https://gitlab.com/kavalogic-inc/inspekt3d/") + (synopsis "Lightweight 3D viewer for Libfive written in Guile Scheme") + (description + "Inspekt3d is a lightweight 3D viewer for Libfive written in Guile Scheme. +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") - (version "5.1.5") + (version "5.1.6") (source (origin - (method url-fetch) - (file-name (string-append name "-" version ".tar.xz")) - (uri (string-append - "https://launchpad.net/kicad/" (version-major version) - ".0/" version "/+download/kicad-" version ".tar.xz")) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/kicad/code/kicad.git") + (commit version))) (sha256 - (base32 "0x3417f2pa7p65s9f7l49rqbnrzy8gz6i0n07mlbxqbnm0fmlql0")))) + (base32 "1pa3z0h0679jmgxlzc833h6q85b5paxdp69kf2h93vkaryj58622")) + (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments `(#:out-of-source? #t @@ -890,7 +934,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (define kicad-i18n (package (name "kicad-i18n") - (version "5.1.5") + (version (package-version kicad)) (source (origin (method git-fetch) (uri (git-reference @@ -899,7 +943,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "1rfpifl8vky1gba2angizlb2n7mwmsiai3r6ip6qma60wdj8sbd3")))) + "0qryi8xjm23ka363zfl7bbga0v5c31fr3d4nyxp3m168vkv9zhha")))) (build-system cmake-build-system) (arguments `(#:phases @@ -908,7 +952,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (delete 'check)))) (native-inputs `(("gettext" ,gettext-minimal))) - (home-page "https://kicad-pcb.org/") + (home-page (package-home-page kicad)) (synopsis "KiCad GUI translations") (description "This package contains the po files that are used for the GUI translations for KiCad.") @@ -920,20 +964,20 @@ translations for KiCad.") (define-public kicad-symbols (package (name "kicad-symbols") - (version "5.1.5") + (version (package-version kicad)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/KiCad/kicad-symbols.git") + (url "https://github.com/KiCad/kicad-symbols") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "048b07ffsaav1ssrchw2p870lvb4rsyb5vnniy670k7q9p16qq6h")))) + "12w3rdy085drlikkpb27n9ni7cyg9l0pqy7hnr86cxjcw3l5wcx6")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no tests exist - (home-page "https://kicad-pcb.org/") + (home-page (package-home-page kicad)) (synopsis "Official KiCad schematic symbol libraries") (description "This package contains the official KiCad schematic symbol libraries.") @@ -949,16 +993,16 @@ libraries.") (package (inherit kicad-symbols) (name "kicad-footprints") - (version "5.1.5") + (version (package-version kicad)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/KiCad/kicad-footprints.git") + (url "https://github.com/KiCad/kicad-footprints") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "1c4whgn14qhz4yqkl46w13p6rpv1k0hsc9s9h9368fxfcz9knb2j")))) + "1kmf91a5mmvj9izrv40mkaw1w36yjgn8daczd9rq2wlmd0rdp1zx")))) (synopsis "Official KiCad footprint libraries") (description "This package contains the official KiCad footprint libraries."))) @@ -966,16 +1010,16 @@ libraries.") (package (inherit kicad-symbols) (name "kicad-packages3d") - (version "5.1.5") + (version (package-version kicad)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/KiCad/kicad-packages3d.git") + (url "https://github.com/KiCad/kicad-packages3d") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "0cff2ms1bsw530kqb1fr1m2pjixyxzwa81mxgac3qpbcf8fnpvaz")))) + "0b9jglf77fy0n0r8xs4yqkv6zvipyfvp0z5dnqlzp32csy5aqpi1")))) (synopsis "Official KiCad 3D model libraries") (description "This package contains the official KiCad 3D model libraries."))) @@ -983,16 +1027,16 @@ libraries.") (package (inherit kicad-symbols) (name "kicad-templates") - (version "5.1.5") + (version (package-version kicad)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/KiCad/kicad-templates.git") + (url "https://github.com/KiCad/kicad-templates") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "0cs3bm3zb5ngw5ldn0lzw5bvqm4kvcidyrn76438alffwiz2b15g")))) + "1hppcsrkn4dk6ggby6ckh0q65qxkywrbyxa4lwpaf7pxjyv498xg")))) (synopsis "Official KiCad project and worksheet templates") (description "This package contains the official KiCad project and worksheet templates."))) @@ -1024,15 +1068,14 @@ the 'showing the effect of'-style of operation.") (define-public volk (package (name "volk") - (version "2.2.1") + (version "2.3.0") (source (origin (method url-fetch) (uri (string-append "https://www.libvolk.org/releases/volk-" version ".tar.gz")) (sha256 - (base32 - "1wz5nhmw6np8ka30pgy1qnima3rk2ksln4klfhrj7wah3fian0k9")))) + (base32 "1pjxz3piwy49njj5y2zk437prwkv9lfs5g48577jj3kcsg766vi3")))) (build-system cmake-build-system) (arguments `(#:phases @@ -1055,16 +1098,45 @@ the 'showing the effect of'-style of operation.") (,(string-append python "/bin:"))))) #t))))) (inputs - `(("boost" ,boost))) - (native-inputs - `(("python" ,python-wrapper) + `(("boost" ,boost) + ("python" ,python-wrapper) ("python-mako" ,python-mako))) (home-page "https://www.libvolk.org/") (synopsis "Vector-Optimized Library of Kernels") (description - "@code{volk} contains procedures with machine-specific optimizations -for mathematical functions. It also provides an machine-independent -interface to select the best such procedures to use on a given system.") + "@acronym{VOLK, Vector-Optimized Library of Kernels} contains procedures +with machine-specific optimizations for mathematical functions. It also +provides a machine-independent interface to select the best such procedures to +use on a given system.") + (license license:gpl3+))) + +(define-public libredwg + (package + (name "libredwg") + (version "0.11") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/libredwg/libredwg-" + version ".tar.xz")) + (sha256 + (base32 "1vd7ii32k5447z7k4w9s005hv1ffpj6dyf1w40x6c53qksrblny2")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--disable-bindings"))) + (native-inputs + `(("libxml2" ,libxml2) + ("parallel" ,parallel) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("python-libxml2" ,python-libxml2))) + (inputs + `(("pcre2" ,pcre2))) + (home-page "https://www.gnu.org/software/libredwg/") + (synopsis "C library to handle DWG (CAD-related) files") + (description + "GNU LibreDWG is a C library to handle DWG files. It aims to be a free +replacement for the OpenDWG libraries.") (license license:gpl3+))) (define-public minicom @@ -1073,25 +1145,36 @@ interface to select the best such procedures to use on a given system.") (version "2.7.1") (source (origin - (method url-fetch) - (uri (string-append "https://alioth.debian.org/frs/download.php/" - "file/4215/" name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://salsa.debian.org/minicom-team/minicom.git") + (commit (string-append "v" version)))) (sha256 - (base32 - "1wa1l36fa4npd21xa9nz60yrqwkk5cq713fa3p5v0zk7g9mq6bsk")))) + (base32 "0f36wv015zpz1x895qv0z6marlynzyh0d5mfkyd7lfyy2xd1i2w0")) + (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 'patch-lock-check + (replace 'bootstrap + ;; autogen.sh needlessly hard-codes aclocal-1.14. + (lambda _ + (invoke "autoreconf" "-vif") + #t)) + (add-before 'configure 'patch-lock-check (lambda _ (substitute* "configure" (("test -d [$]UUCPLOCK") "true")) #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config))) (inputs `(("ncurses" ,ncurses))) - (home-page "https://alioth.debian.org/projects/minicom/") + (home-page "https://salsa.debian.org/minicom-team/minicom") (synopsis "Serial terminal emulator") (description "@code{minicom} is a serial terminal emulator.") (license license:gpl2+))) @@ -1334,7 +1417,7 @@ bindings for Python, Java, OCaml and more.") (define-public radare2 (package (name "radare2") - (version "4.2.1") + (version "4.4.0") (source (origin (method git-fetch) (uri (git-reference @@ -1342,39 +1425,37 @@ bindings for Python, Java, OCaml and more.") (commit version))) (sha256 (base32 - "14b9433cgc2nabhz836zfgvgh2dwailcmvy05krsa0inmzbvx9fg")) - (file-name (git-file-name name version)) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "libr/asm/p/Makefile" - (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) ")) - (substitute* "libr/parse/p/Makefile" - (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) ")) - (substitute* "libr/bin/p/Makefile" - (("LDFLAGS\\+=") "LDFLAGS+=-Wl,-rpath=$(LIBDIR) ")) - #t)))) + "0gwdnrnk7wdgkajp2qwg4fyplh7nsbmf01bzx07px6xmiscd9z2s")) + (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments '(#:tests? #f ; tests require git and network access #:phases (modify-phases %standard-phases (add-before 'configure 'mklibdir - (lambda* (#:key inputs #:allow-other-keys) - (mkdir-p (string-append (assoc-ref %outputs "out") "/lib")) + (lambda* (#:key inputs outputs #:allow-other-keys) + (mkdir-p (string-append (assoc-ref outputs "out") "/lib")) #t))) #:configure-flags - (list "--with-sysmagic" "--with-syszip" "--with-openssl" - "--without-nonpic" "--with-rpath" "--with-syscapstone") + (list "--with-openssl" + "--with-rpath" + "--with-syscapstone" + "--with-sysmagic" + "--with-syszip" + "--with-sysxxhash") #:make-flags (list "CC=gcc"))) + ;; TODO: Add gmp and libzip and make the build system actually find them. (inputs - `(("openssl" ,openssl) - ("zip" ,zip) - ("gmp" ,gmp) - ("capstone" ,capstone))) + `(("capstone" ,capstone) + ("libuv" ,libuv) + ("openssl" ,openssl) + ("zip" ,zip))) (native-inputs `(("pkg-config" ,pkg-config))) + (propagated-inputs + ;; In the Libs: section of r_hash.pc. + `(("xxhash" ,xxhash))) (home-page "https://radare.org/") (synopsis "Reverse engineering framework") (description @@ -2047,17 +2128,18 @@ simulator backends @code{Qucsator}, @code{ngspice} and @code{Xyce}.") (define-public librepcb (package (name "librepcb") - (version "0.1.3") + (version "0.1.4") (source (origin (method url-fetch) (uri (string-append "https://download.librepcb.org/releases/" version "/librepcb-" version "-source.zip")) (sha256 - (base32 "1ich849dsx2hmcwlwbry4mkg374n940l3hy6srh4qms2rm7vd7x0")))) + (base32 "1b5dkanz3q0y5ag80w0l85hn7axrachb5m9zvyv4zvzrfy09wa88")))) (build-system gnu-build-system) (inputs `(("qtbase" ,qtbase) + ("qtsvg" ,qtsvg) ("zlib" ,zlib))) (native-inputs `(("qttools" ,qttools) ; for lrelease @@ -2102,7 +2184,7 @@ editors.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/markwal/GPX.git") + (url "https://github.com/markwal/GPX") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -2174,7 +2256,7 @@ simulation.") (define-public cutter (package (name "cutter") - (version "1.10.1") + (version "1.10.3") (source (origin (method git-fetch) @@ -2183,8 +2265,7 @@ simulation.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1gvsrcskcdd1hxrjpkpc657anmfs25f174vxk4wzvn385rnmrxd3")))) + (base32 "0qj8jyij02nif4jpirl09ygwnv8a9zi3vkb5sf5s8mg7qwlpnvyk")))) (build-system gnu-build-system) (arguments `(#:phases @@ -2193,8 +2274,8 @@ simulation.") (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) (radare2 (assoc-ref inputs "radare2"))) - ;; fix pkg-config detection ./src/lib_radare2.pri:PREFIX=/usr/lib - ;; override `qmake PREFIX=` + ;; Fix pkg-config detection ./src/lib_radare2.pri:PREFIX=/usr/lib + ;; override `qmake PREFIX=`. (substitute* "./src/lib_radare2.pri" (("PREFIX") "R2PREFIX") (("R2PREFIX=/usr") (string-append "R2PREFIX=" radare2))) @@ -2224,7 +2305,7 @@ engineers for reverse engineers.") (source (origin (method git-fetch) - (uri (git-reference (url "https://github.com/3MFConsortium/lib3mf.git") + (uri (git-reference (url "https://github.com/3MFConsortium/lib3mf") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -2263,7 +2344,9 @@ specification can be downloaded at @url{http://3mf.io/specification/}.") ".src.tar.gz")) (sha256 (base32 - "0nbgk5q5pgnw53la0kccdcpz2f4xf6d6076rkn0q08z57hkc85ha")))) + "0nbgk5q5pgnw53la0kccdcpz2f4xf6d6076rkn0q08z57hkc85ha")) + (patches (search-patches + "openscad-parser-boost-1.72.patch")))) (build-system cmake-build-system) (inputs `(("boost" ,boost) @@ -2327,7 +2410,7 @@ full programmatic control over your models.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/FreeCAD/FreeCAD.git") + (url "https://github.com/FreeCAD/FreeCAD") (commit version))) (modules '((guix build utils))) (snippet @@ -2470,7 +2553,7 @@ interpolation toolkit.") (source (origin (method git-fetch) - (uri (git-reference (url "https://github.com/Heeks/libarea.git") + (uri (git-reference (url "https://github.com/Heeks/libarea") (commit commit))) (file-name (git-file-name name version)) (sha256 @@ -2511,7 +2594,7 @@ operations.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/FreeSpacenav/libspnav.git") + (url "https://github.com/FreeSpacenav/libspnav") (commit (string-append "libspnav-" version)))) (sha256 (base32 @@ -2557,11 +2640,12 @@ official SDK.") (base32 "01wb70m48xh5gwhv60a5brv4sxl0i0rh038w32cgnlxn5x86s9f1")))) (build-system gnu-build-system) (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs `(("mesa" ,mesa) ("glu" ,glu) ("glut" ,freeglut) - ("gtk" ,gtk+-2) - ("pkg-config" ,pkg-config))) + ("gtk" ,gtk+-2))) (arguments `(#:tests? #f ;no tests #:phases @@ -2594,3 +2678,144 @@ fraction of comparable file formats (3DS, STL, COLLADA...), and the format is accessible through a simple API") (license license:zlib) (home-page "http://openctm.sourceforge.net/")))) + +(define-public lib3ds + (package + (name "lib3ds") + (version "1.3.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://storage.googleapis.com/google-code-archive-downloads" + "/v2/code.google.com/lib3ds/lib3ds-" version ".zip")) + (sha256 + (base32 "1qr9arfdkjf7q11xhvxwzmhxqz3nhcjkyb8zzfjpz9jm54q0rc7m")))) + (build-system gnu-build-system) + (native-inputs + `(("unzip" ,unzip))) + (home-page "https://code.google.com/archive/p/lib3ds") + (synopsis "3DS format file toolkit") + (description "Lib3ds is a toolkit for handling the 3DS format for 3D +model files. Its main goal is to simplify the creation of 3DS import and +export filters.") + (license license:lgpl2.1+))) + +(define-public meshlab + (package + (name "meshlab") + (version "2020.06") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cnr-isti-vclab/meshlab") + (commit (string-append "Meshlab-" version)) + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1cgx24wxh2ah5pff51rcrk6x8qcdjpkxcdak7s4cfzmxvjlshydd")))) + (build-system cmake-build-system) + (inputs + `(("qtbase" ,qtbase) + ("qtscript" ,qtscript) + ("qtxmlpatterns" ,qtxmlpatterns) + ("mesa" ,mesa) + ("glu" ,glu) + ("glew" ,glew) + ("muparser" ,muparser) + ("gmp" ,gmp) + ("eigen" ,eigen) + ("libfreenect" ,libfreenect) + ("lib3ds" ,lib3ds) + ("openctm" ,openctm) + ;; FIXME: Compilation fails with system qhull: + ;; https://github.com/cnr-isti-vclab/meshlab/issues/678 + ;; ("qhull" ,qhull) + )) + (arguments + `(#:tests? #f ; Has no tests + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'go-to-source-dir + (lambda _ (chdir "src") #t)) + (add-after 'install 'move-files + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") + "/lib"))) + (rename-file + (string-append lib "/meshlab/libmeshlab-common.so") + (string-append lib "/libmeshlab-common.so")) + #t)))))) + (synopsis "3D triangular mesh processing and editing software") + (home-page "https://www.meshlab.net/") + (description "MeshLab is a system for the processing and +editing of unstructured large 3D triangular meshes. It is aimed to help the +processing of the typical not-so-small unstructured models arising in 3D +scanning, providing a set of tools for editing, cleaning, healing, inspecting, +rendering and converting this kind of meshes. These tools include MeshLab +proper, a versatile program with a graphical user interface, and meshlabserver, +a program that can perform mesh processing tasks in batch mode, without a +GUI.") + (license license:gpl3+))) + +(define-public poke + ;; Upstream has yet to tag any releases. + (let ((commit "d33317a46e3b7c48130a471a48cbfea1abab70d8") + (revision "0")) + (package + (name "poke") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "git://git.savannah.gnu.org/poke.git") + (commit commit) + (recursive? #t))) + (sha256 + (base32 "1dd0r1x123bqi78lrsk58rvg9c9wka0kywdyzn7g3i4hkh54xb7d")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + ;; The GUI, which we elide, requires tcl and tk. + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake) + ;; Requires bison 3.6+ but we currently only have 3.5. + ;; Bison 3.6 will be available in the next core update. + ("bison-3.6" ,bison-3.6) + ("clisp" ,clisp) + ("dejagnu" ,dejagnu) + ("flex" ,flex) + ("gettext" ,gettext-minimal) + ("help2man" ,help2man) + ("libtool" ,libtool) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python-2" ,python-2) + ("python-3" ,python-3) + ("texinfo" ,texinfo))) + ;; FIXME: Enable NBD support by adding `libnbd' (currently unpackaged). + ;; FIXME: A "hyperlinks-capable" `libtexststyle' needed for the hserver. + (inputs `(("json-c" ,json-c) + ("libgc" ,libgc) + ("readline" ,readline))) + (arguments + ;; To build the GUI, add the `--enable-gui' configure flag. + ;; To enable the "hyperlink server", add the `--enable-hserver' flag. + `(#:configure-flags '("--enable-mi") + #:phases (modify-phases %standard-phases + ;; This is a non-trivial bootstrap that needs many of the + ;; native-inputs and thus must run after `patch-shebangs'. + (delete 'bootstrap) + (add-after 'patch-source-shebangs 'bootstrap + (lambda _ + (invoke "./bootstrap" "--no-git" + "--no-bootstrap-sync" + "--gnulib-srcdir=gnulib") + #t))))) + (home-page "http://jemarch.net/poke.html") + (synopsis "Interactive, extensible editor for binary data") + (description "GNU poke is an interactive, extensible editor for binary + data. Not limited to editing basic entities such as bits and bytes, it + provides a full-fledged procedural, interactive programming language designed + to describe data structures and to operate on them.") + (license license:gpl3+))))