cookutils view README @ rev 62

Tiny edits
author Paul Issott <paul@slitaz.org>
date Sat May 07 15:22:01 2011 +0100 (2011-05-07)
parents e72b406b4f0c
children 1f43e0616a9e
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.
78 Database files in the cache folder
80 * activity : Activity information for the web interface
81 * blocked : List of manually blocked packages
82 * broken : Broken packages list, when cook fails it is added here
83 * commits : List of packages of the last commit check
84 * cooklist : Cooklist for unbuilt packages or custom commands
85 * cooknotes : All the notes added with 'cooker -n "My note"
86 * installed* : Lists used to compare installed packages before and after
87 a package is cooked so we can remove them
90 Toolchain
91 --------------------------------------------------------------------------------
92 To rebuild the full SliTaz toolchain at once - cook and the Cooker will use the
93 slitaz-toolchain package. No built-in code manages that since it is not a
94 common task. The toolchain package will build all needed packages in the correct
95 order, which is very important.
98 Coding style
99 --------------------------------------------------------------------------------
100 Here are the cookutils coding style notes, follow them if you want your code
101 included in the package.
103 * In all cases: KISS
104 * Use tab and not space to indent
105 * Max 80 char by line (try to edit in a Xterm 80x24)
106 * Use names rather than $1 $2 $3
107 * Variables from config file are $UPPERCASE
108 * Variables initialized by cook are $lowercase
109 * Functions can be a single word or use_underline()
110 my_function() {
111 echo "Hello World"
112 }
113 * Use $(command) and not: `command`
114 * Cook uses gettext for messages, not the cooker
115 * If you add a feature, add also the doc to explain it
116 * Use clean case with space before case end ;;
117 case "$pkg" in
118 a) echo "Hello World" ;;
119 *) continue ;;
120 esac
121 * Make commands and options as short as possible
122 * Think to log everything to help debug
125 ================================================================================