diff options
Diffstat (limited to 'gnu/packages/engineering.scm')
-rw-r--r-- | gnu/packages/engineering.scm | 365 |
1 files changed, 193 insertions, 172 deletions
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index f62e31d631..ddac57ce8f 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015-2023 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016, 2018, 2020-2023 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 David Thompson <davet@gnu.org> @@ -302,112 +302,115 @@ utilities.") (home-page "https://github.com/lepton-eda/lepton-eda") (source (origin (method git-fetch) - (uri (git-reference (url home-page) (commit version))) + (uri (git-reference + (url home-page) + (commit version))) (sha256 (base32 "0kyq0g6271vlwraw98637fn8bq2l6q4rll6748nn8rwsmfz71d0m")) (file-name (git-file-name name version)))) + (arguments + (list + #:configure-flags + #~(let ((pcb #$(this-package-input "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") + "CFLAGS=-fcommon")) + #: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 #$output "/lib/libleptongui.so"))) + (substitute* '("libleptongui/scheme/schematic/ffi/gtk.scm.in" + "utils/attrib/lepton-attrib.scm") + (("@LIBGTK@") + (search-input-file inputs "/lib/libgtk-3.so"))) + (substitute* '("libleptongui/scheme/schematic/ffi/gobject.scm.in") + (("@LIBGOBJECT@") + (search-input-file inputs "/lib/libgobject-2.0.so"))) + (substitute* "liblepton/scheme/lepton/ffi.scm.in" + (("@LIBLEPTON@") + (string-append #$output "/lib/liblepton.so"))) + (substitute* "utils/attrib/lepton-attrib.scm" + (("@LIBLEPTONATTRIB@") + (string-append (assoc-ref outputs "out") + "/lib/libleptonattrib.so"))) + (substitute* "liblepton/scheme/lepton/log.scm.in" + (("@LIBGLIB@") + (search-input-file inputs "/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"))))) + (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\"~%"))))) + (add-after 'install 'compile-scheme-files + (lambda _ + (unsetenv "LIBLEPTONGUI") + (unsetenv "LIBLEPTON") + (unsetenv "LD_LIBRARY_PATH") + (invoke "make" "precompile")))))) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("desktop-file-utils" ,desktop-file-utils) - ("libtool" ,libtool) - ("gettext" ,gettext-minimal) - ("texinfo" ,texinfo) - ("groff" ,groff) - ("which" ,which) - ,@(package-native-inputs geda-gaf))) + (modify-inputs (package-native-inputs geda-gaf) + (prepend autoconf + automake + desktop-file-utils + libtool + gettext-minimal + texinfo + groff + which))) (inputs - `(("glib" ,glib) - ("gtk" ,gtk+) - ("gtksheet" ,gtksheet) - ("guile" ,guile-3.0) - ("shared-mime-info" ,shared-mime-info) - ("m4" ,m4) - ("pcb" ,pcb))) - (arguments - `(#: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") - "CFLAGS=-fcommon")) - #: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" - "utils/attrib/lepton-attrib.scm") - (("@LIBGTK@") - (search-input-file inputs "/lib/libgtk-3.so"))) - (substitute* '("libleptongui/scheme/schematic/ffi/gobject.scm.in") - (("@LIBGOBJECT@") - (search-input-file inputs "/lib/libgobject-2.0.so"))) - (substitute* "liblepton/scheme/lepton/ffi.scm.in" - (("@LIBLEPTON@") - (string-append (assoc-ref outputs "out") - "/lib/liblepton.so"))) - (substitute* "utils/attrib/lepton-attrib.scm" - (("@LIBLEPTONATTRIB@") - (string-append (assoc-ref outputs "out") - "/lib/libleptonattrib.so"))) - (substitute* "liblepton/scheme/lepton/log.scm.in" - (("@LIBGLIB@") - (search-input-file inputs "/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))))) + (list glib + gtk+ + gtksheet + guile-3.0 + shared-mime-info + m4 + pcb)) (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 @@ -417,71 +420,85 @@ materials (BOM) generation, netlisting into over 20 netlist formats, analog and digital simulation, and printed circuit board (PCB) layout, and many other features."))) +(define-public librnd + (package + (name "librnd") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (string-append "http://www.repo.hu/projects/librnd/releases/" + "librnd-" version ".tar.bz2")) + (sha256 + (base32 + "1fqh7gf9imhghlfajrsgzjx61mynfmdasciwpcajk7pn85d4ymql")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #false ;no check target + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'cc-is-gcc + (lambda _ (setenv "CC" "gcc"))) + (replace 'configure + ;; The configure script doesn't tolerate most of our configure flags. + (lambda _ + (invoke "sh" "configure" + (string-append "--prefix=" #$output))))))) + (inputs + (list gd gtk glib glu)) + (native-inputs + (list pkg-config)) + (home-page "http://repo.hu/projects/librnd/") + (synopsis "Two-dimensional CAD engine") + (description "This is a flexible, modular two-dimensional CAD engine +@itemize +@item with transparent multiple GUI toolkit support; +@item a flexible, dynamic menu system; +@item a flexible, dynamic configuration system; and +@item support for user scripting in a dozen languages. +@end itemize") + (license license:gpl2+))) + (define-public pcb (package (name "pcb") - (version "4.0.2") + (version "4.3.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/pcb/pcb/pcb-" version "/pcb-" version ".tar.gz")) (sha256 (base32 - "1a7rilp75faidny0r4fdwdxkflyrqp6svxv9lbg7h868293962iz")))) + "0ppv8cblw0h70laly4zp8gmbxkbzzhbbjgw13pssgaw4mx32z1df")))) (build-system gnu-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'use-wish8.6 - (lambda _ - (substitute* "configure" - (("wish85") "wish8.6")) - #t)) - ;; It checks for "xhost", which we don't have. This shouldn't - ;; matter, because the test is supposed to be skipped, but it causes - ;; "run_tests.sh" (and thus the "check" phase) to fail. - (add-after 'unpack 'fix-check-for-display - (lambda _ - (substitute* "tests/run_tests.sh" - (("have_display=no") "have_display=yes")) - #t)) - (add-after 'install 'wrap - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails. Pending a - ;; fix of the mesa package we wrap the pcb executable such that - ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH. - (let* ((out (assoc-ref outputs "out")) - (path (dirname - (search-input-file inputs "/lib/libudev.so")))) - (wrap-program (string-append out "/bin/pcb") - `("LD_LIBRARY_PATH" ":" prefix (,path)))) - #t)) - (add-before 'check 'pre-check - (lambda _ - (system "Xvfb :1 &") - (setenv "DISPLAY" ":1") - #t))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1")))))) (inputs - `(("dbus" ,dbus) - ("mesa" ,mesa) - ("udev" ,eudev) ;FIXME: required by mesa - ("glu" ,glu) - ("gd" ,gd) - ("gtk" ,gtk+-2) - ("gtkglext" ,gtkglext) - ("shared-mime-info" ,shared-mime-info) - ("tk" ,tk))) + (list dbus + mesa + glu + gd + gtk+-2 + gtkglext + shared-mime-info + tk)) (native-inputs - `(("pkg-config" ,pkg-config) - ("intltool" ,intltool) - ("bison" ,bison) - ("desktop-file-utils" ,desktop-file-utils) - ("flex" ,flex) - ;; For tests - ("imagemagick" ,imagemagick) - ("gerbv" ,gerbv) - ("ghostscript" ,ghostscript) - ("xvfb" ,xorg-server-for-tests))) + (list bison + desktop-file-utils + flex + intltool + pkg-config + ;; For tests + imagemagick + gerbv + ghostscript + xorg-server-for-tests)) (home-page "http://pcb.geda-project.org/") (synopsis "Design printed circuit board layouts") (description @@ -494,26 +511,30 @@ optimizer; and it can produce photorealistic and design review images.") (define-public pcb-rnd (package (inherit pcb) (name "pcb-rnd") - (version "2.2.4") + (version "3.1.0") (source (origin (method url-fetch) (uri (string-append "http://repo.hu/projects/pcb-rnd/releases/" "pcb-rnd-" version ".tar.gz")) (sha256 (base32 - "06ylc2rd4yvzp3krk62q9dbi13h0yq1x257fbjkh10vfjn0ga5c2")))) + "0yw4sf4qrmmai48f3f5byn2fphc453myjszh3sy9z0dnfcz3x7fw")))) (arguments - `(#:tests? #f ; no check target - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'cc-is-gcc - (lambda _ (setenv "CC" "gcc") #t)) - (replace 'configure - ;; The configure script doesn't tolerate most of our configure flags. - (lambda* (#:key outputs #:allow-other-keys) - (invoke "sh" "configure" - (string-append "--prefix=" - (assoc-ref outputs "out")))))))) + (list + #:tests? #false ;no check target + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'cc-is-gcc + (lambda _ (setenv "CC" "gcc"))) + (replace 'configure + ;; The configure script doesn't tolerate most of our configure flags. + (lambda _ + (setenv "LIBRND_PREFIX" #$(this-package-input "librnd")) + (invoke "sh" "configure" + (string-append "--prefix=" #$output))))))) + (inputs + (modify-inputs (package-inputs pcb) + (append librnd))) (home-page "http://repo.hu/projects/pcb-rnd/") (description "PCB RND is a fork of the GNU PCB circuit board editing tool featuring various improvements and bug fixes."))) @@ -947,7 +968,7 @@ Emacs).") (define-public kicad (package (name "kicad") - (version "7.0.0") + (version "7.0.1") (source (origin (method git-fetch) (uri (git-reference @@ -955,7 +976,7 @@ Emacs).") (commit version))) (sha256 (base32 - "1zgpj1rvf97qv36hg4dja46pbzyixlh2g04wlh7cizcrs16b9mzw")) + "021safxvyq9qzs08jy3jvpazmhvix4kyl05s9y9hwmyzdmdl2smn")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments @@ -1055,7 +1076,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "0xsj3fl6gkvyr97gx3nvy4ylcr6sc4byj4hbgcdwl2zx3wm02ifz")))) + "1cy9w10wzdjm9z9vzv88ija6l3pp894hwcgz5jggjrnyazhpklvj")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DBUILD_FORMATS=html") @@ -1089,7 +1110,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "1r87xr1453dpfglkg1m4p5d7kcv9gxls1anwk3vp2yppnwz24ydm")))) + "14c5gci13m30xv0cmic5jxsmfx9lq3fnd8hyq3mmgkrw7443zy30")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no tests exist @@ -1118,7 +1139,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "1akhifnjm8jvqsvscn2rr1wpzrls73bpdc6sk40355r1in2djmry")))) + "0k0z40wmaq665hjxb6kp1yl3v7clxz49r6ki0chyphsxv1cnixmy")))) (synopsis "Official KiCad footprint libraries") (description "This package contains the official KiCad footprint libraries."))) @@ -1135,7 +1156,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "1qw5xm0wbhv6gqvd8mn0jp4abjbizrkx79r6y8f6911mkzi47r6n")))) + "0nzi7ijfb3rjm98kaa9va2mkh0nfzpq4vfhxkq8j18qhx24h5c8v")))) (synopsis "Official KiCad 3D model libraries") (description "This package contains the official KiCad 3D model libraries."))) |