diff options
author | Theodoros Foradis <theodoros@foradis.org> | 2017-10-27 17:18:19 +0300 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-11-16 10:53:06 +0100 |
commit | ef2c6b409568123e760a7dfa22d45fc09e713198 (patch) | |
tree | 5d5ab30ed3cbb84681a5963c6ac423a730d40287 | |
parent | 0b4dbb401cd94cd04eab3a25f80cbb3fcd3d1daf (diff) | |
download | guix-ef2c6b409568123e760a7dfa22d45fc09e713198.tar guix-ef2c6b409568123e760a7dfa22d45fc09e713198.tar.gz |
gnu: Add qucs-s.
* gnu/packages/engineering.scm (qucs-s): New variable.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r-- | gnu/packages/engineering.scm | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index d15c1ec275..b2127ba45d 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1649,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+))) |