cookutils view README @ rev 44

Add $taz var, bunch of tiny improvment and one more info in README
author Christophe Lincoln <pankso@slitaz.org>
date Sat May 07 03:32:53 2011 +0200 (2011-05-07)
parents a491bec2d20a
children e72b406b4f0c
line source
1 SliTaz Cookutils
2 ================================================================================
5 The SliTaz Cookutils provide tools and utils to build SliTaz packages.
8 Cook
9 --------------------------------------------------------------------------------
10 The cook tool should be used in a chroot environment: simply use the command
11 'tazdev gen-chroot' to build one. You can also build packages directly but
12 build deps will not be handled correctly since cook will install missing
13 packages to perform a build and then remove them only if they were not
14 installed before, this way we can keep a clean build environment.
16 We use standard SliTaz paths to work such as /home/slitaz/wok, if you work on
17 cooking from stable or want to keep a clean system: create a chroot.
19 Cook features:
21 * Setup a build env
22 * Check and install missing build deps
23 * Compile and generate the package
24 * Remove installed build deps
25 * Provide a log for each cook
26 * Clean one or all packages in the wok
27 * Check for receipt and package quality
29 Cook does not:
31 * Depend on Hg but can use it to manage a wok
32 * Do complex work like compiling the whole system from source
33 * Check build deps for you, use: BUILD_DEPENDS
34 If all deps are also build deps do: BUILD_DEPENDS="$DEPENDS"
35 * The work of a Build Bot, unix philosophy: one tool for one task
36 * Cook a package if your receipt is crappy :-)
38 Cook paths variables used in receipt:
40 * $src : Package source: wok/pkg/source
41 * $stuff : Package stuff: wok/pkg/stuff
42 * $fs : Package file system: wok/pkg/taz/*/fs
43 * $install : All installed files by the package
44 Old style is $_pkg and cook is compatible
46 Cook internal paths variables:
48 * $pkgdir : Package directory in the wok: wok/pkg
49 * $receipt : Package receipt in wok: wok/pkg/receipt
50 * $taz : The taz directory: wok/pkg/taz
51 * $pack : Package to compress: wok/taz/pkg-*
53 Cook also manages packages lists so they can be used for a personal packages
54 repository or sent to the official mirror. We create and use:
56 * packages.list Simple list of package-versions
57 * packages.md5 MD5sum list of all packages
58 * packages.desc Packages with name, version, category, desc
59 * packages.equiv Equivalent packages list
60 * files.list.lzma A list of files provided by all packages
63 Cooker
64 --------------------------------------------------------------------------------
65 The Cooker is a Build Bot which automates the build process but doesn't make
66 the dinner for you! We need quality receipts to cook succesfully and the goal
67 is not to have a bloated script so please Keep It Short and Simple.
69 Cmdline tool : /usr/bin/cooker
70 Web interface : /var/www/cgi-bin/cooker
71 Cache folder : /home/slitaz/cache
73 The web interface consists of one CGI script and one CSS style. Cook logs can
74 be produced by cook and the cooker just acts as a fronted to check them in
75 a nice way. A web interface also highlights success and error and can show
76 receipts and the cooker logs such as the last ordered list or commits check.
79 Toolchain
80 --------------------------------------------------------------------------------
81 To rebuild the full SliTaz toolchain at once - cook and the Cooker will use the
82 slitaz-toolchain package. No built-in code manages that since it is not a
83 common task. The toolchain package will build all needed packages in the correct
84 order, which is very important.
87 Coding style
88 --------------------------------------------------------------------------------
89 Here are the cookutils coding style notes, follow them if you want your code
90 included in the package.
92 * In all cases: KISS
93 * Use tab and not space to indent
94 * Max 80 char by line (try to edit in a Xterm 80x24)
95 * Use names rather than $1 $2 $3
96 * Variables from config file are $UPPERCASE
97 * Variables initialized by cook are $lowercase
98 * Functions can be a single word or use_underline()
99 my_function() {
100 echo "Hello World"
101 }
102 * Use $(command) and not: `command`
103 * Cook uses gettext for messages, not the cooker
104 * If you add a feature, add also the doc to explain it
105 * Use clean case with space before case end ;;
106 case "$pkg" in
107 a) echo "Hello World" ;;
108 *) continue ;;
109 esac
110 * Make commands and options as short as possible
111 * Think to log everything to help debug
114 ================================================================================