Version 44 of Tclkit Kitgen Build System

Updated 2007-11-26 18:42:11 by RZ

The system can generate Tclkit Lite executables and Tcl packages for different operating systems. Tested are Linux, SunOS, Windows and Irix.

  [Tclkit Lite]: http://www.equi4.com/tclkit/tclkitlite.html

Current version uses tcl/tk 8.5b3.

Sources

available from http://sourceforge.net/projects/kbskit

  • kbs.tcl - single source file, all you need
  • *.tgz - prebuilt binaries containing kit-executables and *.kit files:
  • kbskit*cli* - shell application
  • kbskit*dyn* - tk dynamic loadable
  • kbskit*gui* - tk static inserted
  • kbspkg85.kit with:
    bwidget-1.8.0 gridplus-2.2 img-1.3 memchan-2.2.1 mentry-3.1 sqlite-3.5.2
    tablelist-4.8 tcllib-1.10 tclx-8.4 tdom-0.8.2 thread-2.6.5 tklib-0.4.1
    tktable-2.9 tktreectrl-2.2.3 trofs-0.4.4 udp-1.0.8 wcb-3.1 xotcl-1.5.6
  • tksqlite.kit - ready to run sqlite table editor

Quick start

  • Build executables:
  ./kbs.tcl -r install kbskit-8.5
  • Build kit-files:
  ./kbs.tcl -r install kbspkg-8.5
  ./kbs.tcl -r install tksqlite-0.5.5
  • Start graphical user interface:
  ./kbs.tcl gui
  • Display online help:
  ./kbs.tcl
 === Read definitions from /home/rene/kbs/sources/kbskit-8.5b3/kbskit.kbs
 Kitgen Build System ()
 kbs.tcl ?options? mode ?args?
 options:
  -pkgfile=?file?      contain used Package definitions
                       (default is 'sources/kbskit-8.5b3/kbskit.kbs')
  -builddir=?dir?      build directory, used with [Builddir]
                       (default is './build$tcl_platform(os)')
  -CC=?command?        set configuration variable _(CC)
                       (default is 'gcc' or existing environment variable 'CC')
  -i -ignore           ignore errors and proceed (default is disabled)
  -r -recursive        recursive Require packages (default is disabled)
  -v -verbose          display running commands and command output
  --enable-symbols
  --disable-symbols    set configuration variable _(SYMBOLS)
  --enable-64bit
  --disable-64bit      set configuration variable _(64BIT)
  --enable-threads
  --disable-threads    set configuration variable _(THREADS)
  --enable-aqua
  --disable-aqua       set configuration variable _(AQUA)
 mode:
  help                 this text
  version              return current version
  kbs                  return information about *.kbs commands
  gui                  start graphical user interface
  list ?pattern?       list packages matching pattern (default is *)
  require package ..   return call trace of packages
  sources package ..   get package source files (under sources/)
  configure package .. create [Makedir] (in [Builddir]) and configure package
  make package ..      make package (in [Makedir])
  install package ..   install package (in [Builddir])
  test package ..      test package
  clean package ..     remove make targets
  distclean package .. remove [Makedir]
 package is used for glob style matching against available packages
 (Beware, you need to hide the special meaning of * like foo\*)

 The following configuration variables can be used:
 _(64BIT)   = --disable-64bit
 _(AQUA)    = --enable-aqua
 _(CC)      = gcc
 _(DIR)     = unix
 _(SHARED)  = --enable-shared
 _(STATIC)  = --disable-shared
 _(SYMBOLS) = --disable-symbols
 _(THREADS) = --enable-threads
 _(TZDATA)  = --with-tzdata

Build requirements

The following external programs are needed:

  • A C compiler
  • make with handling of VPATH variables (gmake)
  • cvs, svn (not yet used), tar, gzip, unzip to get and extract sources

To build under Windows you need the msys system and put the kbs-sources inside the msys tree (/home/..).

msys: http://sourceforge.net/project/showfiles.php?group_id=10894

License & support

This work is under BSD license (see file 'license.terms')

The Tclkit-specific sources are license free; they just have a copyright. Hold the author(s) harmless and any lawful use is permitted.

This does *not* apply to any of the sources of the other major Open Source Software used in Tclkit, which each have very liberal BSD/MIT-like licenses:

The extensions used each have their own licenses. Please see their sources.

Acknowledgements

This work is based on the Kitgen system (http://www.equi4.com/kitgen.html ) and ideas and code about a kitgen build system by Jean-Claude Wippler.

With thanks to John Ousterhout for creating Tcl/Tk, Matt Newman and Vince Darley for developing the virtual file system, and the members of the Tcl Core Team for diligently maintaining and taking forward the Tcl/Tk code base plus extensions.


LV 2007 June 22

In my resultSunOS/bin directory, I see the following:

 tclkit8.5-cli  tclkit8.5-dyn  tclkit8.5-gui

So, what are the differences between these three "tclkit"s ...

RZ This is because of kitgen and its sources from jcw and according to [L1 ]

  • tclkit-cli - a tclsh-like console app - Tk and related GUI packages are not built in.
  • tclkit-dyn - wish-like, after a package require Tk. Without the package require, at least on Unix, no GUI aspects appear.
  • tclkit-gui - same as "tclkit-dyn", but with Tk linked-in statically

I even tried a minimal tclkitsh but did not really finished the build process.

LV "and, are they literally tclkits - that is, have the identical packages as the executables found at the tclkit home site, or are they interpretors that are similar to tclkits?"

LV 2007 July 09

 $ tclkit8.5 # mine is Tcl 8.5a4
 % package require Tcl 8.5
 % package require lwv
 % puts [lsort -nocase [package names]]
 http Itcl Mk4tcl mk4vfs msgcat opt platform pwb rechan scripdoc starkit Tcl tcltest Tk vfs vfs::mk4 vfs::zip vfslib zipvfs zlib

 $ kbskit
 % package require Tcl 8.5
 % package require lwv
 % puts [lsort -nocase [package names]]
 http mk4vfs mklite msgcat opt platform rechan starkit Tcl tcl::tommath tcltest Thread Tk Ttrace vfs vfs::m2m vfs::mk4 vfs::mkcl vfs::zip vfslib vlerq zlib

So, to the "are they literally tclkits" question. the answer is no. Here's the differences I see:

        Tclkit 8.5      Tclkit-lite 8.4.15      Kbskit 8.5
        dde             dde (on Windows)        (I don't know)
        http            http                    http
        Itcl            Itcl                    N/A
        Mk4tcl          N/A                     N/A
        mk4vfs          mk4vfs                  mk4vfs
                                                mklite
        msgcat          msgcat                  msgcat
        opt             opt                     opt
        platform                                platform
        pwb             pwb                     N/A
        rechan                                  rechan
        registry        registry (on Windows)   (I don't know)
        scripdoc                                N/A
        starkit         starkit                 starkit
        Tcl             Tcl                     Tcl
                                                tcl::tommath
        tcltest         tcltest                 tcltest
                                                Thread
        (I don't know)  thrill (on Windows)     (I don't know)
        (I don't know)  thrive (on Windows)     (I don't know)
        Tk              Tk                      Tk
                                                Ttrace
        vfs             vfs                     vfs
                                                vfs::m2m
        vfs::mk4        vfs::mk4                vfs::mk4
        (I don't know)  vfs::mkcl               vfs::mkcl
        vfs::zip        vfs::zip                vfs::zip
        vfslib          vfslib                  vfslib
                                                vlerq
        zipvfs          zipvfs                  N/A
        zlib            zlib                    zlib

Notice that one of the ramifications of this is that Itcl , Mk4tcl, pwb, scripdoc, and zipvfs are not available in the interpreter created.

Per the tclkit creator's wishes, please use a different name, such as kbskit, so as not to confuse applications.

RZ Ok, the executables now start with "kbskit" and the package kit file with "kbspkg".

LV I have a question for you. When I run kbs.tcl -r install kbskit-8.5, the resulting kbskit-gui that is created knows about the following package names:

  • http
  • mk4vfs
  • mklite
  • msgcat
  • opt
  • platform
  • rechan
  • starkit
  • Tcl
  • tcl::tommath
  • tcltest
  • Thread
  • Tk
  • Ttrace
  • vfs
  • vfs::m2m
  • vfs::mk4
  • vfs::mkcl
  • vfs::zip
  • vfslib
  • vlerq
  • zlib

I'm not certain how the "kbspkg" relates to this kbskit.

RZ 'kbskit*' are the executable tclkit's. The packages inside are necessary for the tclkit interpreter. 'kbspkg85.kit' is a kit file containing other extensions. It can be sourced by the 'kbskit*' interpreter.


For additional information please use the following links: