Hello Sonycrokett,
Petit howto sur la mise en place d'un environnement de build.
# Installation de tazdev et aufs
# tazdev permet de créer un environnement de build qui sera isolé du système.
# aufs module noyau pour la gestion des couches systèmes
tazpkg -gi tazdev && tazpkg -gi aufs
# Création de l'environnement de build avec la version current
# tadev gen-chroot <nom_chroot> <version>, si <nom_chroot> est différent de la version il faut utiliser en plus l'argument --mirror=http://mirror.slitaz.org/packages/<version>
# tazdev gen-chroot bbcurrent current --mirror=http://mirror.slitaz.org/packages/current
tazdev gen-chroot current current
root@slitaz:~# tazdev gen-chroot bbcurrent current --mirror=http://mirror.slitaz.org/packages/current
Generating new chroot in: /home/slitaz/bbcurrent/chroot
===========================================================================================================================================================================================================
Mirror URL: mirror.slitaz.org/packages/current [ Done ]
Installing: slitaz-base-files [ Done ]
Installing: busybox [ Done ]
Installing: cookutils [ Done ]
Installing: tazpkg [ Done ]
Installing: lzma [ Done ]
mkdir: can't create directory '/home/slitaz/bbcurrent/chroot/etc': File exists
Creating resolv.conf... [ Done ]
Creating TZ... [ Done ]
Restoring host packages list... [ Done ]
===========================================================================================================================================================================================================
Ready to chroot with: tazdev -c bbcurrent
root@slitaz:~#
# On rentre dans le chroot
tazdev -c bbcurrent
root@slitaz:~# tazdev -c bbcurrent
Mounting virtual filesystems... [ Done ]
Chrooting to: /home/slitaz/bbcurrent/chroot
root@slitaz:/#
# On prépare notre plan de travail :)
cook setup
root@slitaz:/# cook setup
/usr/bin/cook: line 60: can't create /home/slitaz/cache/activity: nonexistent directory
Setting up your environment
===========================================================================================================================================================================================================
Creating directories structure in "/home/slitaz"
Creating DB files in "/home/slitaz/cache"
Checking for packages to install...
slitaz-toolchain-6.0 100% |********************************| 4668 0:00:00 ETA
Tracking dependencies for package "slitaz-toolchain"
===========================================================================================================================================================================================================
Missing package "binutils"
Missing package "linux-api-headers"
Missing package "glibc-dev"
Missing package "gcc"
Missing package "make"
Missing package "elfkickers"
===========================================================================================================================================================================================================
6 missing packages to install.
[...]
Installation of package "tazlito"
===========================================================================================================================================================================================================
SliTaz Live Tool.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Copying package... Done
Extracting package... Done
Remember modified packages... Done
Saving configuration files... Done
Installing package... Done
Removing all tmp files... Done
Update system databases... Done
===========================================================================================================================================================================================================
Package "tazlito" (537) is installed.
Adding group "slitaz"
Setting permissions for group "slitaz"...
===========================================================================================================================================================================================================
All done, ready to cook packages :-)
root@slitaz:/#
# On install cacerts, nécessaire pour pouvoir utiliser https.
tazpkg -gi cacerts
root@slitaz:/# tazpkg -gi cacerts
cacerts-20231019.taz 100% |********************************| 324k 0:00:00 ETA
Installation of package "cacerts"
===========================================================================================================================================================================================================
Certificate Authority Certificates.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Copying package... [ Done ]
Extracting package... [ Done ]
Remember modified packages... [ Done ]
Installing package... [ Done ]
Removing all tmp files... [ Done ]
Execute post-install commands... [ Done ]
===========================================================================================================================================================================================================
Package "cacerts" (20231019) is installed.
# On récupère le livre de recettes
hg clone https://hg.slitaz.org/wok-current /home/slitaz/wok
root@slitaz:/# hg clone https://hg.slitaz.org/wok-current /home/slitaz/wok
requesting all changes
adding changesets
adding manifests
adding file changes
added 25713 changesets with 76338 changes to 11786 files
new changesets 36917db46db6:4f280129f9f2
updating to branch default
9948 files updated, 0 files merged, 0 files removed, 0 files unresolved
root@slitaz:/#
Nous sommes fin prêt pour commencer.
root@slitaz:/# cd /home/slitaz/wok
root@slitaz:/home/slitaz/wok#
Pour construire un paquet il faut utiliser la commande cook <pkg>
Cette dernière va :
- récupérer les dépendances nécessaire à la compilation
- télécharger l'archive source
- patcher les sources si nécessaire
- lancer la compilation
- installer le programme dans un dossier temporaire (install)
- créer le paquet
Pour monter de version un paquet il faut éditer le fichier receipt présent dans le dossier du paquet.
Prenons comme exemple zlib qui est en 1.2.13 actuellement (côté upstream 1.3.1).
# SliTaz package receipt.
PACKAGE="zlib"
VERSION="1.2.13"
On édite zlib/receipt pour changer en VERSION="1.3.1" et on lance cook zlib
root@slitaz:/home/slitaz/wok# vi zlib/receipt
root@slitaz:/home/slitaz/wok# cook zlib
nodev aufs
Setup aufs chroot...
/usr/bin/cook: line 1616: can't open /home/slitaz/cache/cooktime: no such file
Cook: zlib 1.3.1
===========================================================================================================================================================================================================
QA: checking package receipt...
Connecting to zlib.net (85.187.148.2:80)
saving to '/home/slitaz/src/zlib-1.3.1.tar.xz'
zlib-1.3.1.tar.xz 29% |********* | 375k 0:00:02 ETA
zlib-1.3.1.tar.xz 100% |********************************| 1275k 0:00:00 ETA
'/home/slitaz/src/zlib-1.3.1.tar.xz' saved
Extracting source archive "zlib-1.3.1.tar.xz"
Executing: compile_rules
CFLAGS : -march=i486 -Os -pipe -fomit-frame-pointer
Checking for gcc...
Checking for shared library support...
Building shared library libz.so.1.3.1 with gcc.
Checking for size_t... Yes.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o example.o test/example.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o adler32.o adler32.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o crc32.o crc32.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o deflate.o deflate.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o infback.o infback.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o inffast.o inffast.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o inflate.o inflate.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o inftrees.o inftrees.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o trees.o trees.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o zutil.o zutil.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o compress.o compress.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o uncompr.o uncompr.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o gzclose.o gzclose.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o gzlib.o gzlib.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o gzread.o gzread.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -c -o gzwrite.o gzwrite.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o minigzip.o test/minigzip.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/adler32.o adler32.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/crc32.o crc32.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/deflate.o deflate.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/infback.o infback.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inffast.o inffast.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inflate.o inflate.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/inftrees.o inftrees.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/trees.o trees.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/zutil.o zutil.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/compress.o compress.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/uncompr.o uncompr.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzclose.o gzclose.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzlib.o gzlib.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzread.o gzread.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -DPIC -c -o objs/gzwrite.o gzwrite.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o example64.o test/example.c
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o minigzip64.o test/minigzip.c
ar rc libz.a adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example example.o -L. libz.a
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip minigzip.o -L. libz.a
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip64 minigzip64.o -L. libz.a
gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.3.1 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo -lc
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example64 example64.o -L. libz.a
rm -f libz.so libz.so.1
ln -s libz.so.1.3.1 libz.so
ln -s libz.so.1.3.1 libz.so.1
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o examplesh example.o -L. libz.so.1.3.1
gcc -march=i486 -Os -pipe -fomit-frame-pointer -fno-tree-vectorize -DUNALIGNED_OK -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzipsh minigzip.o -L. libz.so.1.3.1
rm -f /home/slitaz/wok/zlib/install/usr/lib/libz.a
cp libz.a /home/slitaz/wok/zlib/install/usr/lib
chmod 644 /home/slitaz/wok/zlib/install/usr/lib/libz.a
cp libz.so.1.3.1 /home/slitaz/wok/zlib/install/usr/lib
chmod 755 /home/slitaz/wok/zlib/install/usr/lib/libz.so.1.3.1
rm -f /home/slitaz/wok/zlib/install/usr/share/man/man3/zlib.3
cp zlib.3 /home/slitaz/wok/zlib/install/usr/share/man/man3
chmod 644 /home/slitaz/wok/zlib/install/usr/share/man/man3/zlib.3
rm -f /home/slitaz/wok/zlib/install/usr/lib/pkgconfig/zlib.pc
cp zlib.pc /home/slitaz/wok/zlib/install/usr/lib/pkgconfig
chmod 644 /home/slitaz/wok/zlib/install/usr/lib/pkgconfig/zlib.pc
rm -f /home/slitaz/wok/zlib/install/usr/include/zlib.h /home/slitaz/wok/zlib/install/usr/include/zconf.h
cp zlib.h zconf.h /home/slitaz/wok/zlib/install/usr/include
chmod 644 /home/slitaz/wok/zlib/install/usr/include/zlib.h /home/slitaz/wok/zlib/install/usr/include/zconf.h
===========================================================================================================================================================================================================
Installing (web/cache): advancecomp-2.3
Compressing man pages... Done
Time: 1.26s. Size: 4476 B -> 2043 B. Save: 2 KB. Cache hit: 0/1.
===========================================================================================================================================================================================================
Running testsuite
===========================================================================================================================================================================================================
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x2300
Start of program headers: 52 (bytes into file)
Start of section headers: 90764 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 10
Size of section headers: 40 (bytes)
Number of section headers: 37
Section header string table index: 36
===========================================================================================================================================================================================================
Build dependencies to remove: 1
Removing: advancecomp
Pack: zlib 1.3.1
===========================================================================================================================================================================================================
Executing: genpkg_rules
Copying "receipt"... Done
Copying "description.txt"... Done
Executing strip on all files... Done
Time: 0.08s. Size: 92244 B -> 83532 B. Save: 9 KB.
Creating the list of files... Done
Creating md5sum of files... Done
Compressing the FS... Done
Updating receipt sizes... Done
Creating full cpio archive... Done
Restoring original package tree... Done
QA: checking for empty package... Done
===========================================================================================================================================================================================================
Package "zlib-1.3.1.tazpkg" created
Summary for: zlib 1.3.1
===========================================================================================================================================================================================================
Source dir : 5.7M
Src file : zlib-1.3.1.tar.xz
Src size : 1.2M
Produced : 336.0K
Packed : 116.0K
Compressed : 36.3K
Files : 3
Cook time : 4s
Cook date : 2024-06-14 06:37
Host arch : i486
===========================================================================================================================================================================================================
Leaving aufs chroot...
Updating i486 chroot environment...
Installation of package "zlib"
===========================================================================================================================================================================================================
Compression library
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Copying package... Done
Extracting package... Done
Remember modified packages... Done
Installing package... Done
Removing old files... Done
Removing all tmp files... Done
===========================================================================================================================================================================================================
Package "zlib" (1.3.1) is installed.
root@slitaz:/home/slitaz/wok#
On viens de mettre à jour zlib en 1.3.1 sur notre environnement de construction et le paquet est disponible dans /home/slitaz/packages
root@slitaz:/home/slitaz/wok# ls /home/slitaz/packages/
zlib-1.3.1.tazpkg
Dans le cas de zlib, ce dernier est simple car ne dépend que de la glibc, pour d'autre cela peut être plus complexe car la montée de version implique soit de nouveau paquets ou des versions différentes voir même une compilation différente (meson, cmake au lieu de ./configure && make && make install)
Par exemple si tu souhaite passer abiword de 2.8.6 à 3.0.5, on passe de la branche 2.x à 3.x, il est donc possible que des ajustements soit à faire.