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