** 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 { 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 *** 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 ====== <> Category Tclkit | Category Deployment | Category Development