diff mbox series

[bug#57774] Add qucs-s.

Message ID 875yhrgtrb.fsf@disroot.org
State New
Headers show
Series [bug#57774] Add qucs-s. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Garek Dyszel Sept. 13, 2022, 3:48 p.m. UTC
* gnu/packages/engineering.scm (qucs-s): New variable.
---
 gnu/packages/engineering.scm | 74 ++++++++++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)

Comments

\( Sept. 13, 2022, 4:12 p.m. UTC | #1
Hey,

On Tue Sep 13, 2022 at 4:48 PM BST, Garek Dyszel via Guix-patches via wrote:
> +    (outputs '("out"))

This line is redundant; ``out'' is implicit.

> +    (propagated-inputs (list ngspice))

Can you try to avoid propagating this somehow? Propagation is a last-resort
measure, and usually we try to do something like patching invocations of
external commands to refer to the full store path. (Although, looking at
the ``modify-phases'' below, it seems like you already do that, so I guess
you'll only need to move ``ngspice'' to ``inputs''.)

> +    (arguments
> +     `(;; There exists no "tests" target in the Makefile generated by

Please use the new style ``(list ...)'' instead of ```(...)''.

> +       (modify-phases %standard-phases

You'll need to gexp this under the new arguments style: ``#~(modify-phases ...)''.

> +             (with-directory-excursion "etc/xdg/qucs_s"
> +               (invoke "touch" "qucs_s.conf")
> +               ;; Specify where the ngspice executable is located.
> +               (invoke "sed" "-i"
> +                       (string-append "1iNgspiceExecutable=/gnu/store/"
> +                                      (assoc-ref inputs "ngspice")
> +                                      "/bin/ngspice") "qucs_s.conf")
> +               ;; Set the spice4qucs working directory to
> +               ;; ~/.qucs/spice4qucs.
> +               ;; (The default is /spice4qucs, which is rather
> +               ;; dangerous.)
> +               (invoke "sed" "-i" "2iS4Q_workdir=~/.qucs/spice4qucs"
> +                       "qucs_s.conf")))))))

This looks pretty redundant. Try using this instead:

> +               (call-with-output-file "etc/xdg/qucs_s/qucs_s.conf"
> +                 (cute format <>
> +                       "~
> +NgspiceExecutable=~a
> +S4Q_workdir=~/.qucs/spice4qucs~%"
> +                       (search-input-file inputs "bin/ngspice")))

And add this to ``arguments'':

  #:modules `((ice-9 format)
              (srfi srfi-26)
              ,@%gnu-build-system-modules)

to import ``format'' and ``cute'', respectively.

> +    (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 merges the power of SPICE and the simplicity of the Qucs
> +GUI.  Qucs intentionally uses its own SPICE incompatible simulation
> +kernel Qucsator.  It has advanced RF and AC domain simulation features,
> +but most of the existing industrial SPICE models are incompatible with
> +it.  Qucs-S is not a simulator by itself, but it requires to use a
> +simulation backend with it.  The schematic document format of Qucs and
> +Qucs-S are fully compatible.  Qucs-S can be used with the following
> +simulation kernels:
> +@itemize
> +@item Ngspice is recommended to use.  Ngspice is powerful
> +mixed-level/mixed-signal circuit simulator.  The most of industrial
> +SPICE models are compatible with Ngspice.  It has an excellent
> +performance for time-domain simulation of switching circuits and
> +powerful postprocessor.
> +@item XYCE is a new SPICE-compatible circuit simulator written by
> +Sandia from the scratch.  It supports basic SPICE simulation types and
> +has an advanced RF simulation features such as harmonic balance
> +simulation.
> +@item SpiceOpus is developed by the Faculty of Electrical Engineering
> +of the Ljubljana University.  It is based on the SPICE-3f5 code.
> +@item Backward compatible with Qucsator.
> +@end itemize")

I think this description would probably be better and far more succint as:

> +    (description
> +     "This package provides a fork of the Qucs cross-platform circuit
> +simulator, which allows the use of SPICE circuit simulation kernels
> +with the Qucs GUI.")

    -- (
Artyom V. Poptsov Sept. 13, 2022, 5:28 p.m. UTC | #2
Hello Garek Dyszel,

For the sake of completeness, I've tried to package "qucs-s" already:
  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=56768

Wasn't finished the process though due to issues and the lack of time,
but maybe two incomplete patches could be merged into a working one.

Thanks,

- Artyom
diff mbox series

Patch

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index a8b9f1e786..376cb7e8c1 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2006,6 +2006,80 @@  (define-public xyce-parallel
        ,@(alist-delete "trilinos"
                        (package-inputs xyce-serial))))))
 
+(define-public qucs-s
+  (package
+    (name "qucs-s")
+    (version "0.0.24")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ra3xdh/qucs_s")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1lbkaw0grw9w7d37z5dbhaqi8p57cpf9yp071zp6xrairkgimdx8"))))
+    (build-system qt-build-system)
+    (outputs '("out"))
+    (inputs (list qtbase-5 qtscript qtsvg-5))
+    (native-inputs (list qttools-5))
+    (propagated-inputs (list ngspice))
+    (arguments
+     `(;; There exists no "tests" target in the Makefile generated by
+       ;; CMake.
+       ;; No other tests provided.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'get-ngspice-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Adjust two lines in the ~/.config/qucs/qucs_s.conf
+             ;; file.
+             (mkdir-p "etc/xdg/qucs_s")
+             (with-directory-excursion "etc/xdg/qucs_s"
+               (invoke "touch" "qucs_s.conf")
+               ;; Specify where the ngspice executable is located.
+               (invoke "sed" "-i"
+                       (string-append "1iNgspiceExecutable=/gnu/store/"
+                                      (assoc-ref inputs "ngspice")
+                                      "/bin/ngspice") "qucs_s.conf")
+               ;; Set the spice4qucs working directory to
+               ;; ~/.qucs/spice4qucs.
+               ;; (The default is /spice4qucs, which is rather
+               ;; dangerous.)
+               (invoke "sed" "-i" "2iS4Q_workdir=~/.qucs/spice4qucs"
+                       "qucs_s.conf")))))))
+
+    (home-page "https://ra3xdh.github.io")
+    (synopsis "QUCS RF circuit simulator with SPICE")
+    (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 merges the power of SPICE and the simplicity of the Qucs
+GUI.  Qucs intentionally uses its own SPICE incompatible simulation
+kernel Qucsator.  It has advanced RF and AC domain simulation features,
+but most of the existing industrial SPICE models are incompatible with
+it.  Qucs-S is not a simulator by itself, but it requires to use a
+simulation backend with it.  The schematic document format of Qucs and
+Qucs-S are fully compatible.  Qucs-S can be used with the following
+simulation kernels:
+@itemize
+@item Ngspice is recommended to use.  Ngspice is powerful
+mixed-level/mixed-signal circuit simulator.  The most of industrial
+SPICE models are compatible with Ngspice.  It has an excellent
+performance for time-domain simulation of switching circuits and
+powerful postprocessor.
+@item XYCE is a new SPICE-compatible circuit simulator written by
+Sandia from the scratch.  It supports basic SPICE simulation types and
+has an advanced RF simulation features such as harmonic balance
+simulation.
+@item SpiceOpus is developed by the Faculty of Electrical Engineering
+of the Ljubljana University.  It is based on the SPICE-3f5 code.
+@item Backward compatible with Qucsator.
+@end itemize")
+    (license license:gpl2)))
+
 (define-public freehdl
   (package
     (name "freehdl")