cookutils view README @ rev 150
cook: strip down also python package itself
| author | Christophe Lincoln <pankso@slitaz.org> | 
|---|---|
| date | Thu May 12 11:51:21 2011 +0200 (2011-05-12) | 
| parents | c49e394e87d3 | 
| children | 1e9981880495 | 
 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
   123 	* Quote variables if used in a test: [ "$var" ]
   126 ================================================================================