Updated 2013-03-27 06:01:56 by pooryorick

Summary  edit

Information about kbs packages

Syntax of package definitions  edit

Detailed information is available in the internal doc. The doc can be build with:
./kbs.tcl doc

and is located under './doc'.

A common 'Package' definition is like:
Package <name> {
    Require script
    Source script
    Configure script
    Make script
    Install script
    Clean script
    Test script

In each script argument the 'Get' and 'Run' procedures could be used. Additionally per section the following proc's are available:
Require: Use
Source: Link, Script, Http, Tgz, Zip, Cvs, Svn
Configure: Kit, Patch, Config
Make: Kit
Install; Kit, Libdir, Tcl
Test: Kit

Questions  edit

What is a package?

Originally it is a Tcl extension based on the TEA system. but you can use whatever you want. It needs to build in the common configure/make/make install cycle.

What do I need to build a package?

A 'Package' definition in the "sources/kbskit-8.5/kbskit.kbs" file. The file will be sourced on startup. It contain the available package definitions.

What additional procedures are available?

See the documentation of 'kbs.tcl' for procedures matching '::kbs::config::*'

How I create the documentation of 'kbs.tcl'?

./kbs.tcl doc

The html documentation can then be found in the './doc' directory

How can I build different versions?

Use the '-builddir=..' switch. Do not mix different tcl versions in the build process!
.kbs.tcl -r -builddir=b85 install kbskit-8.5
.kbs.tcl -r -builddir=b86 install kbskit-8.6

How can I customize the build process?

Create your own *.kbs p.e. './sources/z/z.kbs' with:
source [file join sources kbskit-8.5 kbskit.kbs]
set ::kbs::config::_(THREADS)   {--disable-threads}
set ::kbs::config::_(64BIT)     {--disable-64bit}
set ::kbs::config::_(SYMBOLS)  {--enable-symbols}
Package z-0.1 {
    Require kbskit-8.5
    Source link z
    Configure {}
    Install { Tcl z0.1 }

and run it with:
./kbs.tcl -pkgfile=sources/z/z.kbs install z-0.1

How can I build starkits/starpacks?

Use the 'Kit' procedure in Make, Install, Clean and Test definitions. If you have a 'main.tcl' as startup file you can use
Package foo-0.1 {
    Require bar-0.1
    Source link foo-0.1
    Configure {}
    Make { Kit make foo bar0.1 }
    Install { Kit install foo -gui }

and without 'main.tcl' you can create one with:
Configure { Kit configure foo {source $::starkit::topdir/foo.tcl} bar }

To create starkits just remove the '-gui' switch.

Examples  edit

Provide default version for 'Require' command

Package tcl { Require tcl-8.5 }

Checkout with tag and from HEAD

Source cvs tcllib.cvs.sourceforge.net:/cvsroot/tcllib -r tklib-0-4-1 tklib
Source cvs tclx.cvs.sourceforge.net:/cvsroot/tclx

Get file with http

Source fetch http://www.sqlite.org/sqlite-3_3_17-tea.tar.gz

Use sources from another Package

Source link itcl-3.3

Use different directory names for windows builds

[Builddir tcl]
used in tcl commands ("C:/")
[Builddir sys]
used in system commands e.g. make ("/c/")

Build starpack from self running file:

See p.e. 'Package tksqlite-0.5.6 ..' in 'sources/kbskit-8.5/kbskit.kbs'

Build starkits:

See p.e. 'Package tksqlite-0.5.6 ..' in 'sources/kbskit-8.5/kbskit.kbs'. Just remove the '-gui switch'.

Another Example  edit

To use an expanded starkit it with kbs, put your 'my.vfs/' under the kbs sources directory and create a package definition file like:
source [file join sources kbskit0.3.1 kbskit.kbs]
Package my0.1 {
    Require { Use kbskit8.5 sdx.kit tcllib1.11 tklib0.5 }
    Source { Link my.vfs }
    Configure {}
    Make { Kit my tcllib1.11/cmdline tklib0.5/autoscroll tklib0.5/tooltip}
    Install { Kit my -vq-gui }
    Clean { Kit my }

The given packages will be included in the final executable. You can see what happens with:
./kbs.tcl -v -pkgfile=your_package_file -r install my0.1