Re: Wok and packages status

[ Thread Index | Date Index | More lists.tuxfamily.org/slitaz Archives ]


On Thu, 17 Feb 2011 16:27:14 +0100
Christophe Lincoln <pankso@xxxxxxxxxx> wrote:

> And how many time to rebuild everything from scratch on new tank to
> ensure we have all package build on the same arch and spec ? It would be
> optimal fo package consitency. In the cas we rebuild all pkgs it's
> better to use tazwok-experimental than the old one.

Only one :)

Here's how a full rebuild works (using tazwok cook-toolchain):
The scripts used are cook-toolchain (it's inside tazchroot) and
obviously tazwok-experimental itself.
Also, some receipts defined as TOOLCHAIN contains special compile rules
called cook_tmp_toolchain() which are used during the process.

Build method is a hacked Linux From Scratch, to resume it:
* Create a chroot env with build tools using the available packages
* In the chroot, compile a temporary toolchain. This toolchain is
created as a cross-compiler: it doesn't use host system libraries / it
can compile for other archs. This toolchain is not packaged. It's
installed directly into the chroot, at /tools. A good cook order
(defined into /etc/slitaz/tazwok.conf) ensure that temp toolchain
is builded against itself
* Remove all stuff for the initial environment: only temporary
toolchain remains (it includes all the needed stuff to compile/create
packages: SliTaz tools, busybox, lzma, patch, autotools etc...)
* Use the temporary toolchain to cook&pack the definitive one.

Then, theses core toolchain packages will be blocked until next
cook-toolchain:
binutils
elfutils
gcc
gcc-lib-base
glibc
glibc-base
glibc-dev
glibc-extra-samba
glibc-locale
gmp
libgomp
linux-api-headers
mpc-library
mpfr
zlib

Others packages involved into toolchain should be cooked a second time
to solve dependencies loop and ensure all is consistent, they can (and
will) be recooked if a commit happens. Please note that gcc is not
bootstrapped, because the LFS method ensure it doesn't compile against
host/tmp system: it's all from scratch. It's why it must be blocked
then.

So, it's how the toolchain can be compiled. Then, the full repository
can be recooked using tazwok cook-all --forced --missing (it includes
the "other packages involved into toolchain" I talked about just
bellow).

Tazwok will build a cookorder using receipts in wok, so all packages
should build in the right order. This ensure that all package, aswell
as it's build depends before it, are builded against new toolchain.

Actually, there are exceptions. Some packages call tazwok cook by
themself, and in some case it creates theses exceptions (in some other
it's just fine).
slitaz-i18n was a good exemple of that: it has few depends so it was
builded early, but call tazwok cook on slitaz-locale-* which themselves
call cook on various core packages (gtk+ & core apps), while they may
be missing or not refresh using the new toolchain. I think I fixed this
one.
-- 
GoKhlaYeh <gokhlayeh@xxxxxxxxxx>


---
SliTaz GNU/Linux Mailing list - http://www.slitaz.org/


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/