Open Design and Integration Environment

toadkits
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2018 Conference, Houston/TX, US, Oct 15-19
Send your abstracts to tclconference@googlegroups.com or submit via the online form
by Aug 20.

What is a toadkit?

A toadkit is a self-contained executable with a complete software application. Toadkits are an update of the Tcl as One Big Executable (TOBE) concept. (See http://www.hwaci.com/sw/tobe/). Tcl/Tk is statically compiled along with enough tools to mount the executable as a virtual file system. This virtual file system contains Tcl/Tk code, application resources. Binary packages can be either statically linked to the executable, or distributed as shared libraries in the VFS.

All of this code is packaged in a single file that the user can double-click on, or drag and drop files on top of.

Building a toadkit.

These instructions used to be a bit more involved. But the process has been integrated into the automations of ODIE.

mkdir odie
mkdir odie/odie
mkdir odie/download
mkdir odie/build
fossil clone http://fossil.etoyoc.com/fossil/odie odie/download/odie.fos
cd odie/odie
fossil open ../download/odie.fos
cd ../build
tclsh ../odie/make.tcl local-env toadkit

This build process assumes the following: you have access to fossil and git in your local environment, as well as

In the process of building the basekit, odie will download the Tcl/Tk core, and sources for the included packages. Source code is downloaded to the sandbox which is the same directory that odie was unpacked to. In the build folder will by a series of pkg.* folders, on per binary package. That is where Odie compiles the binary packages. In addition is PKGROOT, which is a virtual file system where binary packages are "installed" so they can be copied into a waiting VFS.

For details on what is inside, see: Anatomy of a Toadkit project

To wrap your own program using the basekit, create a VFS directory. (Say myproduct.vfs)

cp -a ~/myproject/src myproject.vfs
tclsh ../odie/make.tcl wrap clevername myproject.vfs
This will produce an execuable named clevername. If myproject.vfs includes a file called "main.tcl" in the root, the executable will load that file instead of reverting to the standard tcl interactive shell behavior. main.tcl will be able to respond to the command line. As part of the kitbuilding process, the entire VFS is scanned, and a file packages.tcl is produced, and placed in the root of the VFS. This is the master manifest of all packages that are included in the VFS. This file will be read automatically when the process starts.

If a file named "main.tcl" is present in the root of the VFS, the process will source this file after loading the package manifest. TOBE behaves like any other tcl process, it can respond to arguments on the command line (look in the argv variable.)

If no main.tcl is present, toadkits behave as a standard Tcl shell. Tk is statically linked, but not loaded automatically. It can be accessed with a simple "package require Tk".