ports/99399: [NEW PORT] cad/tclspice: Improved version on SPICE3 suite with TCL scripting features
Stanislav Sedov
ssedov at mbsd.msk.ru
Sat Jun 24 02:00:38 UTC 2006
>Number: 99399
>Category: ports
>Synopsis: [NEW PORT] cad/tclspice: Improved version on SPICE3 suite with TCL scripting features
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat Jun 24 02:00:36 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Stanislav Sedov
>Release: FreeBSD 7.0-CURRENT i386
>Organization:
MBSD labs, Inc.
>Environment:
System: FreeBSD fonon.realnet 7.0-CURRENT FreeBSD 7.0-CURRENT #7: Sun Jun 18 20:51:36 MSD 2006
>Description:
TclSpice is an improved version of Berkeley Spice designed to be used with
the Tcl/Tk scripting language. The project is open-source (BSD license)
and based upon the NG-Spice source code base with many improvements
Features and Improvements
- Fully Tcl scriptable - installs with 'package require spice' statement
- Hspice syntax (SpicePP).
- GUI interfaces, various (Tk).
- SpiceWish (BLT graph widget)
- BLT (tcl compatible) vectors for storage, manipulation and arithmetic
upon Spice waveforms.
- Xspice additions (Georgia Tech).
- Trigger upon waveform events.
- Spice 'simulator state' save and restore for rapid 'what-if' simulations
(no longer need to re-simulate from the beginning each time a
device value is changed).
Author: Stefan Jones <stefan.jones at multigig.com>
WWW: http://tclspice.sourceforge.net/
-------------------------------------------------------------------
I've decided to install tcl files to ${PREFIX}/lib/${PORTNAME} since
other tcl packaged do so.
>How-To-Repeat:
>Fix:
--- tclspice-0.2.18.shar begins here ---
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# tclspice
# tclspice/pkg-descr
# tclspice/Makefile
# tclspice/pkg-plist
# tclspice/files
# tclspice/files/patch-src_Makefile.am
# tclspice/files/patch-src_frontend_parser_complete.c
# tclspice/files/patch-src_frontend_aspice.c
# tclspice/files/patch-src_spicelib_devices_names.c
# tclspice/files/patch-src_spicepp.pl.in
# tclspice/files/patch-src_spicewish
# tclspice/files/patch-src_frontend_resource.c
# tclspice/files/patch-src_xspice_icm_Makefile
# tclspice/files/pkg-message.in
# tclspice/files/patch-src_tcl_vector_test.tcl
# tclspice/files/patch-src_tcl_plot.tcl
# tclspice/distinfo
#
echo c - tclspice
mkdir -p tclspice > /dev/null 2>&1
echo x - tclspice/pkg-descr
sed 's/^X//' >tclspice/pkg-descr << 'END-of-tclspice/pkg-descr'
XTclSpice is an improved version of Berkeley Spice designed to be used with
Xthe Tcl/Tk scripting language. The project is open-source (BSD license)
Xand based upon the NG-Spice source code base with many improvements
X
XFeatures and Improvements
X - Fully Tcl scriptable - installs with 'package require spice' statement
X - Hspice syntax (SpicePP).
X - GUI interfaces, various (Tk).
X - SpiceWish (BLT graph widget)
X - BLT (tcl compatible) vectors for storage, manipulation and arithmetic
X upon Spice waveforms.
X - Xspice additions (Georgia Tech).
X - Trigger upon waveform events.
X - Spice 'simulator state' save and restore for rapid 'what-if' simulations
X (no longer need to re-simulate from the beginning each time a
X device value is changed).
X
XAuthor: Stefan Jones <stefan.jones at multigig.com>
XWWW: http://tclspice.sourceforge.net/
END-of-tclspice/pkg-descr
echo x - tclspice/Makefile
sed 's/^X//' >tclspice/Makefile << 'END-of-tclspice/Makefile'
X# New ports collection makefile for: tclspice
X# Date created: 2006-06-24
X# Whom: Stanislav Sedov <stas at fonon.realnet>
X#
X# $FreeBSD$
X#
X
XPORTNAME= tclspice
XPORTVERSION= 0.2.18
XCATEGORIES= cad
XMASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
X
XMAINTAINER= ssedov at mbsd.msk.ru
XCOMMENT= Improved version on SPICE3 suite with TCL scripting features
X
XBUILD_DEPENDS= bltwish:${PORTSDIR}/x11-toolkits/blt
XRUN_DEPENDS= wish8.4:${PORTSDIR}/x11-toolkits/tk84
X
XWRKSRC= ${WRKDIR}/${PORTNAME}
XUSE_AUTOTOOLS= aclocal:19 automake:19 autoconf:259 libtool:15
XAUTOMAKE_ARGS= -c -a
XUSE_GMAKE= yes
XGNU_CONFIGURE= yes
XALL_TARGET= tcl
XINSTALL_TARGET= install-tcl
XINSTALLS_SHLIB= yes
X
XSUB_FILES= pkg-message
XPKGMESSAGE= ${WRKDIR}/pkg-message
X
XOPTIONS= EXPERIMENTAL "Enable experimental features" yes \
X EXAMPLES "Install sample scrips" yes
X
XCONFIGURE_ARGS= --with-tcl=${LOCALBASE}/lib/tcl8.4
XCONFIGURE_ENV= CFLAGS="-I${LOCALBASE}/include ${CFLAGS}" \
X LDFLAGS="-L${LOCALBASE}/lib"
XACLOCAL_ARGS= --acdir=${ACLOCAL_DIR} -I ${LOCALBASE}/share/aclocal
X
XWISH= ${LOCALBASE}/bin/wish8.4
X
X.include <bsd.port.pre.mk>
X.if defined(WITH_EXPERIMENTAL)
XCONFIGURE_ARGS+= --enable-experimental
X.endif
X
X.if defined(WITH_EXAMPLES)
XPLIST_SUB+= EXAMPLES=""
X.else
XPLIST_SUB+= EXAMPLES="@comment "
X.endif
X
Xpost-patch:
X.for FILE in spicewish tcl/plot.tcl tcl/vector_test.tcl
X @${REINPLACE_CMD} -e 's|%%WISH%%|${WISH}|g' ${WRKSRC}/src/${FILE}
X.endfor
X
Xpost-install:
X.if defined(WITH_EXAMPLES)
X @${MKDIR} ${EXAMPLESDIR}
X.for FILE in README example.cir plot.tcl vector_test.tcl
X @${INSTALL_DATA} ${WRKSRC}/src/tcl/${FILE} ${EXAMPLESDIR}
X.endfor
X @${CAT} ${PKGMESSAGE}
X.endif
X
X.include <bsd.port.post.mk>
END-of-tclspice/Makefile
echo x - tclspice/pkg-plist
sed 's/^X//' >tclspice/pkg-plist << 'END-of-tclspice/pkg-plist'
Xbin/spicewish
Xlib/libspice.so
Xlib/tclspice/controls.tcl
Xlib/tclspice/engUnits.tcl
Xlib/tclspice/gnuplot.tcl
Xlib/tclspice/measure.tcl
Xlib/tclspice/measure_spice.pl
Xlib/tclspice/nodeDialog.tcl
Xlib/tclspice/pkgIndex.tcl
Xlib/tclspice/readline.tcl
Xlib/tclspice/spicepp.pl
Xlib/tclspice/spicepp.tcl
Xlib/tclspice/spicewish.tcl
Xlib/tclspice/viewer.tcl
X%%DATADIR%%/helpdir/ngspice.idx
X%%DATADIR%%/helpdir/ngspice.txt
X%%DATADIR%%/scripts/setplot
X%%DATADIR%%/scripts/spectrum
X%%DATADIR%%/scripts/spinit
X%%EXAMPLES%%share/examples/tclspice/README
X%%EXAMPLES%%share/examples/tclspice/example.cir
X%%EXAMPLES%%share/examples/tclspice/plot.tcl
X%%EXAMPLES%%share/examples/tclspice/vector_test.tcl
X%%EXAMPLES%%@dirrm share/examples/tclspice
X at dirrm lib/tclspice
X at dirrm %%DATADIR%%/helpdir
X at dirrm %%DATADIR%%/scripts
X at dirrm %%DATADIR%%
END-of-tclspice/pkg-plist
echo c - tclspice/files
mkdir -p tclspice/files > /dev/null 2>&1
echo x - tclspice/files/patch-src_Makefile.am
sed 's/^X//' >tclspice/files/patch-src_Makefile.am << 'END-of-tclspice/files/patch-src_Makefile.am'
X--- src/Makefile.am.orig Fri Jul 23 20:22:10 2004
X+++ src/Makefile.am Sat Jun 24 03:43:15 2006
X@@ -181,12 +181,12 @@
X
X pkgIndex.tcl: pkgIndex.tcl.in
X rm -f $@
X- sed -e 's;%LIB_DIR%;$(TCL_PKG_PATH);g' $< | \
X+ sed -e 's;%LIB_DIR%;$(libdir);g' $< | \
X sed -e 's;%VERSION%;$(TCLSPICE_VERSION);g' > $@
X
X spicepp.pl: spicepp.pl.in
X rm -f $@
X- sed -e 's;%LIB_DIR%;$(TCL_PKG_PATH);g' $< | \
X+ sed -e 's;%LIB_DIR%;$(libdir);g' $< | \
X sed -e 's;%VERSION%;$(TCLSPICE_VERSION);g' > $@
X
X install-tcl: install-tcl-recursive install-tclspice install-data-am
X@@ -199,17 +199,17 @@
X done;
X
X install-tclspice: $(TCL_FILES)
X- $(mkinstalldirs) $(DESTDIR)$(TCL_PKG_PATH)
X- $(INSTALL_DATA) libspice.so $(DESTDIR)$(TCL_PKG_PATH)
X- $(mkinstalldirs) $(DESTDIR)$(TCL_PKG_PATH)/spice
X- $(INSTALL_PROGRAM) spicepp.pl $(DESTDIR)$(TCL_PKG_PATH)/spice
X- $(INSTALL_PROGRAM) measure_spice.pl $(DESTDIR)$(TCL_PKG_PATH)/spice
X+ $(mkinstalldirs) $(DESTDIR)$(libdir)
X+ $(INSTALL_DATA) libspice.so $(DESTDIR)$(libdir)
X+ $(mkinstalldirs) $(DESTDIR)$(libdir)/tclspice
X+ $(INSTALL_SCRIPT) spicepp.pl $(DESTDIR)$(libdir)/tclspice
X+ $(INSTALL_SCRIPT) measure_spice.pl $(DESTDIR)$(libdir)/tclspice
X @for f in $(TCL_SOURCE) ; do \
X- echo $(INSTALL_DATA) $$f $(DESTDIR)$(TCL_PKG_PATH)/spice; \
X- $(INSTALL_DATA) $$f $(DESTDIR)$(TCL_PKG_PATH)/spice; \
X+ echo $(INSTALL_DATA) $$f $(DESTDIR)$(libdir)/tclspice; \
X+ $(INSTALL_DATA) $$f $(DESTDIR)$(libdir)/tclspice; \
X done
X $(mkinstalldirs) $(DESTDIR)$(bindir)
X- $(INSTALL_PROGRAM) spicewish $(DESTDIR)$(bindir)
X+ $(INSTALL_SCRIPT) spicewish $(DESTDIR)$(bindir)
X
X tclspice.o: tclspice.c
X $(COMPILE) -c -fpic tclspice.c -DTCLSPICE_version="\"$(TCLSPICE_VERSION)\""
X@@ -229,4 +229,4 @@
X (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) all) \
X || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
X done;
X- make $(TCL_FILES)
X+ gmake $(TCL_FILES)
END-of-tclspice/files/patch-src_Makefile.am
echo x - tclspice/files/patch-src_frontend_parser_complete.c
sed 's/^X//' >tclspice/files/patch-src_frontend_parser_complete.c << 'END-of-tclspice/files/patch-src_frontend_parser_complete.c'
X--- ./src/frontend/parser/complete.c.orig Sat Jun 24 01:40:09 2006
X+++ ./src/frontend/parser/complete.c Sat Jun 24 01:40:17 2006
X@@ -415,7 +415,7 @@
X # else
X # ifdef HAVE_TERMIOS_H
X
X-# if defined(__NetBSD__) || defined(__APPLE_CC__)
X+# if defined(__NetBSD__) || defined(__APPLE_CC__) || defined(__FreeBSD__)
X # define TCGETS
X # define TCSETS
X # endif
X@@ -428,7 +428,7 @@
X # endif
X # endif
X
X-# if defined(TERM_GET) || defined(__NetBSD__) || defined(__APPLE_CC__)
X+# if defined(TERM_GET) || defined(__NetBSD__) || defined(__APPLE_CC__) || defined(__FreeBSD__)
X static bool ison = FALSE;
X
X if (cp_nocc || !cp_interactive || (ison == on))
X@@ -436,7 +436,7 @@
X ison = on;
X
X if (ison == TRUE) {
X-#if defined(__NetBSD__) || defined(__APPLE_CC__)
X+#if defined(__NetBSD__) || defined(__APPLE_CC__) || defined(__FreeBSD__)
X tcgetattr(fileno(cp_in),&OS_Buf);
X #else
X (void) ioctl(fileno(cp_in), TERM_GET, (char *) &OS_Buf);
X@@ -445,13 +445,13 @@
X sbuf.c_cc[VEOF] = 0;
X sbuf.c_cc[VEOL] = ESCAPE;
X sbuf.c_cc[VEOL2] = CNTRL_D;
X-#if defined(__NetBSD__) || defined(__APPLE_CC__)
X+#if defined(__NetBSD__) || defined(__APPLE_CC__) || defined(__FreeBSD__)
X tcsetattr(fileno(cp_in),TCSANOW,&sbuf);
X #else
X (void) ioctl(fileno(cp_in), TERM_SET, (char *) &sbuf);
X #endif
X } else {
X-#if defined(__NetBSD__) || defined(__APPLE_CC__)
X+#if defined(__NetBSD__) || defined(__APPLE_CC__) || defined(__FreeBSD__)
X tcsetattr(fileno(cp_in),TCSANOW,&OS_Buf);
X #else
X (void) ioctl(fileno(cp_in), TERM_SET, (char *) &OS_Buf);
END-of-tclspice/files/patch-src_frontend_parser_complete.c
echo x - tclspice/files/patch-src_frontend_aspice.c
sed 's/^X//' >tclspice/files/patch-src_frontend_aspice.c << 'END-of-tclspice/files/patch-src_frontend_aspice.c'
X--- ./src/frontend/aspice.c.orig Sat Jun 24 01:39:15 2006
X+++ ./src/frontend/aspice.c Sat Jun 24 01:39:39 2006
X@@ -176,7 +176,7 @@
X * whether the exit was normal or not.
X */
X
X-#if defined(__NetBSD__) || defined(SOLARIS)
X+#if defined(__NetBSD__) || defined(SOLARIS) || defined(__FreeBSD__)
X pid_t status;
X #else
X union wait status;
END-of-tclspice/files/patch-src_frontend_aspice.c
echo x - tclspice/files/patch-src_spicelib_devices_names.c
sed 's/^X//' >tclspice/files/patch-src_spicelib_devices_names.c << 'END-of-tclspice/files/patch-src_spicelib_devices_names.c'
X--- ./src/spicelib/devices/names.c.orig Sat Jun 24 02:01:08 2006
X+++ ./src/spicelib/devices/names.c Sat Jun 24 02:01:17 2006
X@@ -28,7 +28,6 @@
X #include <assert.h>
X #include <stdlib.h>
X #include <string.h>
X-#include <malloc.h>
X
X #define __NAMES_PRIVATE__
X #include "names.h"
END-of-tclspice/files/patch-src_spicelib_devices_names.c
echo x - tclspice/files/patch-src_spicepp.pl.in
sed 's/^X//' >tclspice/files/patch-src_spicepp.pl.in << 'END-of-tclspice/files/patch-src_spicepp.pl.in'
X--- src/spicepp.pl.in.orig Sat Jun 24 03:44:04 2006
X+++ src/spicepp.pl.in Sat Jun 24 03:44:16 2006
X@@ -307,7 +307,7 @@
X push(@xtra, ".control");
X push(@xtra, "print time $trig $targ > meas.data");
X push(@xtra, "echo $_ > meas.ctl");
X- push(@xtra, "shell %LIB_DIR%/spice/measure_spice.pl $name");
X+ push(@xtra, "shell %LIB_DIR%/tclspice/measure_spice.pl $name");
X push(@xtra, ".endc");
X splice(@deck,$i,1, at xtra);
X @xtra=();
END-of-tclspice/files/patch-src_spicepp.pl.in
echo x - tclspice/files/patch-src_spicewish
sed 's/^X//' >tclspice/files/patch-src_spicewish << 'END-of-tclspice/files/patch-src_spicewish'
X--- src/spicewish.orig Sat Jun 24 04:21:41 2006
X+++ src/spicewish Sat Jun 24 04:21:59 2006
X@@ -2,7 +2,7 @@
X # 22/6/04 -ad
X
X # the next line starts SpiceWish interactively with the given file name \
X-exec wish "$0" "$@"
X+exec %%WISH%% "$0" "$@"
X
X package require spice
X package require tclreadline
END-of-tclspice/files/patch-src_spicewish
echo x - tclspice/files/patch-src_frontend_resource.c
sed 's/^X//' >tclspice/files/patch-src_frontend_resource.c << 'END-of-tclspice/files/patch-src_frontend_resource.c'
X--- src/frontend/resource.c.orig Sat Jun 24 04:53:17 2006
X+++ src/frontend/resource.c Sat Jun 24 04:55:41 2006
X@@ -311,7 +311,7 @@
X static RETSIGTYPE
X fault(void)
X {
X- signal(SIGSEGV, (SIGNAL_FUNCTION) fault); /* SysV style */
X+ signal(SIGBUS, (SIGNAL_FUNCTION) fault); /* SysV style */
X siglongjmp(env, 1);
X }
X #if !defined(__MINGW32__) && !defined(__APPLE_CC__)
X@@ -321,7 +321,8 @@
X char *low, *high, *at;
X /* char *sbrk(int); */
X long x;
X- RETSIGTYPE (*orig_signal)( );
X+ RETSIGTYPE (*orig_sigsegv)( );
X+ RETSIGTYPE (*orig_sigbus)( );
X
X if (getenv("SPICE_NO_DATASEG_CHECK"))
X return 0;
X@@ -330,7 +331,8 @@
X low = 0;
X high = (char *) ((unsigned long) sbrk(0) & ~((1 << LOG2_PAGESIZE) - 1));
X
X- orig_signal = signal(SIGSEGV, (SIGNAL_FUNCTION) fault);
X+ orig_sigsegv = signal(SIGSEGV, (SIGNAL_FUNCTION) fault);
X+ orig_sigbus = signal(SIGBUS, (SIGNAL_FUNCTION) fault);
X
X do {
X
X@@ -358,7 +360,8 @@
X
X } while (1);
X
X- (void) signal(SIGSEGV, (SIGNAL_FUNCTION) orig_signal);
X+ (void) signal(SIGSEGV, (SIGNAL_FUNCTION) orig_sigsegv);
X+ (void) signal(SIGBUS, (SIGNAL_FUNCTION) orig_sigbus);
X return (void *) high;
X }
X #endif
END-of-tclspice/files/patch-src_frontend_resource.c
echo x - tclspice/files/patch-src_xspice_icm_Makefile
sed 's/^X//' >tclspice/files/patch-src_xspice_icm_Makefile << 'END-of-tclspice/files/patch-src_xspice_icm_Makefile'
X--- src/xspice/icm/Makefile.orig Sat Jun 24 05:04:12 2006
X+++ src/xspice/icm/Makefile Sat Jun 24 05:04:39 2006
X@@ -12,9 +12,9 @@
X -include .deps/cm.P
X -include .deps/dlmain.P
X
X-UPMAKE = make -f $(TOPDIR)../Makefile TOPDIR=$(TOPDIR)../
X+UPMAKE = gmake -f $(TOPDIR)../Makefile TOPDIR=$(TOPDIR)../
X
X-MAKE = make -f $(TOPDIR)Makefile TOPDIR=$(TOPDIR)
X+MAKE = gmake -f $(TOPDIR)Makefile TOPDIR=$(TOPDIR)
X
X COMPILE = $(CC) $(INCLUDES) $(CFLAGS)
X
END-of-tclspice/files/patch-src_xspice_icm_Makefile
echo x - tclspice/files/pkg-message.in
sed 's/^X//' >tclspice/files/pkg-message.in << 'END-of-tclspice/files/pkg-message.in'
X============================================================================
X
XExample scrips was installed in %%EXAMPLESDIR%%. Take a
Xlook on %%EXAMPLESDIR%%/README for additional information
Xon how to create your own Tcl scrips.
X
X============================================================================
END-of-tclspice/files/pkg-message.in
echo x - tclspice/files/patch-src_tcl_vector_test.tcl
sed 's/^X//' >tclspice/files/patch-src_tcl_vector_test.tcl << 'END-of-tclspice/files/patch-src_tcl_vector_test.tcl'
X--- src/tcl/vector_test.tcl.orig Sat Jun 24 05:37:20 2006
X+++ src/tcl/vector_test.tcl Sat Jun 24 05:37:14 2006
X@@ -1,6 +1,6 @@
X #!/bin/sh
X # WishFix \
X- exec wish -f "$0" ${1+"$@"}
X+ exec %%WISH%% -f "$0" ${1+"$@"}
X ###
X
X package require BLT
END-of-tclspice/files/patch-src_tcl_vector_test.tcl
echo x - tclspice/files/patch-src_tcl_plot.tcl
sed 's/^X//' >tclspice/files/patch-src_tcl_plot.tcl << 'END-of-tclspice/files/patch-src_tcl_plot.tcl'
X--- src/tcl/plot.tcl.orig Sat Jun 24 05:36:11 2006
X+++ src/tcl/plot.tcl Sat Jun 24 05:36:33 2006
X@@ -1,6 +1,6 @@
X #!/bin/sh
X # WishFix \
X- exec wish -f "$0" ${1+"$@"}
X+ exec %%WISH%% -f "$0" ${1+"$@"}
X ###
X
X package require spice
END-of-tclspice/files/patch-src_tcl_plot.tcl
echo x - tclspice/distinfo
sed 's/^X//' >tclspice/distinfo << 'END-of-tclspice/distinfo'
XMD5 (tclspice-0.2.18.tar.gz) = a7c02132ca74064611011f8dee6bd3d5
XSHA256 (tclspice-0.2.18.tar.gz) = 0393a61b89a56b5dba2444a8914cb85b6212b552f2fbc80f0a822bfe04b74f5e
XSIZE (tclspice-0.2.18.tar.gz) = 2985319
END-of-tclspice/distinfo
exit
--- tclspice-0.2.18.shar ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list