LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


zenwalk:zenbuild

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

zenwalk:zenbuild [2018/11/17 13:54] (Version actuelle)
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/soumettre votre package à la communauté.
 +
 +**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, "-" est supporté mais devrait être évité.
 +  - version: la version: celle de l'application (ex 1.5.0.6), avec quelques règles encore:
 +* les séparateurs "_,()-" sont interdits, utilisez "."
 +  - arch: l'arche: i486 le plus souvent (il faut une excellente raison pour ne pas le faire)
 +  - zenwalk-release: la version de zenwalk pour laquelle le package a été construit (ex: zenwalk-4.0 fraîchement installé > 40, zenwalk-4.0 installé mais depuis, vous utilisez le répertoire "snapshot" pour les  mises à jour > 42)
 +  - build: "compilation, construction": la version du package pour une même application (ex: 1ère compilation de XW-3.0: 40.1, amélioration, nouvelle compilation de XW-3.0: 40.2)
 +  - Rien ne commence par 0 (ex: 002 doit être convertit en 2)
 +  - Les mots "alpha, beta, svn, ... sont interdits, utilisez .a, .b, .c
 +
 +**B/**
 +Tous les packages doivent s'installer sans que l'utilisateur doive éxécuter quoique ce soit après l'installation pour rendre le package utilisable.
 +
 +**C/**
 +Tous les packages doivent contenir un fichier "slack-desc" qui décrit brièvement l'application
 +
 +**D/**
 +Le script de post-install (doinst.sh) ne doit contenir que des chemins relatifs à / (ex: /etc/profile est = etc/profile dans doinst.sh)
 +
 +**E/**
 +Tous les packages doivent être accompagné de leur signature md5, pour vérifier leur intégrité, ainsi que de leur fichier .dep qui liste les dépendances.\\
 +Pour l'obtenir :
 +<code>
 +# requiredbuilder -z packageX.tgz > packageX.dep
 +</code>
 +
 +**F/**
 +Tous les packages doivent inclure leur ZenBuild, nommé "build-packageX.sh" dans le répertoire "/usr/src/packageX-x.x"
 +
 +**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="-O2 -march=i486 -mtune=i686"\\
 +CXXFLAGS="-O2 -march=i486 -mtune=i686"
 +
 +**I/**
 +Résumé des principales options de configuration :
 +<code>
 +./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --mandir=/usr/man
 +</code>
 +
 +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'installation
 +  * 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 "débugages"
 +
 +**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'écriture pour l'utilisateur
 +
 +**N/**
 +Tous les packages tournant sous X doivent installer:
 +  * leur fichier .desktop dans /usr/share/applications
 +  * leur icône dans usr/share/icons/hicolor/scalable/apps/ (si vectorielle) et/ou       usr/share/icons/hicolor/48x48/apps/ (si png)
 +
 +
 +====== ZenBuild ======
 +===== modèle =====
 +
 +Voici un exemple de modèle de ZenBuild qui, en plus du package.tgz, vous fournira le fichier .md5 ainsi q'un fichier.log traçant la compilation :
 +<code>
 +
 +#!/bin/bash 
 +# packager            : Prénom Nom <pseudo> (mon_email@mail.com)
 +# source location  : http://www.lieu_des_sources/source.tar.gz
 +# last revised        : date de la dernière mise à jour
 +
 +softname='Nom_PackageX'
 +softversion=''
 +packageversion=''
 +
 +arch='i486'
 +cpu='i686'
 +
 +prefix=/usr
 +
 +# log ;)
 +(
 +
 +# parameters needed for the build process
 +buildir=$(pwd)
 +srcpkg="$buildir/$softname-$softversion.tar.gz"
 +src="$buildir/$softname-$softversion"
 +package="$softname-$softversion-$arch-$packageversion"
 +dest="$buildir/$package"
 +
 +# prepare the build result directory
 +dest="$buildir/$package"
 +rm -rf $dest
 +mkdir -p $dest
 +mkdir -p $dest/install
 +mkdir -p $dest/usr/doc/$softname-$softversion
 +mkdir -p $dest/usr/src/$softname-$softversion
 +
 +# Slack-desc
 +cat <<EOF > $dest/install/slack-desc
 +            |-----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
 +
 +   export CFLAGS="-O2 -march=$arch -mtune=$cpu"
 +   export CXXFLAGS="-O2 -march=$arch -mtune=$cpu"
 +
 +   ./configure \ 
 +     --prefix=$prefix \ 
 +     --enable-static=no \ 
 +     --program-prefix=""
 +     --program-suffix=""
 +     --build=$arch-slackware-linux 
 +
 +   make 
 +   make install DESTDIR=$dest
 +
 +# add 'default' files 
 +   cp -a \ 
 +     AUTHORS COPYING INSTALL README ChangeLog \ 
 +     $dest/usr/doc/$softname-$softversion 
 +     
 +# Compress Man Pages 
 +gzip -9 $dest/usr/man?/*
 +
 +# Strip 
 +( cd $dest 
 + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null 
 + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null 
 +)
 +
 +# .desktop file 
 +cat << "EOF" > $dest/usr/share/applications/$softname.desktop 
 +[Desktop Entry] 
 +Encoding=UTF-8 
 +Name= 
 +Name[fr]= 
 +Comment= 
 +Comment[fr]= 
 +Exec= 
 +Icon= 
 +Terminal=false 
 +Type=Application 
 +Categories=Application;System; 
 +StartupNotify=true 
 +EOF 
 +
 +# Make the package freedesktop compliant 
 +cp $buildir/$softname-$softversion/pixmaps/$softname.png $dest/usr/share/icons/hicolor/48x48/apps/
 +
 +# ZenBuild
 +cp $buildir/build-$softname.sh $dest/$prefix/src/$softname-$softversion
 +
 +# 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 "$softname-$softversion-build.log"
 +</code>
  
zenwalk/zenbuild.txt · Dernière modification: 2018/11/17 13:54 (modification externe)