zenwalk:zenbuild
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | zenwalk:zenbuild [2018/11/17 12:54] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Règles ====== | ||
+ | |||
+ | Ces règles sont élaborées pour obtenir une homogénéité des packages et une intégration parfaite dans Xfce et tout environnement de bureau respectant les standard freedesktop.\\ | ||
+ | Si vous pensez avoir respecté ces rêgles, vous pouvez proposer/ | ||
+ | |||
+ | **A/** | ||
+ | Le nom du package doit être de la forme :\\ | ||
+ | $name-$version-$arch-$zenwalk-release.$build.tgz | ||
+ | |||
+ | - name:Le nom du package: il ne peut contenir que des caractères alphanumériques, | ||
+ | - version: la version: celle de l' | ||
+ | * les séparateurs " | ||
+ | - arch: l' | ||
+ | - zenwalk-release: | ||
+ | - build: " | ||
+ | - Rien ne commence par 0 (ex: 002 doit être convertit en 2) | ||
+ | - Les mots " | ||
+ | |||
+ | **B/** | ||
+ | Tous les packages doivent s' | ||
+ | |||
+ | **C/** | ||
+ | Tous les packages doivent contenir un fichier " | ||
+ | |||
+ | **D/** | ||
+ | Le script de post-install (doinst.sh) ne doit contenir que des chemins relatifs à / (ex: / | ||
+ | |||
+ | **E/** | ||
+ | Tous les packages doivent être accompagné de leur signature md5, pour vérifier leur intégrité, | ||
+ | Pour l' | ||
+ | < | ||
+ | # requiredbuilder -z packageX.tgz > packageX.dep | ||
+ | </ | ||
+ | |||
+ | **F/** | ||
+ | Tous les packages doivent inclure leur ZenBuild, nommé " | ||
+ | |||
+ | **G/** | ||
+ | Le ZenBuild est un script bash qui automatise la création du package.\\ | ||
+ | Il doit contenir au minimum :\\ | ||
+ | * le nom du packager | ||
+ | * l'url vers la source du package | ||
+ | * les commandes bash utilisées pour construire le package | ||
+ | |||
+ | **H/** | ||
+ | Les packages (sauf excellente raison) sont compilés avec :\\ | ||
+ | CFLAGS=" | ||
+ | CXXFLAGS=" | ||
+ | |||
+ | **I/** | ||
+ | Résumé des principales options de configuration : | ||
+ | < | ||
+ | ./configure --prefix=/ | ||
+ | </ | ||
+ | |||
+ | Ce qui veut dire : | ||
+ | * Le package n'est pas autorisé à installer des fichiers dans /opt et /usr/local | ||
+ | * /usr est le chemin du préfixe d' | ||
+ | * les fichiers log doivent être installés dans /var | ||
+ | * les fichiers de configuration : /etc | ||
+ | * les pages de manuel : /usr/man | ||
+ | |||
+ | **J/** | ||
+ | Tous les binaires et librairies systèmes doivent être strippées de symboles de " | ||
+ | |||
+ | **K/** | ||
+ | Les pages de manuel doivent être gzippées | ||
+ | |||
+ | **L/** | ||
+ | Les permissions des fichiers installés dans /usr/bin sont: root:root | ||
+ | |||
+ | **M/** | ||
+ | Les fichiers installés dans /usr/doc ne peuvent avoir de permissions d' | ||
+ | |||
+ | **N/** | ||
+ | Tous les packages tournant sous X doivent installer: | ||
+ | * leur fichier .desktop dans / | ||
+ | * leur icône dans usr/ | ||
+ | |||
+ | |||
+ | ====== ZenBuild ====== | ||
+ | ===== modèle ===== | ||
+ | |||
+ | Voici un exemple de modèle de ZenBuild qui, en plus du package.tgz, | ||
+ | < | ||
+ | |||
+ | # | ||
+ | # packager | ||
+ | # source location | ||
+ | # last revised | ||
+ | |||
+ | softname=' | ||
+ | softversion='' | ||
+ | packageversion='' | ||
+ | |||
+ | arch=' | ||
+ | cpu=' | ||
+ | |||
+ | prefix=/usr | ||
+ | |||
+ | # log ;) | ||
+ | ( | ||
+ | |||
+ | # parameters needed for the build process | ||
+ | buildir=$(pwd) | ||
+ | srcpkg=" | ||
+ | src=" | ||
+ | package=" | ||
+ | dest=" | ||
+ | |||
+ | # prepare the build result directory | ||
+ | dest=" | ||
+ | rm -rf $dest | ||
+ | mkdir -p $dest | ||
+ | mkdir -p $dest/ | ||
+ | mkdir -p $dest/ | ||
+ | mkdir -p $dest/ | ||
+ | |||
+ | # Slack-desc | ||
+ | cat <<EOF > $dest/ | ||
+ | |-----handy-ruler------------------------------------------------------| | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | Nom_PackageX: | ||
+ | EOF | ||
+ | |||
+ | # extract the source code | ||
+ | cd $buildir | ||
+ | tar xvf $srcpkg | ||
+ | cd $src | ||
+ | |||
+ | # build | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | make install DESTDIR=$dest | ||
+ | |||
+ | # add ' | ||
+ | cp -a \ | ||
+ | | ||
+ | | ||
+ | |||
+ | # Compress Man Pages | ||
+ | gzip -9 $dest/ | ||
+ | |||
+ | # Strip | ||
+ | ( cd $dest | ||
+ | find . | xargs file | grep " | ||
+ | find . | xargs file | grep " | ||
+ | ) | ||
+ | |||
+ | # .desktop file | ||
+ | cat << " | ||
+ | [Desktop Entry] | ||
+ | Encoding=UTF-8 | ||
+ | Name= | ||
+ | Name[fr]= | ||
+ | Comment= | ||
+ | Comment[fr]= | ||
+ | Exec= | ||
+ | Icon= | ||
+ | Terminal=false | ||
+ | Type=Application | ||
+ | Categories=Application; | ||
+ | StartupNotify=true | ||
+ | EOF | ||
+ | |||
+ | # Make the package freedesktop compliant | ||
+ | cp $buildir/ | ||
+ | |||
+ | # ZenBuild | ||
+ | cp $buildir/ | ||
+ | |||
+ | # set target permissions | ||
+ | chown -R root:root $dest | ||
+ | |||
+ | cd $dest | ||
+ | find . -perm 664 -exec chmod 644 {} \; | ||
+ | find . -perm 600 -exec chmod 644 {} \; | ||
+ | find . -perm 444 -exec chmod 644 {} \; | ||
+ | find . -perm 400 -exec chmod 644 {} \; | ||
+ | find . -perm 440 -exec chmod 644 {} \; | ||
+ | find . -perm 777 -exec chmod 755 {} \; | ||
+ | find . -perm 775 -exec chmod 755 {} \; | ||
+ | find . -perm 511 -exec chmod 755 {} \; | ||
+ | find . -perm 711 -exec chmod 755 {} \; | ||
+ | find . -perm 555 -exec chmod 755 {} \; | ||
+ | |||
+ | # real packaging work | ||
+ | cd $dest | ||
+ | makepkg -l y -c n $dest.tgz | ||
+ | |||
+ | # md5sum signature | ||
+ | cd $buildir | ||
+ | md5sum $package.tgz > $package.md5 | ||
+ | |||
+ | # log ;) | ||
+ | ) 2>&1 | tee " | ||
+ | </ | ||
zenwalk/zenbuild.txt · Dernière modification : 2018/11/17 12:54 de 127.0.0.1