Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Jan 1999 23:04:41 +0000
From:      dmlb@ragnet.demon.co.uk
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Cc:        dmlb@ragnet.demon.co.uk
Subject:   ports/9453: New port itcl-3.0.1
Message-ID:  <E0zzqO1-0006uO-00@ragnet.demon.co.uk>

next in thread | raw e-mail | index | archive | help

>Number:         9453
>Category:       ports
>Synopsis:       New port for itcl-3.0.1
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 11 22:40:00 PST 1999
>Closed-Date:
>Last-Modified:
>Originator:     Duncan Barclay
>Release:        FreeBSD 2.2.6-RELEASE i386
>Organization:
>Environment:

	Affects all FreeBSDs.

	Tested and built under
		FreeBSD computer.my.domain 2.2.6-RELEASE FreeBSD 2.2.6-RELEASE #0: Sat Aug 22 17:11:37 BST 1998     dmlb@computer.my.domain:/usr/src/sys/compile/COMPUTER  i386
	with <bsd.port.mk> at
	$Id: bsd.port.mk,v 1.227.2.63 1998/11/25 00:13:01 asami Exp $
	(which successfully built Tcl 8.0.4 fine from ports cvsup'd
	Sat 9/1/99).

>Description:

	Itcl has moved on since the last port...Here's the latest and
	greatest version. Also get it from the right place.

	I've tried to follow the format that tcl80 and tk80 have used for
	libraries etc. It should be ELF, please test.

	There are companion ports for Itk and Iwidgets. They are
	separate so that people can just have OO Tcl without needing X11
	or Tk to build Itk/IWidgets. See accompaning PRs.

	The only departure is that I have all of my Tcl/Tk manual pages
	under /usr/local/share/itcl${VERSION}/man so that I can actually
	read the man pages for the version of Tcl/Tk etc I am using that
	day. This is a general problem with all of the Tcl ports (they
	overwrite manual pages). I can't see what a general fix would be
	though. Have a look for the # DMLB markers in Makefile.

>How-To-Repeat:

	grep DISTNAME /usr/ports/lang/itcl/Makefile

>Fix:
	
# 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:
#
#	itcl30
#	itcl30/Makefile
#	itcl30/files
#	itcl30/files/md5
#	itcl30/files/makefile
#	itcl30/files/Makefile.lib
#	itcl30/patches
#	itcl30/patches/patch-configure
#	itcl30/patches/patch-Makefile.in
#	itcl30/pkg
#	itcl30/pkg/COMMENT
#	itcl30/pkg/DESCR
#	itcl30/pkg/PLIST
#
echo c - itcl30
mkdir -p itcl30 > /dev/null 2>&1
echo x - itcl30/Makefile
sed 's/^X//' >itcl30/Makefile << 'END-of-itcl30/Makefile'
X# New ports collection makefile for:	itcl
X# Version required:	2.1
X# Date created:		Aug 17 1996
X# Whom:			chuckr
X#
X# $Id: Makefile,v 1.20 1997/07/17 15:12:47 max Exp $
X#
X
XDISTNAME=	itcl3.0.1
XPKGNAME=	itcl-3.0.1
XCATEGORIES=	lang
XMASTER_SITES=	ftp://ftp.tcltk.com/pub/itcl/
X
XMAINTAINER=	dmlb@ragnet.demon.co.uk
X
XLIB_DEPENDS=	tcl80.1:${PORTSDIR}/lang/tcl80
X
XWRKSRC=		${WRKDIR}/itcl3.0.1/itcl/unix
XGNU_CONFIGURE=	yes
XCONFIGURE_ARGS=	--enable-shared --prefix=${PREFIX} --with-tcl=${TCL_PREFIX}/lib/tcl8.0
XCONFIGURE_ENV=	PORTSDIR=${PORTSDIR} ITCL_LIB_FILE=${ITCL_LIB_FILE}
X
XTCL_PREFIX?=	${PREFIX}
XSHLIB_MAJOR=	1
XSHLIB_MINOR=	1
XMAKEFILE=	makefile
XITCL_LIB=	libitcl30.so
X
X.include <bsd.port.pre.mk>
X
X.if ${PORTOBJFORMAT} == "elf"
XITCL_LIB_FILE=	${ITCL_LIB}.${SHLIB_MAJOR}
X.else
XITCL_LIB_FILE=	${ITCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR}
X.endif
X
Xpost-configure:
X	@${CP} ${FILESDIR}/Makefile.lib ${WRKSRC}
X	@${CP} ${FILESDIR}/makefile     ${WRKSRC}
X
Xpre-build:
X	@cd ${WRKSRC} && ${MAKE} -f Makefile.lib PREFIX=${PREFIX} \
X	   SHLIB_MAJOR=${SHLIB_MAJOR} SHLIB_MINOR=${SHLIB_MINOR} \
X	   TCL_PREFIX=${TCL_PREFIX}
X
X# DMLB - BEGIN
Xpre-install:
X	${MKDIR} -p ${PREFIX}/share/itcl3.0
X# DMLB - END
Xpost-install:
X	# DMLB - BEGIN
X	${MKDIR} -p ${PREFIX}/share/itcl3.0/man/cat1
X	${MKDIR} -p ${PREFIX}/share/itcl3.0/man/catn
X	/bin/chmod 0755 ${PREFIX}/share/itcl3.0/man/*
X	/usr/sbin/chown root:wheel ${PREFIX}/share/itcl3.0/man/man?
X	/usr/sbin/chown man:wheel ${PREFIX}/share/itcl3.0/man/cat?
X	# DMLB - END
X	${LN} -sf ${ITCL_LIB_FILE} ${PREFIX}/lib/${ITCL_LIB}
X	${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m ${PREFIX}/lib
X
X.include <bsd.port.post.mk>
END-of-itcl30/Makefile
echo c - itcl30/files
mkdir -p itcl30/files > /dev/null 2>&1
echo x - itcl30/files/md5
sed 's/^X//' >itcl30/files/md5 << 'END-of-itcl30/files/md5'
XMD5 (itcl3.0.1.tar.gz) = 0cf1802a7ea69670503dc69c7951a015
END-of-itcl30/files/md5
echo x - itcl30/files/makefile
sed 's/^X//' >itcl30/files/makefile << 'END-of-itcl30/files/makefile'
Xall:
X	for f in ../generic/*.o; do ln -sf $$f; done
X	make -f Makefile itclsh
Xtest:
X	make -f Makefile test
Xinstall:
X	make -f Makefile install
X
END-of-itcl30/files/makefile
echo x - itcl30/files/Makefile.lib
sed 's/^X//' >itcl30/files/Makefile.lib << 'END-of-itcl30/files/Makefile.lib'
XNOPROFILE=	yes
XLIB=		itcl30
XITCL_LIBRARY=	${PREFIX}/lib/itcl3.0
XCFLAGS+=	-I. -I./../generic \
X		-I${TCL_PREFIX}/include/tcl8.0/generic \
X		-DHAVE_GETCWD=1 -DNO_VALUES_H=1 -DHAVE_UNISTD_H=1 -DUSE_TERMIOS=1\
X		-DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1\
X		-DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1\
X		-DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1\
X		-DTCL_SHLIB_EXT=\".so\" \
X		-DHAVE_SYS_FILIO_H=1 \
X		-DRETSIGTYPE=void \
X		-DITCL_LIBRARY=\"${ITCL_LIBRARY}\" \
X
X
XGENERIC_DIR=	../generic
XUNIX_DIR=	.
X
XSRCS=	\
X		$(GENERIC_DIR)/itcl_bicmds.c \
X		$(GENERIC_DIR)/itcl_class.c \
X		$(GENERIC_DIR)/itcl_cmds.c \
X		$(GENERIC_DIR)/itcl_ensemble.c \
X		$(GENERIC_DIR)/itcl_linkage.c \
X		$(GENERIC_DIR)/itcl_methods.c \
X		$(GENERIC_DIR)/itcl_migrate.c \
X		$(GENERIC_DIR)/itcl_objects.c \
X		$(GENERIC_DIR)/itcl_obsolete.c \
X		$(GENERIC_DIR)/itcl_parse.c \
X		$(GENERIC_DIR)/itcl_util.c
X
X.include <bsd.lib.mk>
END-of-itcl30/files/Makefile.lib
echo c - itcl30/patches
mkdir -p itcl30/patches > /dev/null 2>&1
echo x - itcl30/patches/patch-configure
sed 's/^X//' >itcl30/patches/patch-configure << 'END-of-itcl30/patches/patch-configure'
X--- configure~	Mon Oct 19 21:14:58 1998
X+++ configure	Sun Jan 10 20:02:07 1999
X@@ -1011,13 +1011,13 @@
X         { echo "configure: error: Tcl was not built with --enable-shared" 1>&2; exit 1; }
X     fi
X     SHLIB_CFLAGS="${SHLIB_CFLAGS}"
X-    eval "ITCL_LIB_FILE=libitcl${VERSION}${SHLIB_SUFFIX}"
X+    eval "ITCL_LIB_FILE=${ITCL_LIB_FILE}"
X     ITCL_PKG_FILE="[file join [file dirname \$dir] ${ITCL_LIB_FILE}]"
X     MAKE_LIB="\$(SHLIB_LD) -o ${ITCL_LIB_FILE} \$(OBJS) ${SHLIB_LD_LIBS} \$(LD_SEARCH_FLAGS)"
X     RANLIB=":"
X else
X     SHLIB_CFLAGS=""
X-    eval "ITCL_LIB_FILE=libitcl${VERSION}.a"
X+    eval "ITCL_LIB_FILE=${ITCL_LIB_FILE}"
X     ITCL_PKG_FILE=""
X     MAKE_LIB="ar cr ${ITCL_LIB_FILE} \${OBJS}"
X fi
END-of-itcl30/patches/patch-configure
echo x - itcl30/patches/patch-Makefile.in
sed 's/^X//' >itcl30/patches/patch-Makefile.in << 'END-of-itcl30/patches/patch-Makefile.in'
X--- Makefile.in~	Wed Aug 12 11:02:00 1998
X+++ Makefile.in	Sun Jan 10 20:24:24 1999
X@@ -55,10 +55,12 @@
X BIN_INSTALL_DIR =	$(INSTALL_ROOT)$(exec_prefix)/bin
X 
X # Directory in which to install the include file itcl.h:
X-INCLUDE_INSTALL_DIR =	$(INSTALL_ROOT)$(prefix)/include
X+INCLUDE_INSTALL_DIR =	$(INSTALL_ROOT)$(prefix)/include/itcl$(VERSION)
X+GENERIC_INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(prefix)/include/itcl$(VERSION)/generic
X+UNIX_INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(prefix)/include/itcl$(VERSION)/unix
X 
X # Top-level directory in which to install manual entries:
X-MAN_INSTALL_DIR =	$(INSTALL_ROOT)$(prefix)/man
X+MAN_INSTALL_DIR =	$(INSTALL_ROOT)$(prefix)/share/itcl$(VERSION)/man
X 
X # Directory in which to install manual entry for itclsh:
X MAN1_INSTALL_DIR =	$(MAN_INSTALL_DIR)/man1
X@@ -115,7 +117,7 @@
X # "install" around;  better to use the install-sh script that comes
X # with the distribution, which is slower but guaranteed to work.
X 
X-INSTALL = $(TOP_DIR)/../config/install-sh -c
X+INSTALL =		install -c
X INSTALL_PROGRAM =       ${INSTALL}
X INSTALL_DATA =          ${INSTALL} -m 644
X MKINSTALLDIRS =         $(TOP_DIR)/../config/mkinstalldirs
X@@ -178,13 +180,19 @@
X 	itcl_linkage.o itcl_methods.o itcl_migrate.o itcl_objects.o \
X 	itcl_obsolete.o itcl_parse.o itcl_util.o
X 
X-all: $(ITCL_LIB_FILE) itclsh
X+all: $(ITCL_LIB_FILE) libitcl30.a itclsh
X 
X @ITCL_LIB_FILE@:  $(OBJS)
X 	rm -f $(ITCL_LIB_FILE)
X 	@MAKE_LIB@
X+	ln -sf $(ITCL_LIB_FILE) libitcl30.so
X 	$(RANLIB) $(ITCL_LIB_FILE)
X 
X+libitcl30.a: $(OBJS)
X+	rm -f libitcl30.a
X+	ar cr libitcl30.a $(OBJS)
X+	ranlib libitcl30.a
X+
X itclsh: tclAppInit.o $(ITCL_LIB_FILE)
X 	$(CC) @LD_FLAGS@ tclAppInit.o @ITCL_BUILD_LIB_SPEC@ \
X 		$(LIBS) $(LD_SEARCH_FLAGS) -o itclsh
X@@ -199,21 +207,28 @@
X 
X install: install-binaries install-libraries install-man
X 
X-install-binaries: $(ITCL_LIB_FILE) itclsh
X+install-binaries: $(ITCL_LIB_FILE) libitcl30.a itclsh
X 	@$(MKINSTALLDIRS) $(LIB_INSTALL_DIR) $(BIN_INSTALL_DIR)
X 	@echo "Installing $(ITCL_LIB_FILE)"
X 	@$(INSTALL_DATA) $(ITCL_LIB_FILE) $(LIB_INSTALL_DIR)/$(ITCL_LIB_FILE)
X 	@(cd $(LIB_INSTALL_DIR); $(RANLIB) $(ITCL_LIB_FILE))
X 	chmod 555 $(LIB_INSTALL_DIR)/$(ITCL_LIB_FILE)
X+	@echo "Installing libitcl30.a"
X+	@$(INSTALL_DATA) libitcl30.a $(LIB_INSTALL_DIR)/libitcl30.a
X+	@(cd $(LIB_INSTALL_DIR); $(RANLIB) libitcl30.a)
X+	chmod 555 $(LIB_INSTALL_DIR)/libitcl30.a
X 	@echo "Installing itclsh"
X 	$(INSTALL_PROGRAM) itclsh $(BIN_INSTALL_DIR)/itclsh$(VERSION)
X 	@echo "Installing itclConfig.sh"
X-	@$(INSTALL_DATA) itclConfig.sh $(LIB_INSTALL_DIR)/itclConfig.sh
X+	@mkdir -p $(SCRIPT_INSTALL_DIR)
X+	@$(INSTALL_DATA) itclConfig.sh $(SCRIPT_INSTALL_DIR)/itclConfig.sh
X 
X install-libraries:
X-	@$(MKINSTALLDIRS) $(INCLUDE_INSTALL_DIR) $(SCRIPT_INSTALL_DIR)
X-	@echo "Installing itcl.h"
X-	@$(INSTALL_DATA) $(GENERIC_DIR)/itcl.h $(INCLUDE_INSTALL_DIR)
X+	@$(MKINSTALLDIRS) $(INCLUDE_INSTALL_DIR) $(GENERIC_INCLUDE_INSTALL_DIR) $(UNIX_INCLUDE_INSTALL_DIR) $(SCRIPT_INSTALL_DIR)
X+	@echo "Installing itcl.h and itclInt.h"
X+	@$(INSTALL_DATA) $(GENERIC_DIR)/itcl.h $(GENERIC_INCLUDE_INSTALL_DIR)
X+	@$(INSTALL_DATA) $(GENERIC_DIR)/itclInt.h $(GENERIC_INCLUDE_INSTALL_DIR)
X+	@ln -sf $(GENERIC_INCLUDE_INSTALL_DIR)/itcl.h $(INCLUDE_INSTALL_DIR)/itcl.h
X 	@for i in $(TOP_DIR)/library/*.* $(UNIX_DIR)/tclAppInit.c; \
X 	    do \
X 	    echo "Installing $$i"; \
X@@ -227,19 +242,26 @@
X 	@cd $(TOP_DIR)/doc; for i in *.1; \
X 	    do \
X 	    echo "Installing doc/$$i"; \
X-	    rm -f $(MAN1_INSTALL_DIR)/$$i; \
X+	    rm -f $(MAN1_INSTALL_DIR)/$$i $(MAN1_INSTALL_DIR)/$$i.gz; \
X 	    sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
X-		    $$i > $(MAN1_INSTALL_DIR)/$$i; \
X-	    chmod 444 $(MAN1_INSTALL_DIR)/$$i; \
X+		    $$i | gzip -c > $(MAN1_INSTALL_DIR)/$$i.gz; \
X+	    chmod 444 $(MAN1_INSTALL_DIR)/$$i.gz; \
X 	    done;
X 	@cd $(TOP_DIR)/doc; for i in *.n; \
X 	    do \
X 	    echo "Installing doc/$$i"; \
X-	    rm -f $(MANN_INSTALL_DIR)/$$i; \
X+	    rm -f $(MANN_INSTALL_DIR)/$$i $(MANN_INSTALL_DIR)/$$i.gz; \
X 	    sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
X-		    $$i > $(MANN_INSTALL_DIR)/$$i; \
X-	    chmod 444 $(MANN_INSTALL_DIR)/$$i; \
X+		    $$i | gzip -c > $(MANN_INSTALL_DIR)/$$i.gz; \
X+	    chmod 444 $(MANN_INSTALL_DIR)/$$i.gz; \
X 	    done;
X+	@echo "**********"
X+	@echo "IMPORTANT:"
X+	@echo "**********"
X+	@echo "itclConfig.sh in $(SCRIPT_INSTALL_DIR)/itclConfig.sh"
X+	@echo "itcl.h        in $(INCLUDE_INSTALL_DIR)/itcl.h"
X+	@echo "There are NOT default place, but good place to avoid"
X+	@echo "conflicting with another version of [incr] Tcl/Tks."
X 
X Makefile: $(UNIX_DIR)/Makefile.in
X 	$(SHELL) config.status
END-of-itcl30/patches/patch-Makefile.in
echo c - itcl30/pkg
mkdir -p itcl30/pkg > /dev/null 2>&1
echo x - itcl30/pkg/COMMENT
sed 's/^X//' >itcl30/pkg/COMMENT << 'END-of-itcl30/pkg/COMMENT'
X[incr Tcl] (A.K.A. ``itcl'').
END-of-itcl30/pkg/COMMENT
echo x - itcl30/pkg/DESCR
sed 's/^X//' >itcl30/pkg/DESCR << 'END-of-itcl30/pkg/DESCR'
XThis package contains [incr Tcl] version 3.0.1.  [incr Tcl] is an
Xobject oriented extension to Tcl. The [incr Tcl] language is also known as
X``itcl''.
X
XA companion to [incr Tcl] called [incr Tk] builds a ``mega-widget''
Xframework into Tk. The [incr Tk] extension is also known as
X``itk'' and is available in x11-toolkits.
END-of-itcl30/pkg/DESCR
echo x - itcl30/pkg/PLIST
sed 's/^X//' >itcl30/pkg/PLIST << 'END-of-itcl30/pkg/PLIST'
Xbin/itclsh3.0
Xinclude/itcl3.0/generic/itcl.h
Xinclude/itcl3.0/generic/itclInt.h
Xinclude/itcl3.0/itcl.h
Xlib/libitcl30.so.1.1
Xlib/libitcl30.so
Xlib/libitcl30.a
X@exec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -m %B
X@unexec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -R
Xlib/itcl3.0/itclConfig.sh
Xlib/itcl3.0/itcl.tcl
Xlib/itcl3.0/tclAppInit.c
Xlib/itcl3.0/pkgIndex.tcl
Xshare/itcl3.0/man/man1/itclsh.1.gz
Xshare/itcl3.0/man/mann/body.n.gz
Xshare/itcl3.0/man/mann/class.n.gz
Xshare/itcl3.0/man/mann/code.n.gz
Xshare/itcl3.0/man/mann/configbody.n.gz
Xshare/itcl3.0/man/mann/delete.n.gz
Xshare/itcl3.0/man/mann/ensemble.n.gz
Xshare/itcl3.0/man/mann/find.n.gz
Xshare/itcl3.0/man/mann/itcl.n.gz
Xshare/itcl3.0/man/mann/itcl_class.n.gz
Xshare/itcl3.0/man/mann/itcl_info.n.gz
Xshare/itcl3.0/man/mann/itclvars.n.gz
Xshare/itcl3.0/man/mann/local.n.gz
Xshare/itcl3.0/man/mann/scope.n.gz
X@unexec /bin/rm -f %D/share/itcl3.0/man/catn/*
X@unexec /bin/rm -f %D/share/itcl3.0/man/cat1/*
X@dirrm include/itcl3.0/generic
X@dirrm include/itcl3.0/unix
X@dirrm include/itcl3.0
X@dirrm lib/itcl3.0
X@dirrm share/itcl3.0/man/catn
X@dirrm share/itcl3.0/man/cat1
X@dirrm share/itcl3.0/man/man1
X@dirrm share/itcl3.0/man/mann
X@dirrm share/itcl3.0/man
X@dirrm share/itcl3.0
END-of-itcl30/pkg/PLIST
exit


>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E0zzqO1-0006uO-00>