On Thu, 17 Feb 2011 16:27:14 +0100 Christophe Lincoln <[email protected]> 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 <[email protected]> --- SliTaz GNU/Linux Mailing list - http://www.slitaz.org/

