NEOSOFT TCL

Welcome to NeoSoft Tcl, a single, integrated release of Tcl that includes Tcl, Extended Tcl, Tk, color X pixmap and GIF support, Tcl distributed processing, and [incr tcl], the object-oriented Tcl extension modelled after C++.

Current release is: NEOTCL 7.3E

$Id: RELEASE_NOTES.html,v 1.3 1995/08/04 16:02:43 karl Exp $

CHANGES

These notes assume that you have unpacked NeoSoft Tcl in /usr/neosoft/src. If you have unpacked it elsewhere, substitute that directory path wherever you see /usr/neosoft/src.

Edit the Master Makefile

You need to set three variables in the toplevel Makefile, the architecture (ARCH), the directory that subordinate directories such as bin and lib will be created and installed into, and the shell that will handle the shell scripts... bash is recommended because /bin/sh, even on some big and famous workstations, has been known to fail when trying to execute the large, complex configure scripts generated by autoconf.

NeoSoft Tcl uses GNU autoconf to configure itself for your system type. These carefully crafted configure scripts allows NeoSoft Tcl to be built on most Unix-based systems without any special editing/porting/etc. (Use of GNU autoconf does *not* make any Tcl component, or any application that you create using Tcl, subject to the GNU distribution requirements.)

The architecture definition in the Makefile simply defines a architecture- dependent partial pathname to allow binaries and libraries for multiple architectures to reside in parallel under the same tree.

Sample configuration for BSDI BSD/386 1.1:

    ARCH=bsd386
    PREFIX=/usr/neosoft
    SHELL=/bin/bash

Sample configuration for SCO Open Desktop:

    ARCH=sco
    PREFIX=/usr/neosoft
    SHELL=/bin/bash

Sample configuration for Sun SPARC:

    ARCH=sun4
    PREFIX=/usr/neosoft
    SHELL=/bin/bash

Configure for your type of system

You should be able to do a:

    cd /usr/neosoft/src/tcl7.3
    make configure

...and configuration should occur automatically. Certain things in Extended Tcl can be fine-tuned in tcl7.3/tclX7.3a/Config.mk. If you have problems, please contact NeoSoft.

When the make configure configures [incr tcl] (itcl-1.5), it may ask some questions. If you are using /usr/neosoft for the install location, answer as follows:

    What directory contains Tcl source code (absolute path) ?

	/usr/neosoft/src/tcl7.3/tcl7.3

    What directory contains libtcl.a ?

	/usr/neosoft/src/tcl7.3/tcl7.3

    What directory contains tk.h (absolute path) ?

	/usr/neosoft/src/tcl7.3/tk3.6

    What directory contains libtk.a ?

	/usr/neosoft/src/tcl7.3/tk3.6

Build

To build NeoSoft Tcl, perform the following steps:

    cd /usr/neosoft/src/tcl7.3
    make make

This should compile, in turn, all of the pieces, finally producing in-tree executables of tcl and wishx.

Install

    cd /usr/neosoft/src/tcl7.3
    make install

This will install the executables and support files, including help, source libraries, etc.

Everything in a runtime release, including executables, libraries, help files, manual pages, etc, installs into one directory hierarchy.

Machine-specific executables install into architecture-specific trees, allowing binaries for multiple architectures to be served out via one NFS export, for example.

Also note that the release ID (currently 7.3a-p2) is in the path of this tree, allowing 7.3b to be built and installed alongside, permitting multiple releases for multiple architectures to be served out from one NFS export simultaneously.

For the case of BSDI BSD/386 1.1 above, with PREFIX set to /usr/neosoft and ARCH set to bsd386, the following tree will be created:

	/usr/neosoft/tclX/7.3a-p2

		Master directory -- all Tcl and TclX runtime
		    files install underneath.

	/usr/neosoft/tclX/7.3a-p2/bin.bsd386

		Architecture-specific executables (tcl)

	/usr/neosoft/tclX/7.3a-p2/help

		Help files for Tcl and Extended Tcl

	/usr/neosoft/tclX/7.3a-p2/include

		C include files for Tcl and Extended Tcl

	/usr/neosoft/tclX/7.3a-p2/lib.bsd386

		Architecture-specific Tcl and Extended Tcl C libraries

	/usr/neosoft/tclX/7.3a-p2/man

		Manual pages for Tcl and Extended Tcl

	/usr/neosoft/tclX/7.3a-p2/src

		File to include in a C program to link Tcl, TclX, etc,
		into it.

	/usr/neosoft/tkX/3.6a-p2/bin.bsd386

		Master directory -- all Tk files install underneath.

	/usr/neosoft/tkX/3.6a-p2/demos

		Architecture-specific executables (wishx)

	/usr/neosoft/tkX/3.6a-p2/help

		Help files for Tk

	/usr/neosoft/tkX/3.6a-p2/include

		Include files for Tk

	/usr/neosoft/tkX/3.6a-p2/lib.bsd386

		Architecture-specific Tk libraries

	/usr/neosoft/tkX/3.6a-p2/man

		Manual pages for Tk

	/usr/neosoft/tkX/3.6a-p2/src

		File to include in C code to link Tk into it.

Installing executables only

Often you will make a change to some code in one of these packages and wish to recompile and reinstall, but you don't want to incur the overhead of reinstalling all the manpages, libraries, and the like. In this case, do a:

    cd /usr/neosoft/src/tcl7.3
    make install-exec

Configuring and building manually

If "make configure" fails, you may want to try configuring manually. In this case, issue the following commands to build tcl7.3, xpm, Tk, itcl, and tclX:

    cd /usr/neosoft/src/tcl7.3/tcl7.3
    configure --prefix=/usr/neosoft
    make

    cd /usr/neosoft/src/tcl7.3/tk3.6/xpm
    xmkmf
    cd ..
    configure --prefix=/usr/neosoft
    make

    cd /usr/neosoft/src/tcl7.3/itcl-1.5
    configure --prefix=/usr/neosoft
    make

    cd /usr/neosoft/src/tcl7.3/tclX7.3a
    configure --prefix=/usr/neosoft
    make
    make install

Hints

Many make commands are not adequate to the task of building all of this. Consequently source code to GNU make is included in the complete release.

If you are installing in /usr/neosoft, configuring, building and installing GNU make in src/make-* and making sure that /usr/neosoft/bin comes before whatever directory has your system's make command are essential.

for shell users, PATH=/usr/neosoft/bin:$PATH

for csh users, set path=(/usr/neosoft/bin $path)

Getting the right "make" in the path should be done before running configure, or configure should be rerun. What configure decides to do depends in part on the behavior of "make".

Potential Problems

If you have trouble with make configure from the top tcl7.3 directory failing in tk3.6, try cd'ing to each subdirectory of the top directory by hand and doing a configure --prefix=/usr/neosoft

Incr Tcl

The Makefile for [incr tcl] has been modified to only produce the library and not the itcl_sh and itcl_wish executables, as tcl and wishx will have itcl linked in when it's been selected.

Documentation

Each package comes with extensive documentation in the form of README files and manual pages.

For each package, manual pages can be found in:

tcl /usr/neosoft/src/tcl7.3/tcl7.3/doc tk /usr/neosoft/src/tcl7.3/tk3.6/doc extended tcl /usr/neosoft/src/tcl7.3/tclX7.3a/man incr tcl /usr/neosoft/src/tcl7.3/itcl-1.5/man tcl distributed processing /usr/neosoft/src/tcl7.3/tcl-dp3.2/doc distributed processing w/o tk /usr/neosoft/src/tcl7.3/tcl-dp3.2/dplite/doc

Building DBOPEN

DBOPEN is a db-style hash and btree library from Keith Bostic of the University of California at Berkeley.

It supports hash tables, btrees and flat files, although the Tcl interface only supports btrees and hashtables.

It does not suffer from the limitations of the traditional db library in that the keys and values may be arbitrary length, collisions do not introduce limitations on how big items can be, it has btrees as well as hash tables, and multiple database may be open simultaneously.

If your machine does not have dbopen installed already, get it from the tools directory in your Tcl release.

Read the docs, and duild install dbopen in one of the usual places, preferably the lib where the system libraries are (usually /usr/lib), and the includes in the system includes directory /usr/include.

To enable it, edit tcl7.3/tclX7.3b/Config.mk. Add to XCFLAGS line -DTCL_DBOPEN.

You'll need tclXdb.c to be rebuilt, so you should remove tclX7.3b/src/tclXdb.o, then remake.

If you don't put the dbopen library in the usual place, on the XLDFLAGS add

-L/directory/where/the/lib/is

and if the dbopen includes aren't in the usual place, add

-I/directory/where/the/includes/are

to the XLDFLAGS line as well.

Karl Lehenbauer
karl@neosoft.com