kbs packages

Difference between version 12 and 13 - Previous - Next
** Summary **

Information about [Tclkit Kitgen Build System%|%kbs] packages


** Syntax of package definitions **

[LES] on 2022-10-29 Note: it took me some time to make this run on my Linux machine. I eventuallly realized it is biased towards Windows so I ran kbs.tcl through dos2unix and it finally worked.

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

======none
./kbs.tcl doc
======

and is located under './doc'.

(But only if you have Doxygen.)

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 **

*** 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
(Doxygen is required.)

*** How can I build different versions? ***

Use the '-builddir=..' switch. Do not mix different tcl versions in the build
process!

======none
./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:

======none
./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 **

*** 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 **

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:

======none
./kbs.tcl -v -pkgfile=your_package_file -r install my0.1
======

<<categories>> Category Tclkit | Category Deployment | Category Development