diff --git a/.gitignore b/.gitignore index a29b03e..b1de22c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,3 @@ -ngspice-21.pdf -ngspice-rework-20.cvs20100719.tar.bz2 -/ngspice-rework-22.cvs20101113.tar.bz2 -/ngspice-23.tar.gz -/ngspice23-manual.pdf -/ngspice-26.tar.gz -/ngspice-26-manual.pdf -/ngspice-27.tar.gz -/ngspice-27-manual.pdf +/ngspice-*.tar.gz +/ngspice-adms-va.7z +/ngspice-*-manual.pdf diff --git a/20190112-memo-build-options-from-upstream.txt b/20190112-memo-build-options-from-upstream.txt new file mode 100644 index 0000000..6258096 --- /dev/null +++ b/20190112-memo-build-options-from-upstream.txt @@ -0,0 +1,41 @@ +2019/01/12 17:24 From Holger Vogt + +Dear Mamoru, + +a KiCad user has reported a bug +(https://forum.kicad.info/t/trying-to-get-ngspice-working-on-fedora/14628/9) +concerning strange debug output from ngspice shared lib. + +I have ahd a look at the Fedora log protocol +(https://koji.fedoraproject.org/koji/taskinfo?taskID=31757152) and +https://kojipkgs.fedoraproject.org//work/tasks/7152/31757152/build.log + +ngspice shared lib has been made with the following configure flags: +--disable-silent-rules --disable-xgraph --enable-adms --enable-xspice +--enable-maintainer-mode --enable-dependency-tracking +--enable-capzerobypass --enable-cider --enable-expdevices +--enable-intnoise --enable-openmp --enable-predictor --enable-numparam +--enable-dot-global --enable-shared --enable-ndev --with-readline=yes +--with-tcl=/usr/lib64/ --libdir=/usr/lib64/tclspice --enable-oldapps + +This is wrong. + +For making ngspice-30, do not use +--disable-xgraph (xgraph is no longer part of the ngspice distribution) +--enable-capzerobypass (no longer available) +--enable-expdevices (not used, experimental devices may destroy the code +stability) +--enable-numparam (numparam is always enabled) +--enable-ndev (this is causing the bug: unmaintained code, risky, does +lead to spurious ngspice outputs. Has definitely to be removed!) +--with-readline=yes (there is no use of readline in a shared lib, but +probably does not hurt here) +--enable-intnoise (flag is no longer available) +--enable-dot-global (flag is no longer available) + +May I ask you to redo the build with a suitable set of configure flags? + +Best regards + +Holger + diff --git a/License-analysis.txt b/License-analysis.txt new file mode 100644 index 0000000..d5459fa --- /dev/null +++ b/License-analysis.txt @@ -0,0 +1,125 @@ +CC-BY-SA-4.0 +COPYING +FAQ +manal.pdf + +CC-BY-3.0 +src/frontend/get_phys_mem_size.c +src/frontend/get_resident_set_size.c + +GPL-2.0-or-later +src/xspice/icm/table/table2D/cfunc.mod +src/xspice/icm/table/table3D/cfunc.mod +src/spicelib/devices/adms/admst/COPYING +src/spicelib/devices/adms/admst/ngspice*.xml +src/xspice/icm/table/mada/alloc.c +src/xspice/icm/table/mada/eno.c +src/xspice/icm/table/mada/eno2.c +src/xspice/icm/table/mada/eno3.c + +GPL-2.0-only +src/xspice/icm/table/table2D/ifspec.ifs +src/xspice/icm/table/table3D/ifspec.ifs + +GPL-3.0-or-later +src/frontend/parse-bison.c +src/frontend/parse-bison.h +src/spicelib/parser/inpptree-parser.c +src/spicelib/parser/inpptree-parser.h +src/xspice/cmpp/ifs_yacc.c +src/xspice/cmpp/ifs_yacc.h +src/xspice/cmpp/mod_yacc.c +src/xspice/cmpp/mod_yacc.h + +LGPL-2.1-or-later +README.tcl +src/frontend/numparam/mystring.c +src/frontend/numparam/readme.txt +src/frontend/numparam/spicenum.c +src/frontend/numparam/xpressn.c +src/maths/KLU/colamd.c +src/spicelib/devices/adms/admst/COPYING + +LGPL-2.1-only +src/maths/KLU/colamd_global.c +src/tclspice.c + +MPL-2.0 +src/include/cppduals/duals/dual +src/osdi/ + +ECL-2.0 +examples/osdi/EKV2.6/ekv26_mod.va +src/spicelib/devices/bsim4/ + +HPND +src/maths/sparse/ + +BSD-4-Clause +src/misc/getopt_bsd.h + +BSD-3-Clause +src/frontend/com_wr_ic.c +src/frontend/com_wr_ic.h +src/frontend/get_avail_mem_size.c +src/frontend/inpcom.c + +src/frontend/inpcompat.c (BCD) +src/frontend/inpcompat.h (BCD) +src/frontend/inpc_probe.c +src/include/ngspice/sharedspice.h +src/misc/dstring.c +src/sharedspice.c +src/spicelib/analysis/optran.c +src/spicelib/devices/cpl/cpldelete.c +src/spicelib/devices/cpl/cplhash.c +src/spicelib/devices/cpl/cplhash.h +src/spicelib/devices/cpl/cplmdel.c +src/spicelib/devices/hicum2/ +src/spicelib/parser/inpgmod.c +src/winmain.c +src/xspice/icm/digital/d_process/cfunc.mod +src/xspice/icm/dlmain.c +src/xspice/icm/dlmain.h +src/xspice/icm/xtradev/pswitch/cfunc.mod +src/xspice/icm/xtradev/sidiode/cfunc.mod +src/xspice/icm/xtradev/sidiode/ifspec.ifs + + +BSD-2-Clause +src/misc/getopt_long_bsd.c + +??? +examples/p-to-n-examples/MCP6041.txt + +??? +examples/probe/TLC555.LIB + +NOT_IN_SPDX +src/frontend/commands.c +src/spicelib/devices/dev.c + +NOT_IN_SPDX +src/spicelib/devices/bsim3/B3TERMS_OF_USE +src/spicelib/devices/bsim3soi_dd/BsimTerms_use +src/spicelib/devices/bsim3soi_fd/BsimTerms_use +src/spicelib/devices/bsim3soi_pd/BsimTerms_use +src/spicelib/devices/bsim3v32/B3TERMS_OF_USE +src/spicelib/devices/bsim4/B4TERMS_OF_USEs +src/spicelib/devices/bsim4v5/B4TERMS_OF_USE +src/spicelib/devices/bsim4v6/B4TERMS_OF_USE +src/spicelib/devices/bsim4v7/B4TERMS_OF_USE +src/spicelib/devices/bsimsoi/BsimTerms_use + + +??? +src/spicelib/devices/hisim2/ +src/spicelib/devices/hisimhv2/ + +??? +src/spicelib/devices/hisimhv1/ + + +??? +src/spicelib/devices/soi3/README + diff --git a/bz142910.cir b/bz142910.cir new file mode 100644 index 0000000..9a2b868 --- /dev/null +++ b/bz142910.cir @@ -0,0 +1,14 @@ +* Pulse source +V1 Vsource 0 pulse 0 1 1n 100ps 100ps 1ns 14ns +* Source impedance +Rsource Vin Vsource 8 +* 50 Ohm transmission line +T1 Vin 0 Vout 0 Z0=50 TD=20ps +* Load impedance +Rout Vout 0 40k + + +.control + tran 0.1ps 2.5n + plot Vin Vout +.endc diff --git a/create-ngspice-git-bare-tarball.sh b/create-ngspice-git-bare-tarball.sh new file mode 100644 index 0000000..78953a6 --- /dev/null +++ b/create-ngspice-git-bare-tarball.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -x +set -e + +REPONAME=ngspice +GITURL=https://git.code.sf.net/p/ngspice/${REPONAME}.git + +DATE=$(date '+%Y%m%d') +TIME=$(date '+%H%M') + +TARNAME=${REPONAME}-${DATE}T${TIME}.tar.gz + +PWDDIR=$(pwd) +TMPDIR=$(mktemp -d /var/tmp/ngspice-XXXXXX) +pushd $TMPDIR + +git clone --mirror $GITURL + +cd ./${REPONAME}.git +git log --pretty=fuller | head -n 10 +cd .. + +tar czf ${TARNAME} ${REPONAME}.git/ + +cp -p ${TARNAME} $PWDDIR +popd +rm -rf $TMPDIR diff --git a/ngspice-26-blt-linkage-workaround.patch b/ngspice-37-blt-linkage-workaround.patch similarity index 94% rename from ngspice-26-blt-linkage-workaround.patch rename to ngspice-37-blt-linkage-workaround.patch index fedf3e8..edb6972 100644 --- a/ngspice-26-blt-linkage-workaround.patch +++ b/ngspice-37-blt-linkage-workaround.patch @@ -28,8 +28,8 @@ AM_CONDITIONAL([SHARED_MODULE], [test "x$has_shared_module" = xtrue]) AM_CONDITIONAL([SHWIN], [test "x$has_shwin" = xtrue]) ---- ngspice-26/tclspice/src/Makefile.am.link 2014-01-12 00:28:59.000000000 +0900 -+++ ngspice-26/tclspice/src/Makefile.am 2016-07-03 12:29:38.747329190 +0900 +--- ngspice-37/tclspice/src/Makefile.am.link 2014-01-12 00:28:59.000000000 +0900 ++++ ngspice-37/tclspice/src/Makefile.am 2016-07-03 12:29:38.747329190 +0900 @@ -331,6 +331,7 @@ if TCL_MODULE @@ -53,8 +53,8 @@ @X_LIBS@ \ frontend/libfte.la @@ -422,17 +427,27 @@ - misc/libmisc.la \ - $(LIBS) + maths/dense/libdense.la + endif +libspicelite_la_LIBADD = $(libspice_la_LIBADD) + diff --git a/ngspice.spec b/ngspice.spec index 389999a..61b80f7 100644 --- a/ngspice.spec +++ b/ngspice.spec @@ -5,38 +5,86 @@ # - Provides tclspice capabilities # Chitlesh Goorah -# -## To download development trunk -# -# cvs -d:pserver:anonymous@ngspice.cvs.sourceforge.net:/cvsroot/ngspice login -# cvs -z3 -d:pserver:anonymous@ngspice.cvs.sourceforge.net:/cvsroot/ngspice export -DNOW ngspice -# tar cjf ~/rpmbuild/SOURCES/ngspice-rework-23.`date '+%Y%m%d'`cvs.tar.bz2 ngspice +%global userelease 1 +%global usegitbare 0 -# Toggle the following declaration when using version controlled snapshots -%global devel 0 +%if 0%{?usegitbare} < 1 +# force +%global userelease 1 +%endif + +%global majorver 45 +%global minorver 2 +%global docver 45 +%undefine prever +%global prerpmver %(echo "%{?prever}" | sed -e 's|-||g') + +%global baserelease 1 + +%if 0%{?usegitbare} >= 1 +# pre-master-45 +%global gitcommit 1d0beb5e266420b1dd756913356a295ddb60fdce +%global gitdate 20250830 +%global shortcommit %(c=%{gitcommit}; echo ${c:0:7}) + +%global tarballdate 20250831 +%global tarballtime 2034 +%endif + +%if 0%{?userelease} >= 1 +%global fedoraver %{majorver}%{?minorver:.%minorver} +%endif +%if 0%{?usegitbare} >= 1 +%global fedoraver %{majorver}%{?minorver:.%minorver}^%{gitdate}git%{shortcommit} +%endif + +%global use_gcc_strict_sanitize 0 + +%global flagrel %{nil} +%if 0%{?use_gcc_strict_sanitize} >= 1 +%global flagrel %{flagrel}.san +%endif + +%bcond_with adms + +%undefine _changelog_trimtime Name: ngspice -Version: 27 -%if %{?devel} -%global snap .20111129cvs -%endif -Release: 1%{?snap}%{?dist} +Version: %{fedoraver} +Release: %{baserelease}%{?dist}%{flagrel} Summary: A mixed level/signal circuit simulator -License: BSD -Group: Applications/Engineering +# ngspice-42-manual.pdf CC-BY-SA-4.0 AND BSD-3-Clause +# Automatically converted from old format: BSD - review is highly recommended. +License: LicenseRef-Callaway-BSD URL: http://ngspice.sourceforge.net -%if %{?devel} -Source0: ngspice-rework-%{version}%{snap}.tar.bz2 -%else -Source0: https://downloads.sourceforge.net/project/ngspice/ng-spice-rework/%{version}/ngspice-%{version}.tar.gz -Source1: https://downloads.sourceforge.net/project/ngspice/ng-spice-rework/%{version}/ngspice-%{version}-manual.pdf +%if 0%{?userelease} >= 1 +Source0: https://downloads.sourceforge.net/project/ngspice/ng-spice-rework/%{majorver}%{?minorver:.%minorver}/ngspice-%{majorver}%{?minorver:.%minorver}.tar.gz %endif +%if 0%{?usegitbare} >= 1 +Source0: ngspice-%{tarballdate}T%{tarballtime}.tar.gz +%endif +Source1: https://downloads.sourceforge.net/project/ngspice/ng-spice-rework/%{majorver}/ngspice-%{docver}-manual.pdf +%if %{with adms} +Source2: https://downloads.sourceforge.net/project/ngspice/ng-spice-rework/%{majorver}/ngspice-adms-va.7z +%endif +Source10: create-ngspice-git-bare-tarball.sh + # Link libspice.so with -lBLT or -lBLIlite, depending on whether in tk mode or # not (bug 1047056, debian bug 737279) -Patch0: ngspice-26-blt-linkage-workaround.patch +Patch0: ngspice-37-blt-linkage-workaround.patch + + +BuildRequires: make +BuildRequires: gcc +BuildRequires: gcc-c++ +%if 0%{?use_gcc_strict_sanitize} +BuildRequires: libasan +BuildRequires: libubsan +%endif +BuildRequires: p7zip BuildRequires: readline-devel BuildRequires: libXext-devel @@ -45,18 +93,25 @@ BuildRequires: libICE-devel BuildRequires: libXaw-devel BuildRequires: libGL-devel BuildRequires: libXt-devel +# From ngspice 32 +BuildRequires: fontconfig-devel +BuildRequires: freetype-devel +BuildRequires: libXft-devel +BuildRequires: libXrender-devel BuildRequires: automake BuildRequires: libtool -%if %{?devel} -BuildRequires: lyx -%endif BuildRequires: bison BuildRequires: byacc BuildRequires: flex + BuildRequires: ImageMagick BuildRequires: mot-adms +BuildRequires: xorg-x11-server-Xvfb +BuildRequires: git + +Requires: %{name}-codemodel%{?_isa} = %{version}-%{release} Obsoletes: ngspice-doc < 20-4.cvs20100619 Provides: ngspice-doc = %{version}-%{release} @@ -86,8 +141,7 @@ It can be used for VLSI simulations as well. %package -n tclspice Summary: Tcl/Tk interface for ngspice -Group: Applications/Engineering -BuildRequires: tk-devel +BuildRequires: pkgconfig(tk) <= 8.999 BuildRequires: blt-devel %description -n tclspice @@ -95,14 +149,70 @@ TclSpice is an improved version of Berkeley Spice designed to be used with the Tcl/Tk scripting language. The project is based upon the NG-Spice source code base with many improvements. +%package codemodel +Summary: ngspice codemodel and some script files + +%description codemodel +This package contains ngspice codemodel and some script files. + +%package -n libngspice +Summary: Shared library version of ngspice +Requires: %{name}-codemodel%{?_isa} = %{version}-%{release} + +%description -n libngspice +This package contains shared library version of ngspice. + +%package -n libngspice-devel +Summary: Development files for libngspice +Requires: libngspice%{?isa} = %{version}-%{release} + +%description -n libngspice-devel +This package contains libraries and header files for +developing applications that use libngspice. + + %prep -%if %{?devel} -%setup -q -n ngspice -cd ng-spice-rework -%else -%setup -q +%if 0%{?userelease} >= 1 +%setup -q -n %{name}-%{majorver}%{?minorver:.%minorver} +git init +git config user.name "%{name} maintainer" +git config user.email "%{name}-maintainers@fedoraproject.org" +git add . +git commit -m "base" -q -a %endif -%patch0 -p2 -b .link + +%if 0%{?usegitbare} >= 1 +%setup -q -c -n %{name}-%{majorver}%{?minorver:.%minorver}-%{gitdate}git%{shortcommit} -T -a 0 +git clone ./%{name}.git/ +cd %{name} +git config user.name "%{name} maintainer" +git config user.email "%{name}-maintainers@fedoraproject.org" + +git checkout -b %{name}-%{majorver}-fedora %{gitcommit} +%endif + +%if %{with adms} +pushd src/spicelib/devices/adms +%if 0%{?userelease} >= 1 +7za x %{SOURCE2} +%endif +%if 0%{?usegitbare} >= 1 +# Check if some adms va files exist +for f in \ + bsimbulk/admsva/bsimbulk.va \ + bsimcmg/admsva/bsimcmg.va \ + ekv/admsva/ekv.va \ + %{nil} +do + test -f $f || exit 1 +done +%endif + +popd +%endif + +%patch -P0 -p2 -b .link +git commit -m "Link libspice.so with -lBLT or -lBLIlite, depending on whether in tk mode or not" -a # make sure the examples are UTF-8... for nonUTF8 in \ @@ -112,9 +222,10 @@ for nonUTF8 in \ ChangeLog \ %{nil} do - %{_bindir}/iconv -f ISO-8859-1 -t utf-8 $nonUTF8 > $nonUTF8.conv + iconv -f ISO-8859-1 -t utf-8 $nonUTF8 > $nonUTF8.conv %{__mv} -f $nonUTF8.conv $nonUTF8 done +git commit -m "Change files to UTF8" -a # rpmlint warnings find examples/ -type f -name ".cvsignore" -exec rm -rf {} ';' @@ -122,47 +233,60 @@ find src/ -type f -name "*.c" -exec chmod -x {} ';' find src/ -type f -name "*.h" -exec chmod -x {} ';' find src/ -type f -name "*.l" -exec chmod -x {} ';' find src/ -type f -name "*.y" -exec chmod -x {} ';' +git commit -m "Fix permission" -a || : -%ifarch x86_64 sparc64 ppc64 amd64 -sed -i "s|@XSPICEINIT@ codemodel @prefix@/@libname@|@XSPICEINIT@ codemodel %{_libdir}|" \ - src/spinit.in -%endif +# Move spinit directory to arch-dependent +sed -i configure.ac -e '\@AC_DEFINE_UNQUOTED.*NGSPICEDATADIR@s|echo .dprefix/share/ngspice|echo %{_libdir}/ngspice|' +sed -i configure.ac -e '\@AC_DEFINE_UNQUOTED.*NGSPICELIBDIR@s|echo .dprefix/share/ngspice|echo %{_libdir}/ngspice|' +sed -i src/misc/ivars.c -e 's|\(["/]\)share/ngspice|\1%_lib/ngspice|' +sed -i src/misc/ivars.c -e 's|\(["/]\)lib/ngspice|\1%_lib/ngspice|' +grep -rl "(pkgdatadir)/" . | xargs sed -i -e 's|(pkgdatadir)/|(pkglibdir)/|' +git commit -m "move spinit directory to arch-dependent" -a # Fix Tclspice's examples sed -i \ 's|load "../../../src/.libs/libspice.so"|lappend auto_path "%{_libdir}/tclspice"\npackage require spice|' \ - examples/tclspice/*/*.tcl + examples/tclspice/*/*.{tcl,sh} sed -i \ 's|load ../../../src/.libs/libspice.so|lappend auto_path "%{_libdir}/tclspice"\npackage require spice|' \ - examples/tclspice/*/*.tcl + examples/tclspice/*/*.{tcl,sh} sed -i \ - 's|spice::codemodel ../../src/xspice/icm/spice2poly|spice::codemodel %{_libdir}/tclspice/spice|' \ - examples/tclspice/tcl-testbench4/tcl-testbench4.tcl + 's|spice::codemodel [\./][\./]*src/xspice/icm/spice2poly/|spice::codemodel %{_libdir}/tclspice/ngspice/|' \ + examples/tclspice/tcl-testbench*/tcl-testbench*.sh +git commit -m "Fix Tclspice's examples" -a # Fixed minor CVS build sed -i \ "s|AM_CPPFLAGS =|AM_CPPFLAGS = -I\$(top_srcdir)/src/maths/ni |" \ src/spicelib/analysis/Makefile.am +git commit -m "Fix include path" -a export ACLOCAL_FLAGS=-Im4 -./autogen.sh --adms +./autogen.sh \ +%if %{with adms} + --adms \ +%endif + %{nil} +git commit -m "Execute autogen" -a || : chmod +x configure %build -%if %{?devel} -# ---- Manual ---------------------------------------------------------------- -cd ng-spice-manuals -autoreconf -Wno-portability --install -%configure ; make -cd .. +%set_build_flags +%if 0%{?use_gcc_strict_sanitize} +export CC="${CC} -fsanitize=address -fsanitize=undefined" +export CXX="${CXX} -fsanitize=address -fsanitize=undefined" -cd ng-spice-rework +export ASAN_OPTIONS=detect_leaks=0 +%endif + +%if 0%{?usegitbare} >= 1 +cd %{name} %endif # ---- Tclspice ---------------------------------------------------------------- # Adding BLT support -export CFLAGS="%{optflags} -I%{_includedir}/blt" +export CFLAGS="%{optflags} -I$(pkg-config --variable=includedir tcl)/blt" # Make builddir for tclspice %{__mkdir} -p tclspice @@ -170,15 +294,9 @@ export CFLAGS="%{optflags} -I%{_includedir}/blt" # Configure tclspice cd tclspice -sed -i \ - 's|\#define NGSPICEDATADIR "\`echo \$dprefix/share/ngspice\`"|\#define NGSPICEDATADIR "\`echo %{_libdir}/tclspice\`"|' \ - configure* -# fix ng-spice-manuals directory location -%if %{?devel} -sed -i \ - 's|../ng-spice-manuals|../../ng-spice-manuals|g' \ - manual/Makefile.am -%endif +sed -i configure* \ + -e 's|\#define NGSPICEDATADIR "\`echo %{_libdir}/ngspice\`"|\#define NGSPICEDATADIR "\`echo %{_libdir}/tclspice/ngspice\`"|' +sed -i src/misc/ivars.c -e 's|/%_libdir/ngspice|/%_lib/tclspice/ngspice|' # direct access to Tcl_Interp->result deprecated in tcl8.6, # remaining usage cannot be replaced by Tcl_SetResult @@ -187,99 +305,116 @@ export CPPFLAGS=-DUSE_INTERP_RESULT # comment by Mamoru TASAKA (20170330) # Looking at the actually source code, --enable-newpred does not seem to # make sense, and it seems to cause calculation error (bug 844100, bug 1429130) +# +# (20190120) Remove some obsolete or dangerous configure option +# by the request from the upstream %configure \ --disable-silent-rules \ - --disable-xgraph \ +%if %{with adms} --enable-adms \ +%endif --enable-xspice \ + --enable-klu \ + --enable-osdi \ --enable-maintainer-mode \ --enable-dependency-tracking \ - --enable-capzerobypass \ --enable-cider \ %if 0 --enable-newpred \ %endif - --enable-expdevices \ - --enable-intnoise \ --enable-openmp \ --enable-predictor \ - --enable-numparam \ - --enable-dot-global \ --enable-shared \ - --enable-ndev \ --with-readline=yes \ - --with-tcl=%{_libdir}/ \ + --with-tcl=$(pkg-config --variable=libdir tcl) \ --libdir=%{_libdir}/tclspice \ %{nil} -%{__make} +%make_build -k # Once install to the temp dir rm -rf $(pwd)/../INST-TCLSPICE %{__make} INSTALL="install -p" install DESTDIR=$(pwd)/../INST-TCLSPICE cd .. # ------------------------------------------------------------------------------ -for opt in with-ngshared without-ngshared +for opt in SHARED NOSHARED do + SHARED_OPT="" + if test x$opt == xSHARED + then + SHARED_OPT="$SHARED_OPT --with-ngshared" + # bug 1927628 + SHARED_OPT="$SHARED_OPT --with-readline=no" + else + SHARED_OPT="$SHARED_OPT --without-ngshared" + SHARED_OPT="$SHARED_OPT --with-readline=yes" + fi %configure \ --disable-silent-rules \ - --${opt} \ - --disable-xgraph \ + ${SHARED_OPT} \ +%if %{with adms} --enable-adms \ +%endif --enable-xspice \ + --enable-osdi \ + --enable-klu \ --enable-maintainer-mode \ --enable-dependency-tracking \ - --enable-capzerobypass \ --enable-cider \ %if 0 + # bug 844100, bug 1429130 --enable-newpred \ %endif - --enable-expdevices \ - --enable-intnoise \ --enable-openmp \ --enable-predictor \ - --enable-numparam \ - --enable-dot-global \ --enable-shared \ - --enable-ndev \ - --with-readline=yes \ --libdir=%{_libdir} \ %{nil} %{__make} clean -%{__make} -# %{?_smp_mflags} +%make_build -k # Once install to the temp dir rm -rf $(pwd)/INST-NGSPICE-${opt} %{__make} INSTALL="install -p" install DESTDIR=$(pwd)/INST-NGSPICE-${opt} +find $(pwd)/INST-NGSPICE-${opt} -type f | sort done %install -%if %{?devel} -cd ng-spice-rework +%if 0%{?usegitbare} >= 1 +cp -p %{name}/COPYING . +cd %{name} %endif # ---- Tclspice ---------------------------------------------------------------- # Clean up unneeded / duplicate files also installed from ngspice pushd INST-TCLSPICE -rm -rf ./%{_datadir}/ngspice/include/ +rm -rf ./%{_libdir}/ngspice/include/ # see bug 1311869 -rm -f ./%{_datadir}/ngspice/scripts/spinit +rm -f ./%{_libdir}/tclspice/ngspice/scripts/spinit # binary differ -mv .%{_bindir}/cmpp{,-tclspice} +# for --short-circuit +if [ -f .%{_bindir}/cmpp ] ; then + mv .%{_bindir}/cmpp{,-tclspice} +fi popd # Install -cp -a INST-NGSPICE-without-ngshared/* %{buildroot} +# ref: https://sourceforge.net/p/ngspice/support-requests/34/ +# For codemodel files, install non-shared version +# so, first, install ngshared version, then non-shared version +for opt in SHARED NOSHARED +do + cp -a INST-NGSPICE-${opt}/* %{buildroot} +done cp -a INST-TCLSPICE/* %{buildroot} -# For now, remove include files -rm -rf %{buildroot}%{_includedir} %{__rm} -rf \ %{buildroot}%{_libdir}/tclspice/libspice.la \ %{buildroot}%{_libdir}/tclspice/libspicelite.la \ + %{buildroot}%{_libdir}/libngspice.la \ + %{buildroot}%{_includedir}/config.h \ %{nil} # ------------------------------------------------------------------------------ @@ -287,17 +422,13 @@ rm -rf %{buildroot}%{_includedir} # It seems that the below is not needed, compiled into binary already # (mtasaka, 20160628) %if 0 -cp -pr ./src/spicelib/devices/adms/ %{buildroot}%{_datadir}/%{name} +cp -pr ./src/spicelib/devices/adms/ %{buildroot}%{_libdir}/%{name} %endif # Ensuring that all docs are under %%{_pkgdocdir} mkdir -p %{buildroot}%{_pkgdocdir} cp -pr examples/ %{buildroot}%{_pkgdocdir} -%if %{?devel} -cp -p ../ng-spice-manuals/manual.pdf %{buildroot}%{_pkgdocdir}/%{name}-%{version}.pdf -%else -cp -p %{SOURCE1} %{buildroot}%{_pkgdocdir}/%{name}-%{version}.pdf -%endif +install -cpm 0644 %{SOURCE1} %{buildroot}%{_pkgdocdir}/%{name}-%{majorver}.pdf cp -a \ Stuarts_Poly_Notes \ @@ -318,34 +449,220 @@ chmod +x %{buildroot}%{_libdir}/ngspice/*.cm chmod +x %{buildroot}%{_libdir}/tclspice/ngspice/*.cm %check -%if %{?devel} -cd ng-spice-rework/tests -%else -cd tests +export ASAN_OPTIONS=detect_leaks=0 + +%if 0%{?usegitbare} >= 1 +cd %{name} %endif -#make check + +pushd tests + +# See https://sourceforge.net/p/ngspice/bugs/544/ +rm -rf USERPROFILE +mkdir USERPROFILE +echo "set ngbehavior=mc" > USERPROFILE/spice.rc +export USERPROFILE=$(pwd)/USERPROFILE + +xvfb-run \ + -s "-screen 0 640x480x24" \ + make check + +popd %files %{_bindir}/* -%exclude %{_bindir}/cmpp-tclspice -%{_datadir}/%{name}/ -%exclude %{_datadir}/%{name}/scripts/tclspinit -%{_libdir}/ngspice/ - +%{_libdir}/%{name}/ivlng.* %{_mandir}/man1/* -%exclude %{_pkgdocdir}/examples/tclspice %doc %{_pkgdocdir} %license COPYING %files -n tclspice -%{_bindir}/cmpp-tclspice %doc %{_pkgdocdir}/examples/tclspice -%{_libdir}/tclspice/ -%dir %{_datadir}/ngspice -%dir %{_datadir}/%{name}/scripts/ -%{_datadir}/%{name}/scripts/tclspinit +%dir %{_libdir}/tclspice/ +%dir %{_libdir}/tclspice/%{name} +%{_libdir}/tclspice/libspice*.so* +%{_libdir}/tclspice/%{name}/*.cm +%{_libdir}/tclspice/%{name}/*.tcl +%{_libdir}/tclspice/%{name}/ivlng.* +%{_libdir}/tclspice/%{name}/scripts/ + +%files codemodel +%dir %{_libdir}/%{name}/ +%{_libdir}/%{name}/*.cm +%{_libdir}/%{name}/scripts/ + +%files -n libngspice +%{_libdir}/libngspice.so.0* + +%files -n libngspice-devel +%{_libdir}/pkgconfig/ngspice.pc +%{_libdir}/libngspice.so +%{_includedir}/ngspice/ %changelog +* Sun Sep 07 2025 Mamoru TASAKA - 45.2-1 +- Update to 45.2 + +* Tue Sep 02 2025 Mamoru TASAKA - 45-1 +- Update to 45 + +* Thu Jul 24 2025 Fedora Release Engineering - 44.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jan 31 2025 Mamoru TASAKA - 44.2-3 +- Use tk8 explicitly + +* Fri Jan 17 2025 Fedora Release Engineering - 44.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sun Jan 12 2025 Mamoru TASAKA - 44.2-1 +- Update to 44.2 + +* Mon Dec 30 2024 Mamoru TASAKA - 44-1 +- Update to 44 + +* Mon Sep 2 2024 Miroslav Suchý - 43-4 +- convert license to SPDX + +* Thu Jul 18 2024 Fedora Release Engineering - 43-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue Jul 16 2024 Mamoru TASAKA - 43-2 +- Apply upstream patch for fixing one byte ahead access in string manipulation + +* Sun Jul 14 2024 Mamoru TASAKA - 43-1 +- Update to 43 + +* Thu Jan 25 2024 Fedora Release Engineering - 42-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Mamoru TASAKA - 42-2 +- Fix compilation with -Werror=incompatible-pointer-types + +* Fri Dec 29 2023 Mamoru TASAKA - 42-1 +- Update to 42 +- Kill --with-adms +- Enable --with-klu + +* Wed Aug 16 2023 Mamoru TASAKA - 41-1 +- Update to 41 + +* Thu Jul 20 2023 Fedora Release Engineering - 40-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Apr 1 2023 Mamoru TASAKA - 40-1 +- Update to 40 + +* Fri Feb 3 2023 Mamoru TASAKA - 39.3-1 +- Update to 39.3 + +* Wed Feb 1 2023 Mamoru TASAKA - 39.2-1 +- Update to 39.2 + +* Wed Feb 1 2023 Mamoru TASAKA - 39-1 +- Update to 39 + +* Thu Jan 19 2023 Fedora Release Engineering - 38-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Oct 29 2022 Mamoru TASAKA - 38-1 +- Update to 38 + +* Wed Oct 26 2022 Mamoru TASAKA - 37-2 +- Split out codemodel files, and make ngspice, libngspice require codemodel +- Move scripts to %%_libdir, they were arch-dependent actually + +* Fri Jul 22 2022 Fedora Release Engineering - 37-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri May 20 2022 Mamoru TASAKA - 37-1 +- Update to 37 + +* Thu Jan 20 2022 Fedora Release Engineering - 36-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Dec 31 2021 Mamoru TASAKA - 36-1 +- Update to 36 + +* Mon Aug 9 2021 Mamoru TASAKA - 35-1 +- Update to 35 + +* Thu Jul 22 2021 Fedora Release Engineering - 34-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Feb 12 2021 Mamoru TASAKA - 34-2 +- build --with-ngshared with --with-readline=no to aviod missing + symbol for history_file, requested by the upstream + +* Tue Feb 2 2021 Mamoru TASAKA - 34-1 +- Update to 34 + - Don't enable --enable-oldapps + - cmpp not installed any more + - header file inclusion change + +* Tue Jan 26 2021 Fedora Release Engineering - 33-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Oct 19 2020 Mamoru TASAKA - 33-1 +- Update to 33 + +* Sat Aug 01 2020 Fedora Release Engineering - 32.2-1.2 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 32.2-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed May 6 2020 Mamoru TASAKA - 32.2-1 +- 32.2 tagged + +* Tue May 5 2020 Mamoru TASAKA - 32-1.D20200505gitbbe81ca +- Update to 32 +- Use upstream git to use some upstream fixes since release + +* Wed Jan 29 2020 Fedora Release Engineering - 31-4.respin2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Oct 7 2019 Mamoru TASAKA - 31-3.respin2 +- 31 tarball again respun + +* Sun Sep 29 2019 Mamoru TASAKA - 31-2.respin1 +- 31 tarball respun + +* Wed Sep 25 2019 Mamoru TASAKA - 31-1 +- Update to 31 + +* Thu Jul 25 2019 Fedora Release Engineering - 30-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Feb 17 2019 Igor Gnatenko - 30-4 +- Rebuild for readline 8.0 + +* Tue Feb 05 2019 Mamoru TASAKA - 30-3 +- F-30: mass rebuild + +* Sun Jan 20 2019 Mamoru TASAKA - 30-2 +- Remove some obsolete or dangerous configure options by + the request from the upstream (and ref: bug 1666505) + +* Tue Jan 1 2019 Mamoru TASAKA - 30-1 +- Update to 30 + +* Mon Dec 31 2018 Mamoru TASAKA - 29-2 +- Build shared library (bug 1440904 and so on) + +* Sun Dec 30 2018 Mamoru TASAKA - 29-1 +- Update to 29 + +* Fri Jul 13 2018 Fedora Release Engineering - 28-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 19 2018 Mamoru TASAKA - 28-1 +- Update to 28 (bug 1591460) + +* Thu Feb 08 2018 Fedora Release Engineering - 27-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Fri Sep 22 2017 Mamoru TASAKA - 27-1 - Update to 27 diff --git a/sources b/sources index d58e0ba..a6f3db9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (ngspice-27.tar.gz) = 1714f95ab5716c228a0b39395a742e8b9a823e0e6f7e08625d089541ea786df5fd7b9d2982bcec8431e27ac6ba7603ecc507f9cfcb0a6aacd53f5633f52bd2ea -SHA512 (ngspice-27-manual.pdf) = ed87764715917e2cd832c49e911a2908dba9907f9f01c933cb7f97a92c7f9ff345bc26a2f0561dd34b2eede6874b6a67b4864abf3dcff127bd0306e778e997b5 +SHA512 (ngspice-45.2.tar.gz) = 4090e9433457c0b49dc1e7561bc630a5c6a340391f26be8142c6bd514ae13b72137589964fe9ae5a01069c9de7d8457bd41b0811a335b2c93a3c6e07044b35b1 +SHA512 (ngspice-45-manual.pdf) = 425d9320a01d409c7baab83d111f92643cae7df62a109e06d7e4fd366262441f4fdd62532db63fb4d4af4cb98e478b4f9fca5bd6c63fb89507dba685220f34ab