aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/engineering.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/engineering.scm')
-rw-r--r--gnu/packages/engineering.scm314
1 files changed, 235 insertions, 79 deletions
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 911f519e2f..b2127ba45d 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -96,24 +96,38 @@
(arguments
'(#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'patch-paths
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (substitute* "librecad/src/lib/engine/rs_system.cpp"
- (("/usr/share") (string-append out "/share"))))))
- (replace 'configure
- (lambda* (#:key inputs #:allow-other-keys)
- (system* "qmake" (string-append "BOOST_DIR="
- (assoc-ref inputs "boost")))))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (share (string-append out "/share/librecad")))
- (mkdir-p bin)
- (install-file "unix/librecad" bin)
- (mkdir-p share)
- (copy-recursively "unix/resources" share)))))))
+ ;; Without this patch boost complains that "make_array" is not a
+ ;; member of "boost::serialization".
+ (add-after 'unpack 'patch-boost-error
+ (lambda _
+ (substitute* "librecad/src/lib/math/lc_quadratic.h"
+ (("#include \"rs_vector.h\"" line)
+ (string-append line
+ "\n#include <boost/serialization/array_wrapper.hpp>")))
+ (substitute* "librecad/src/lib/math/rs_math.cpp"
+ (("#include <boost/numeric/ublas/matrix.hpp>" line)
+ (string-append "#include <boost/serialization/array_wrapper.hpp>\n"
+ line)))
+ #t))
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "librecad/src/lib/engine/rs_system.cpp"
+ (("/usr/share") (string-append out "/share"))))))
+ (replace 'configure
+ (lambda* (#:key inputs #:allow-other-keys)
+ (system* "qmake" (string-append "BOOST_DIR="
+ (assoc-ref inputs "boost")))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (share (string-append out "/share/librecad")))
+ (mkdir-p bin)
+ (install-file "unix/librecad" bin)
+ (mkdir-p share)
+ (copy-recursively "unix/resources" share))
+ #t)))))
(inputs
`(("boost" ,boost)
("muparser" ,muparser)
@@ -185,14 +199,14 @@ utilities.")
(define-public pcb
(package
(name "pcb")
- (version "4.0.0")
+ (version "4.0.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/pcb/pcb/pcb-" version
"/pcb-" version ".tar.gz"))
(sha256
(base32
- "1i6sk8g8h9avms142wl07yv20m1cm4c3fq3v6hybrhdxs2n17plf"))))
+ "1a7rilp75faidny0r4fdwdxkflyrqp6svxv9lbg7h868293962iz"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -202,6 +216,14 @@ utilities.")
(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
@@ -292,7 +314,10 @@ featuring various improvements and bug fixes.")))
"fastcap-mulGlobal.patch"))))
(build-system gnu-build-system)
(native-inputs
- `(("texlive" ,texlive)
+ ;; FIXME: with texlive-tiny citation references are rendered as question
+ ;; marks. During the build warnings like these are printed:
+ ;; LaTeX Warning: Citation `nabors91' on page 2 undefined on input line 3.
+ `(("texlive" ,texlive-tiny)
("ghostscript" ,ghostscript)))
(arguments
`(#:make-flags '("CC=gcc" "RM=rm" "SHELL=sh" "all")
@@ -303,69 +328,70 @@ featuring various improvements and bug fixes.")))
#:phases
(modify-phases %standard-phases
(add-after 'build 'make-doc
- (lambda _
- (zero? (system* "make" "CC=gcc" "RM=rm" "SHELL=sh"
- "manual"))))
+ (lambda _
+ (zero? (system* "make" "CC=gcc" "RM=rm" "SHELL=sh"
+ "manual"))))
(add-before 'make-doc 'fix-doc
- (lambda _
- (substitute* "doc/Makefile" (("/bin/rm") (which "rm")))
- (substitute* (find-files "doc" "\\.tex")
- (("\\\\special\\{psfile=([^,]*),.*scale=([#0-9.]*).*\\}"
- all file scale)
- (string-append "\\includegraphics[scale=" scale "]{"
- file "}"))
- (("\\\\psfig\\{figure=([^,]*),.*width=([#0-9.]*in).*\\}"
- all file width)
- (string-append "\\includegraphics[width=" width "]{"
- file "}"))
- (("\\\\psfig\\{figure=([^,]*),.*height=([#0-9.]*in).*\\}"
- all file height)
- (string-append "\\includegraphics[height=" height "]{"
- file "}"))
- (("\\\\psfig\\{figure=([^,]*)\\}" all file)
- (string-append "\\includegraphics{" file "}")))
- (substitute* '("doc/mtt.tex" "doc/tcad.tex" "doc/ug.tex")
- (("^\\\\documentstyle\\[(.*)\\]\\{(.*)\\}"
- all options class)
- (string-append "\\documentclass[" options "]{"
- class "}\n"
- "\\usepackage{graphicx}\n"
- "\\usepackage{robinspace}"))
- (("\\\\setlength\\{\\\\footheight\\}\\{.*\\}" all)
- (string-append "%" all))
- (("\\\\setstretch\\{.*\\}" all)
- (string-append "%" all)))
- #t))
+ (lambda _
+ (substitute* "doc/Makefile" (("/bin/rm") (which "rm")))
+ (substitute* (find-files "doc" "\\.tex")
+ (("\\\\special\\{psfile=([^,]*),.*scale=([#0-9.]*).*\\}"
+ all file scale)
+ (string-append "\\includegraphics[scale=" scale "]{"
+ file "}"))
+ (("\\\\psfig\\{figure=([^,]*),.*width=([#0-9.]*in).*\\}"
+ all file width)
+ (string-append "\\includegraphics[width=" width "]{"
+ file "}"))
+ (("\\\\psfig\\{figure=([^,]*),.*height=([#0-9.]*in).*\\}"
+ all file height)
+ (string-append "\\includegraphics[height=" height "]{"
+ file "}"))
+ (("\\\\psfig\\{figure=([^,]*)\\}" all file)
+ (string-append "\\includegraphics{" file "}")))
+ (substitute* '("doc/mtt.tex" "doc/tcad.tex" "doc/ug.tex")
+ (("^\\\\documentstyle\\[(.*)\\]\\{(.*)\\}"
+ all options class)
+ (string-append "\\documentclass[" options "]{"
+ class "}\n"
+ "\\usepackage{graphicx}\n"
+ "\\usepackage{robinspace}"))
+ (("\\\\setlength\\{\\\\footheight\\}\\{.*\\}" all)
+ (string-append "%" all))
+ (("\\\\setstretch\\{.*\\}" all)
+ (string-append "%" all)))
+ #t))
(delete 'configure)
(add-before 'install 'clean-bin
- (lambda _
- (delete-file (string-append (getcwd) "/bin/README"))
- #t))
+ (lambda _
+ (delete-file (string-append (getcwd) "/bin/README"))
+ #t))
(add-before 'install 'make-pdf
- (lambda _
- (with-directory-excursion "doc"
- (and
- (every (lambda (file)
- (zero? (system* "dvips" file "-o")))
- (find-files "." "\\.dvi"))
- (every (lambda (file)
- (zero? (system* "ps2pdf" file)))
- '("mtt.ps" "ug.ps" "tcad.ps"))
- (zero? (system* "make" "clean"))))))
+ (lambda _
+ (setenv "HOME" "/tmp") ; FIXME: for texlive font cache
+ (with-directory-excursion "doc"
+ (and
+ (every (lambda (file)
+ (zero? (system* "dvips" file "-o")))
+ (find-files "." "\\.dvi"))
+ (every (lambda (file)
+ (zero? (system* "ps2pdf" file)))
+ '("mtt.ps" "ug.ps" "tcad.ps"))
+ (zero? (system* "make" "clean"))))))
(replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (data (string-append out "/share"))
- (bin (string-append out "/bin"))
- (doc (string-append data "/doc/" ,name "-" ,version))
- (examples (string-append doc "/examples")))
- (with-directory-excursion "bin"
- (for-each (lambda (f)
- (install-file f bin))
- (find-files "." ".*")))
- (copy-recursively "doc" doc)
- (copy-recursively "examples" examples)
- #t))))))
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (data (string-append out "/share"))
+ (bin (string-append out "/bin"))
+ (doc (string-append data "/doc/" ,name "-" ,version))
+ (examples (string-append doc "/examples")))
+ (with-directory-excursion "bin"
+ (for-each (lambda (f)
+ (install-file f bin))
+ (find-files "." ".*")))
+ (copy-recursively "doc" doc)
+ (copy-recursively "examples" examples)
+ #t))))))
(home-page "http://www.rle.mit.edu/cpg/research_codes.htm")
(synopsis "Multipole-accelerated capacitance extraction program")
(description
@@ -1623,3 +1649,133 @@ 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.19S")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/ra3xdh/qucs/releases/download/"
+ version "/qucs-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1bhahvdqmayaw0306fxz1ghmjhd4fq05yk3rk7zi0z703w5imgjv"))))
+ (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 "else QucsSettings\\.XyceExecutable = "
+ "\"/usr/local/Xyce-Release-6.2.0-OPENSOURCE/bin/runxyce"))
+ (string-append "QucsSettings.XyceExecutable = \""
+ (assoc-ref inputs "xyce-serial") "/bin/Xyce"))
+ (((string-append "else QucsSettings\\.XyceParExecutable = \"/usr/local"
+ "/Xyce-Release-6.2.0-OPENMPI-OPENSOURCE/bin/xmpirun"))
+ (string-append "QucsSettings.XyceParExecutable = \""
+ (assoc-ref inputs "mpi") "/bin/mpirun"))
+ (("%p")
+ (string-append "%p "(assoc-ref inputs "xyce-parallel") "/bin/Xyce"))
+ (("else QucsSettings\\.NgspiceExecutable = \"ngspice\"")
+ (string-append "QucsSettings.NgspiceExecutable = " "\""
+ (assoc-ref inputs "ngspice") "/bin/ngspice\"")))
+ (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-" ,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)
+ ("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+)))