From 3465144f70fbf247d3806671fdd10e9c7d6aae892a24467976b7b605557de49a Mon Sep 17 00:00:00 2001 From: Lars Vogdt Date: Thu, 25 Sep 2008 10:54:14 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/Education/gnucap?expand=0&rev=1 --- .gitattributes | 23 ++++ .gitignore | 1 + _link.disabled | 1 + gnucap-0.34-debian.patch | 250 +++++++++++++++++++++++++++++++++++++ gnucap-0.35-gcc43.patch | 100 +++++++++++++++ gnucap-0.35-includes.patch | 24 ++++ gnucap-0.35.tar.bz2 | 3 + gnucap.changes | 12 ++ gnucap.spec | 72 +++++++++++ 9 files changed, 486 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 _link.disabled create mode 100644 gnucap-0.34-debian.patch create mode 100644 gnucap-0.35-gcc43.patch create mode 100644 gnucap-0.35-includes.patch create mode 100644 gnucap-0.35.tar.bz2 create mode 100644 gnucap.changes create mode 100644 gnucap.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_link.disabled b/_link.disabled new file mode 100644 index 0000000..25c5582 --- /dev/null +++ b/_link.disabled @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gnucap-0.34-debian.patch b/gnucap-0.34-debian.patch new file mode 100644 index 0000000..f9caad8 --- /dev/null +++ b/gnucap-0.34-debian.patch @@ -0,0 +1,250 @@ +--- gnucap-0.35/doc/whatisit.debian 2000-08-16 10:15:00.000000000 +0200 ++++ gnucap-0.35/doc/whatisit 2007-02-14 13:04:05.000000000 +0100 +@@ -1,4 +1,4 @@ +-ACS is a general purpose circuit simulator. It performs nonlinear ++Gnucap is a general purpose circuit simulator. It performs nonlinear + dc and transient analyses, fourier analysis, and ac analysis + linearized at an operating point. It is fully interactive and + command driven. It can also be run in batch mode or as a server. +@@ -6,7 +6,7 @@ + for the MOSFET (level 1-7) and diode are included in this + release. + +-ACS is not based on Berkeley Spice, but some of the models have been ++Gnucap is not based on Berkeley Spice, but some of the models have been + derived from the Berleley models. + + Since it is fully interactive, it is possible to make changes and +@@ -19,7 +19,7 @@ + bipolar design. + + In batch mode it is mostly Spice compatible, so it is often possible +-to use the same file for both ACS and Spice. ++to use the same file for both Gnucap and Spice. + + The analog simulation is based on traditional nodal analysis with + iteration by Newton's method and LU decomposition. An event queue +@@ -36,11 +36,11 @@ + experimental and needs work. There will be substantial improvements + in future releases. + +-ACS also has a simple behavioral modeling language that allows ++Gnucap also has a simple behavioral modeling language that allows + simple behavioral descriptions of most components including capacitors + and inductors. + +-ACS uses an object oriented approach to modeling. Complex models like ++Gnucap uses an object oriented approach to modeling. Complex models like + MOSFETS are made of simpler ones like resistors, capacitors, diodes, + and any other models that may already exist. The model designer does + not need to worry about details like convergence checking, bypass +@@ -54,17 +54,13 @@ + If you are tired of Spice and want a second opinion, you want to + play with the circuit and want a simulator that is interactive, or + you want to study the source code and want something easier to +-follow than Spice, try ACS. ++follow than Spice, try Gnucap. + +-ACS is an ongoing research project. It is being released in a ++Gnucap is an ongoing research project. It is being released in a + preliminary phase in hopes that it will be useful and that others + will use it as a thrust or base for their research. I also hope + for some comments that may help me direct my research. + +-ACS ftp sites: +- ftp://sunsite.unc.edu/pub/Linux/apps/circuits/acs-0.27.tar.gz +- ftp://ftp.geda.seul.org/pub/geda/dist/acs-0.27.tar.gz +- http://www.geda.seul.org/dist/acs-0.27.tar.gz + + Albert Davis + aldavis@ieee.org +--- gnucap-0.35/src/bm.cc.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/bm.cc 2007-02-14 13:04:05.000000000 +0100 +@@ -141,7 +141,8 @@ + /*--------------------------------------------------------------------------*/ + void EVAL_BM_ACTION_BASE::tr_finish_tdv(ELEMENT* d, double val)const + { +- d->_y0 = FPOLY1(CPOLY1(ioffset(d->_y0.x), 0., val)); ++ CPOLY1 cp1(ioffset(d->_y0.x), 0., val); ++ d->_y0 = FPOLY1(cp1); + tr_final_adjust(&(d->_y0), false); + } + /*--------------------------------------------------------------------------*/ +--- gnucap-0.35/src/e_card.h.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/e_card.h 2007-02-14 13:04:05.000000000 +0100 +@@ -35,6 +35,7 @@ + class CARD_LIST; + class CS; + class COMMON_COMPONENT; ++CARD_LIST::fat_iterator findbranch(CS&,CARD_LIST::fat_iterator); + /*--------------------------------------------------------------------------*/ + class CARD : public CKT_BASE { + private: +--- gnucap-0.35/src/d_vcvs.cc.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/d_vcvs.cc 2007-02-14 13:04:05.000000000 +0100 +@@ -61,7 +61,8 @@ + assert(_y0.f0 != LINEAR); + store_values(); + q_load(); +- _m0 = CPOLY1(_y0); ++ CPOLY1 cp1(_y0); ++ _m0 =cp1; + _m0 *= -_loss0; + }else{ + assert(conchk(_loss0, 1./OPT::shortckt)); +--- gnucap-0.35/src/u_sdp.h.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/u_sdp.h 2007-02-14 13:04:05.000000000 +0100 +@@ -32,6 +32,9 @@ + /*--------------------------------------------------------------------------*/ + class OMSTREAM; + class CARD_LIST; ++class SDP; ++bool get(CS& cmd, const std::string& key, SDP* value, ++ AP_MOD mod, double scale); + /*--------------------------------------------------------------------------*/ + class SDP { + friend bool get(CS& cmd, const std::string& key, SDP* value); +--- gnucap-0.35/src/e_storag.cc.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/e_storag.cc 2007-02-14 13:04:05.000000000 +0100 +@@ -78,7 +78,8 @@ + _dt = NOT_VALID; + _i0 = _q[0] = _q[1] = _q[2] = FPOLY1(0., 0., 0.); + _it1_f0 = 0.; +- _m1 = _m0 = CPOLY1(0., 0., 0.); ++ CPOLY1 cp1(0., 0., 0.); ++ _m1 = _m0 = cp1; + assert(_loss0 == 0.); + assert(_loss1 == 0.); + if (!using_tr_eval()) { +--- gnucap-0.35/src/d_admit.cc.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/d_admit.cc 2007-02-14 13:04:05.000000000 +0100 +@@ -57,7 +57,8 @@ + assert(_y0.f0 != LINEAR); + store_values(); + q_load(); +- _m0 = CPOLY1(_y0); ++ CPOLY1 cp1(_y0); ++ _m0 = cp1; + }else{ + assert(_y0.f0 == LINEAR); + assert(_y0.f1 == value()); +@@ -172,7 +173,8 @@ + bool DEV_CPOLY_G::do_tr() + { + assert(_values); +- _m0 = CPOLY1(0., _values[0], _values[1]); ++ CPOLY1 cp1(0., _values[0], _values[1]); ++ _m0 = cp1; + return do_tr_con_chk_and_q(); + } + /*--------------------------------------------------------------------------*/ +@@ -195,7 +197,8 @@ + } + } + trace2("", _values[0], c0); +- _m0 = CPOLY1(0., c0, _values[1]); ++ CPOLY1 cp1(0., c0, _values[1]); ++ _m0 = cp1; + + return do_tr_con_chk_and_q(); + } +--- gnucap-0.35/src/e_compon.h.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/e_compon.h 2007-02-14 13:04:05.000000000 +0100 +@@ -43,6 +43,9 @@ + } + /*--------------------------------------------------------------------------*/ + enum {CC_STATIC=27342}; // mid-sized arbitrary positive int ++class COMMON_COMPONENT; ++void attach_common(COMMON_COMPONENT* c, COMMON_COMPONENT** to); ++void detach_common(COMMON_COMPONENT** from); + // pass this as an argument to a common constructor to mark it as static, + // so it won't be deleted + /*--------------------------------------------------------------------------*/ +--- gnucap-0.35/src/d_cap.cc.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/d_cap.cc 2007-02-14 13:05:47.000000000 +0100 +@@ -47,7 +47,8 @@ + _i0.x = _y0.x; + _i0.f0 = differentiate(); + _i0.f1 = tr_c_to_g(_q[0].f1, _i0.f1); +- _m0 = CPOLY1(_i0); ++ CPOLY1 cp1(_i0); ++ _m0 = cp1; + return converged(); + } + /*--------------------------------------------------------------------------*/ +@@ -191,7 +192,8 @@ + assert(_vi0[i] == _vi0[i]); + } + +- _m0 = CPOLY1(0., _vi0[0], _vi0[1]); ++ CPOLY1 cp1(0., _vi0[0], _vi0[1]); ++ _m0 = cp1; + return do_tr_con_chk_and_q(); + } + /*--------------------------------------------------------------------------*/ +--- gnucap-0.35/src/l_timer.h.debian 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35/src/l_timer.h 2007-02-14 13:04:05.000000000 +0100 +@@ -26,6 +26,8 @@ + #define U_TIMER_H + #include "io_.h" + /*--------------------------------------------------------------------------*/ ++class TIMER; ++TIMER operator-(const TIMER&,const TIMER&); + class TIMER { + private: + enum {_T_NAME_LEN = 8}; +--- gnucap-0.35/modelgen/mg_.h.debian 2006-08-28 07:45:36.000000000 +0200 ++++ gnucap-0.35/modelgen/mg_.h 2007-02-14 13:04:05.000000000 +0100 +@@ -120,7 +120,7 @@ + } + T* p = new T(file); + {if (!file.stuck(&here)) { +- _list.push_back(p); ++ this->_list.push_back(p); + }else { + delete p; + file.warn(0, "not valid here"); +@@ -141,7 +141,7 @@ + int here = file.cursor(); + T* m = new T(file); + {if (!file.stuck(&here)) { +- _list.push_back(m); ++ this->_list.push_back(m); + }else{ + delete m; + file.warn(0, "what's this??"); +--- gnucap-0.35/examples/runall.debian 2000-09-05 06:22:00.000000000 +0200 ++++ gnucap-0.35/examples/runall 2007-02-14 13:04:05.000000000 +0100 +@@ -1,16 +1,16 @@ +-# +-$1 -b eq2-145.ckt +-$1 -b eq2-289.ckt +-$1 -b eq2-577.ckt +-$1 -b eq3-1153.ckt +-$1 -b eq4-2305.ckt +-$1 -b eqboost.ckt +-$1 -b eqflat.ckt +-$1 -b eqmodify.ckt +-$1 -b killzap.ckt +-$1 -b nmos100.ckt +-$1 -b nmos18.ckt +-$1 -b nmos30.ckt +-$1 -b nmp100.ckt +-$1 -b opamp-ol.ckt +-$1 -b opamp-vf.ckt ++#!/bin/sh ++gnucap -b eq2-145.ckt ++gnucap -b eq2-289.ckt ++gnucap -b eq2-577.ckt ++gnucap -b eq3-1153.ckt ++gnucap -b eq4-2305.ckt ++gnucap -b eqboost.ckt ++gnucap -b eqflat.ckt ++gnucap -b eqmodify.ckt ++gnucap -b killzap.ckt ++gnucap -b nmos100.ckt ++gnucap -b nmos18.ckt ++gnucap -b nmos30.ckt ++gnucap -b nmp100.ckt ++gnucap -b opamp-ol.ckt ++gnucap -b opamp-vf.ckt diff --git a/gnucap-0.35-gcc43.patch b/gnucap-0.35-gcc43.patch new file mode 100644 index 0000000..19ba0dc --- /dev/null +++ b/gnucap-0.35-gcc43.patch @@ -0,0 +1,100 @@ +--- gnucap-0.35/modelgen/ap.h 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/modelgen/ap.h 2008-01-08 22:28:50.000000000 +0100 +@@ -24,6 +24,7 @@ + //testing=script,sparse 2006.07.17 + #ifndef AP_H + #define AP_H ++#include + #include "md.h" + /*--------------------------------------------------------------------------*/ + enum AP_MOD{ +--- gnucap-0.35/src/ap.h 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/src/ap.h 2008-01-08 22:29:01.000000000 +0100 +@@ -24,6 +24,7 @@ + //testing=script,sparse 2006.07.17 + #ifndef AP_H + #define AP_H ++#include + #include "md.h" + /*--------------------------------------------------------------------------*/ + enum AP_MOD{ +--- gnucap-0.35/src/e_base.h 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/src/e_base.h 2008-01-08 22:29:59.000000000 +0100 +@@ -24,6 +24,7 @@ + //testing=script,complete 2006.07.12 + #ifndef E_BASE_H + #define E_BASE_H ++#include + #include "l_compar.h" + #include "u_opt.h" + #include "u_status.h" +--- gnucap-0.35/src/io_findf.cc 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/src/io_findf.cc 2008-01-08 22:33:15.000000000 +0100 +@@ -32,6 +32,7 @@ + * PATHSEP, ENDDIR are system dependent, defined in md.h + */ + //testing=script,sparse 2006.07.17 ++#include + #include "l_lib.h" + /*--------------------------------------------------------------------------*/ + std::string findfile(const std::string& filename, const std::string& path, +--- gnucap-0.35/src/io_getln.cc 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/src/io_getln.cc 2008-01-08 22:32:51.000000000 +0100 +@@ -27,6 +27,7 @@ + * start with + is extension line, spice compatibility. + */ + //testing=script 2006.07.17 ++#include + #include "l_lib.h" + /*--------------------------------------------------------------------------*/ + std::string getlines(FILE *fileptr) +--- gnucap-0.35/src/io_out.cc 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/src/io_out.cc 2008-01-08 22:33:34.000000000 +0100 +@@ -31,6 +31,7 @@ + * but I have yet to find a system that did not meet this form. + */ + //testing=script,sparse 2006.07.17 ++#include + #include "u_opt.h" + /*--------------------------------------------------------------------------*/ + const char* octal(int x); +--- gnucap-0.35/src/l_ftos.cc 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/src/l_ftos.cc 2008-01-08 22:33:53.000000000 +0100 +@@ -37,6 +37,7 @@ + * after that, the space is overwritten, every POOLSIZE calls + */ + //testing=script 2005.10.11 ++#include + #include "l_lib.h" + #include "constant.h" + /*--------------------------------------------------------------------------*/ +--- gnucap-0.35/src/l_timer.cc 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/src/l_timer.cc 2008-01-08 22:34:16.000000000 +0100 +@@ -22,6 +22,7 @@ + * Time a command, or whatever + */ + //testing=script,sparse 2006.07.13 ++#include + #include "l_timer.h" + /*--------------------------------------------------------------------------*/ + // TIMER::TIMER(); +--- gnucap-0.35/src/main.cc 2006-09-20 19:18:52.000000000 +0200 ++++ gnucap-0.35.new/src/main.cc 2008-01-08 22:31:35.000000000 +0100 +@@ -23,6 +23,7 @@ + * it all starts here + */ + //testing=script 2006.07.14 ++#include + #include "patchlev.h" + #include "c_comand.h" + #include "declare.h" /* lots */ +--- gnucap-0.35/src/plot.cc 2006-08-28 08:15:43.000000000 +0200 ++++ gnucap-0.35.new/src/plot.cc 2008-01-08 22:34:56.000000000 +0100 +@@ -2,6 +2,7 @@ + * (this file is a mess. it should be redone.) + */ + //testing=script 2006.07.17 ++#include + #include "declare.h" /* self */ + #include "s__.h" + #include "u_prblst.h" diff --git a/gnucap-0.35-includes.patch b/gnucap-0.35-includes.patch new file mode 100644 index 0000000..7616093 --- /dev/null +++ b/gnucap-0.35-includes.patch @@ -0,0 +1,24 @@ +Index: gnucap-0.35/src/ap.h +=================================================================== +--- gnucap-0.35.orig/src/ap.h ++++ gnucap-0.35/src/ap.h +@@ -24,6 +24,7 @@ + //testing=script,sparse 2006.07.17 + #ifndef AP_H + #define AP_H ++#include + #include "md.h" + /*--------------------------------------------------------------------------*/ + enum AP_MOD{ +Index: gnucap-0.35/src/ap_construct.cc +=================================================================== +--- gnucap-0.35.orig/src/ap_construct.cc ++++ gnucap-0.35/src/ap_construct.cc +@@ -22,6 +22,7 @@ + * construction, copy, etc. + */ + //testing=script,sparse 2006.07.17 ++#include + #include "ap.h" + /*--------------------------------------------------------------------------*/ + CS::CS(CS_FILE, const std::string& name, int i) diff --git a/gnucap-0.35.tar.bz2 b/gnucap-0.35.tar.bz2 new file mode 100644 index 0000000..91bec8b --- /dev/null +++ b/gnucap-0.35.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cf16bbc229115349ebf6d86fc43b7fd48c2b2c7f7971dbe12c5c98b2a583edc +size 876263 diff --git a/gnucap.changes b/gnucap.changes new file mode 100644 index 0000000..3e54c60 --- /dev/null +++ b/gnucap.changes @@ -0,0 +1,12 @@ +------------------------------------------------------------------- +Thu Sep 25 12:54:09 CEST 2008 - lars@linux-schulserver.de + +- moved to Education base repository + +------------------------------------------------------------------- +Tue May 27 23:37:29 CEST 2008 - lars@linux-schulserver.de + +- initial version for openSUSE-Education +- fix build with GCC4.3 +- use debian patch + diff --git a/gnucap.spec b/gnucap.spec new file mode 100644 index 0000000..04ada58 --- /dev/null +++ b/gnucap.spec @@ -0,0 +1,72 @@ +# +# spec file for package gnucap +# +# This file and all modifications and additions to the pristine +# package are under the same license as the package itself. +# + + +Name: gnucap +Summary: Gnucap is the Gnu Circuit Analysis Package +Version: 0.35 +Release: 10 +License: GPL +Group: Productivity/Scientific/Electronics +Url: http://www.geda.seul.org/tools/gnucap +Vendor: openSUSE-Education +Source: http://www.gnucap.org/dist/%name-%version.tar.bz2 +Patch1: gnucap-0.35-gcc43.patch +Patch2: gnucap-0.34-debian.patch +BuildRequires: gcc-c++ libpng-devel readline-devel +BuildRequires: ncurses-devel +%if 0%{?suse_version} > 1020 +BuildRequires: texlive-devel texlive-latex +%else +BuildRequires: te_latex tetex +%endif +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +The primary component is a general purpose circuit simulator. It +performs nonlinear dc and transient analyses, fourier analysis, and ac +analysis. Spice compatible models for the MOSFET (level 1-7), BJT, and +diode are included in this release. + +Gnucap is not based on Spice, but some of the models have been derived +from the Berkeley models. + +Unlike Spice, the engine is designed to do true mixed-mode +simulation. Most of the code is in place for future support of event +driven analog simulation, and true multi-rate simulation. + + +%prep +%setup -q +# use ncurses instead of termcap +sed -i 's/-ltermcap/-lncurses/g' configure +%patch1 -p1 +%patch2 -p1 + +%build +%configure +%{__make} %{?jobs:-j%jobs} + +%install +%makeinstall + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,-) +%{_prefix}/bin/* +%{_mandir}/* +%dir %{_datadir}/%{name} +%dir %{_datadir}/%{name}/doc +%dir %{_datadir}/%{name}/examples +%dir %{_datadir}/%{name}/manual +%doc %{_datadir}/%{name}/doc/* +%doc %{_datadir}/%{name}/examples/* +%doc %{_datadir}/%{name}/manual/* + +%changelog