website view en/doc/cookbook/wok-tools.html @ rev 29

Tidy up Cookbook
author Paul Issott <paul@slitaz.org>
date Tue Apr 22 22:28:39 2008 +0000 (2008-04-22)
parents ec780b182951
children 9e30e64c8198
line source
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <head>
5 <title>SliTaz Cookbook (en) - Wok &amp; Tools</title>
6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
7 <meta name="description" content="slitaz English cookbook" />
8 <meta name="expires" content="never" />
9 <meta name="modified" content="2008-02-26 18:30:00" />
10 <meta name="publisher" content="www.slitaz.org" />
11 <meta name="author" content="Christophe Lincoln, Paul Issot"/>
12 <link rel="shortcut icon" href="favicon.ico" />
13 <link rel="stylesheet" type="text/css" href="book.css" />
14 </head>
15 <body bgcolor="#ffffff">
17 <!-- Header and quick navigation -->
18 <div id="header">
19 <div align="right" id="quicknav">
20 <a name="top"></a>
21 <a href="receipts.html">Receipts</a> |
22 <a href="index.html">Table of contents</a>
23 </div>
24 <h1><font color="#3E1220">SliTaz Cookbook (en)</font></h1>
25 </div>
27 <!-- Content. -->
28 <div id="content">
29 <div class="content-right"></div>
31 <h2><font color="#DF8F06">Wok &amp; Tools</font></h2>
33 <ul>
34 <li><a href="#tazwok">Overview.</a></li>
35 <li><a href="#wok">Wok tools.</a></li>
36 <li><a href="#cook">Compile and generate packages.</a></li>
37 <li><a href="#opts">Options during compilation of package.</a></li>
38 <li><a href="#files">Files included or excluded packages.</a></li>
39 <li><a href="#categories">Categories of packages.</a></li>
40 <li><a href="#woktree">Structure of packages in the wok.</a></li>
41 <li><a href="#pkgtree">Structure of tazpkg package.</a></li>
42 <li><a href="receipts.html">Receipts.</a></li>
43 </ul>
45 <a name="tazwok"></a>
46 <h3>Overview - Tazwok and the wok</h3>
47 <p>
48 The idea is to use a directory (wok) containing all the available packages, each package contains
49 at least one receipt to download, unpack, compile and generate the binary package. To operate,
50 tazwok also needs to create a directory to store downloaded sources ($SOURCES_REPOSITORY) and a
51 repository of generated packages ($PACKAGES_REPOSITORY), these values can be configured using the
52 <code>/etc/tazwok.conf</code> file.
53 </p>
55 <a name="wok"></a>
56 <h3><font color="#6c0023">Wok tools</font></h3>
57 <p>
58 To begin, tazwok must already be installed
59 on the system and the main development tools (binutils, compiler, libraries-dev, make) must be downloaded.
60 On Slitaz you need to install the meta-package <code>slitaz-toolchain</code>:
61 </p>
62 <pre> # tazpkg recharge
63 # tazpkg get-install slitaz-toolchain
64 </pre>
65 <h4>Get the wok</h4>
66 <p>
67 Before working it is necessary to recover the wok from the Mercurial repositories or an archive of
68 the primary mirror (TuxFamily). Example using SliTaz to be built in <code>/home/slitaz</code>:
69 </p>
70 <pre> $ hg clone http://hg.slitaz.org/wok/ /home/slitaz/wok
71 </pre>
72 <p>
73 The archives are also available from the URL:
74 <a href="ftp://download.tuxfamily.org/slitaz/wok/">ftp://download.tuxfamily.org/slitaz/wok/</a>.
75 Just take the latest version from the cooking or undigest directories. Before compiling your first package,
76 tazwok must know where to look for the files. By default the path is <code>/home/slitaz/wok</code>,
77 you can change this or rename the wok you want to download. To view/check tazwok paths that will be used
78 and the number of packages in the wok, you can use the tazwok command <code>stats</code>:
79 </p>
80 <pre> # tazwok stats
81 </pre>
83 <a name="cook"></a>
84 <h3>Compile and generate packages</h3>
85 <p>
86 Configure, compile, strip.., The way SliTaz generates a package can be put into a single command.
87 To avoid frustration, it is advisable to begin to build your package without changing it's receipt or seeking
88 dependancies. M4 is an ideal candidate for your first <code>cook</code>:
89 </p>
90 <pre> # tazwok cook m4
91 </pre>
92 <p>
93 Once the work is finished, the package is located in the directory specified by the configuration file
94 (default <code>/home/slitaz/packages</code>). If all went well, you can install the package on the host system
95 or use it to generate a LiveCD distribution via tazlito. To create a new package you can use <code>new-tree</code>
96 with the option <code>--interactive</code> and read the documentation on the options provided by the
97 <a href="receipts.html">receipt</a>.
98 </p>
99 <h4>Cook-list - List of cooking</h4>
100 <p>
101 To compile several packages with a single command, you can use a cooking list. There are example lists in
102 <code>usr/share/examples/tazwok/cooklists</code> on SliTaz, these are just text files with a package put on every line.
103 Cook-list example using mypkgs.cooklist:
104 </p>
105 <pre> # tazwok cook-list mypkgs.cooklist
106 </pre>
108 <a name="opts"></a>
109 <h3>Options during compilation of package</h3>
110 <p>
111 You are free to use any options you want, it is necessary to respect the FSH, the docs in <code>/usr/share/doc</code>
112 and follow the Freedesktop standards (.desktop). Then it's just a question of choice, for example you can disable
113 support for XML, have smaller binaries for PHP and get rid of libxml2, but in the case of PHP, it's not worth the
114 cost in terms of loss of functionality. If you have any doubts, look at the receipts and compiler options in
115 <code>compile_rules</code>.
116 </p>
117 <h4>Optimization</h4>
118 <p>
119 The official SliTaz packages are optimized for i486, the optimization arguments used to configure are specified in
120 <code>/etc/tazwok.conf</code> and can be called via the variable <code>$CONFIGURE_ARGS</code>.
121 If you want to compile a package with different arguments, you can modify the tazwok configuration file:
122 </p>
123 <pre class="script">CONFIGURE_ARGS="--build=i486-pc-linux-gnu --host=i486-pc-linux-gnu"
124 </pre>
126 <a name="files"></a>
127 <h3>Files included or excluded packages</h3>
128 <p>
129 Generally the base packages contain no man, info, doc or static libraries, we have to create them via a package-doc
130 or a package-dev. Note that SliTaz is not intending to use the man or info command, so there's no manual or GNU
131 info file. The creation of packages containing docs is really optional, especially if the material is in English
132 (I say). By contrast a piece of text on the package in the Handbook is more appreciated.
133 </p>
134 <p>
135 In terms of configuration, whenever possible, the aim is to offer basic configuration files to run the package
136 directly. In the case of the web server LightTPD package, SliTaz supplies configuration files and startup scripts
137 located in /etc/init.d (documented in the Handbook). For a new package, you are free to choose it's default
138 configuration depending on what you think is easiest for the end user. On SliTaz you have <code>/usr/share/examples</code>
139 for example configurations and other kinds of useful infomation.
140 </p>
142 <a name="categories"></a>
143 <h3>Categories of packages</h3>
144 <p>
145 The categories of packages exist only for informational purposes and are not fixed, the idea is to classify
146 packages so that a web page can be generated each night recovering data in the package receipt. For the short term, place
147 developement packages in 'devel', Xorg in 'x-window' and the variety of new packages in 'extra'
148 </p>
150 <a name="woktree"></a>
151 <h3>Structure of a package in the wok</h3>
152 <p>
153 The structure of the packages in the wok should always be respected so that tazwok can find the correct files and directories.
154 Possible contents of a package (note the directory taz/ is created at time of cooking):
155 </p>
156 <ul>
157 <li><code>stuff/</code> : The material used to configure, compile and generate the package
158 (patch(es), Makefile, pseudo fs, etc).</li>
159 <li><code>taz/</code> : Directory tree containing the package tazpkg generated, the compressed package is stored
160 in the directory specified by $PACKAGES_REPOSITORY in the tazwok configuraton file.</li>
161 <li><code>receipt</code> : The receipt (see
162 <a href="receipts.html">receipts</a>).</li>
163 <li><code>description.txt</code> : (optional) The description of the package is copied to the root of the tazpkg
164 package. Once installed tazpkg knows how do deal with this file via 'tazpkg desc pkgname'.</li>
165 </ul>
167 <a name="pkgtree"></a>
168 <h3>Structure of a tazpkg package </h3>
169 <p>
170 The SliTaz packages are cpio archives containing files and a filesystem compressed with gzip:
171 </p>
172 <ul>
173 <li><code>fs/</code> : Pseudo filesystem containing all the files to install.</li>
174 <li><code>receipt</code> : The receipt (see receipt.txt).</li>
175 <li><code>files.list</code> : A list of files in the package.</li>
176 <li><code>description.txt</code> : The description of the package (optional).</li>
177 </ul>
179 <!-- End of content -->
180 </div>
182 <!-- Footer. -->
183 <div id="footer">
184 <div class="footer-right"></div>
185 <a href="#top">Top of the page</a> |
186 <a href="index.html">Table of contents</a>
187 </div>
189 <div id="copy">
190 Copyright &copy; 2008 <a href="http://www.slitaz.org/en/">SliTaz</a> -
191 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>;<br />
192 Documentation is under
193 <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>
194 and code is <a href="http://validator.w3.org/">valid xHTML 1.0</a>.
195 </div>
197 </body>
198 </html>