====== Exemple détaillé d'un FrugalBuild ======

===== Notre exemple =====


<php>
# Compiling Time: 0.06 SBU 
# Maintainer: VMiklos <vmiklos@frugalware.org>

pkgname=cabextract
pkgver=1.2
pkgrel=1
pkgdesc="a program to extract Microsoft Cabinet files"
url="http://www.kyz.uklinux.net/cabextract.php"depends=('glibc')
groups=('apps')
archs=('i686' 'x86_64')
up2date="lynx -dump http://www.kyz.uklinux.net/cabextract.php |grep 'cabextract \
        source code'|tr -s ' '|cut -d ' ' -f 6"
source=(http://www.kyz.uklinux.net/downloads/$pkgname-$pkgver.tar.gz)
sha1sums=('871b3db4bc2629eb5726659c147aecea1af6a6d0')

# optimization OK
</php>


Détaillons chaque élément...

===== # Compiling Time:  SBU =====


<php>
# Compiling Time:  SBU
</php>

Cette ligne signifie le temps de compilation, elle se rajoute automatiquement lors de la compilation ou par vérification via la commande fblint

===== Maintainer et Contributor =====


<php>
# Maintainer: VMiklos <vmiklos@frugalware.org>
</php>

Cette ligne indique le nom de mainteneneur de paquet, si vous n'allez pas maintenir indiquez ceci:

<php>
# Contributor: votrepseudo <votreemail@blabla.com>
</php>

===== pkgname =====


<php>
pkgname=cabextract
</php>

Cette ligne indique le nom de paquet. Ce sera le nom utilisé dans vos commandes pacman une fois le paquet au depot.

===== pkgver =====


<php>
pkgver=1.2
</php>

Cette ligne indique la version du programme cabextract, faite bien attention certains programmes ont des manières différentes de nommer ses numéros de version.

===== pkgrel =====


<php>
pkgrel=1
</php>

Cette ligne indique la version du paquet. Si vous avez recompilé le paquet afin de corriger des choses...etc vous devez alors changer le 1 par 2 (et ainsi de suite).

===== pkgdesc =====


<php>
pkgdesc="a program to extract Microsoft Cabinet files"
</php>

Cette ligne indique une courte description du programme en question.

===== url =====


<php>
url="http://www.kyz.uklinux.net/cabextract.php"
</php>

Cette ligne indique la page web du programme.

===== depends (dépendances) =====


<php>
depends=('glibc')
</php>

Cette ligne est très importante, elle indique les dépendance nécéssaire au paquet. Dans cet exemple, glibc est nécéssaire au fonctionnement de cabextract. Si votre paquet nécéssites plusieurs dépendances il vous faudra toutes les indiquer entre guillemets et espacées par un espace. Pour trouver les dépendances d'un paquet utilisez la commande **makepkg -a**


===== Le Groupe =====


<php>
groups=('apps')
</php>

Cette ligne indique le groupe où appartient le paquet. Ne placez pas votre paquet dans les groupes **apps**, **base**, **devel**, **lib**, **multimedia** ou **network**, vous devez utiliser un groupe adéquat avec le suffixe **-extra**. Par exemple si vous faites un paquet d'un programme pour Gnome, prenez le groupe **gnome-extra**.

===== Architectures =====


<php>
archs=('i686' 'x86_64')
</php>

Cette ligne indique l'architecture pour laquelle se destine votre paquet. Dans cet exemple les architectures i686 et x86_64.



===== L'up2date =====


<php>
up2date="lynx -dump http://www.kyz.uklinux.net/cabextract.php |grep 'cabextract \
        source code'|tr -s ' '|cut -d ' ' -f 6"
</php>

Cette ligne est destiné au serveur de frugalware.org pour signaler aux mainteneurs de la présence d'une nouvelle version du fichier source. Elle n'est pas toujours facile à faire, voici quelque exemples:

Pour une page comportant le lien vers le tarball en **tar.gz**, l'up2date devrait ressembler à ceci:

<php>
up2date="lynx -dump http://adressedelapage/page.php |grep tar.gz | Flasttar"
</php>

Note s'il y a plusieurs lien pour des tar.gz, pour que l'up2date selectionne le premier lien, mettez **grep -m1 tar.gz**

S'il n'y a pas de page mais juste un espace avec des tarball en **tar.bz2**,

<php>
up2date="lynx -dump http://adressedelapage/ | Flasttarbz2"
</php>

Si vraiment vous n'y arrivez pas, vous pouvez bloquer l'up2date et indiquez aux développeurs de Frugalware qu'ils devront corriger la ligne, voilà ce qu'il faut mettre:

<php>
up2date=$pkgver #need to be fix
</php>

===== Source =====


<php>
source=(http://www.kyz.uklinux.net/downloads/$pkgname-$pkgver.tar.gz)
</php>

Cette ligne indique l'URL de la source du programme. Ce fichier tar.gz sera téléchargé pour la compilation du paquet.


===== SHA1SUMS =====


<php>
sha1sums=('094e3afb2fe8dfe82f63731cdcd3b999f4856cff')
</php>

Cette ligne indique le SHA1SUM du fichier source de la précédente ligne. 

Avec la commande **makepkg -g** vous aure le SHA1SUM du fichier source.

Ensuite arrive la partie build, dans l'exemple il n'y en a pas. Allez vois la section plus bas pour les détails.


===== # optimization OK =====


<php>
# optimization OK
</php>

Cette ligne est rajouté automatiquement lors de la compilation ou par la commande fblint. Elle indique  que la compilation a été faite par votre $CFLAGS ou $CXXFLAGS.






===== build =====

Dans l'exemple plus haut il n'y avait pas de partie build, tout simplement car par défaut si vous ne mettez rien, le build correspond à ceci:

<php>
build() {
        Fpatchall
        Fmake "$@"
        Fmakeinstall
        if echo ${source[@]}|grep -q README.Frugalware; then
        Fdoc README.Frugalware
        fi
}
</php>

Les commandes sont indiquées entre { }

Si votre paquet se compile avec les banales:

  ./configure
  make
  make install

...alors, là aussi, il n'est pas nécéssaire de mettre un build, que c'est pratique... :-D

Nous avons vu sur cette page les fonctions classiques que comporte un FrugalBuild mais il en existe d'autres suivant les cas particuliers:

  *[[Autres fonctions possibles dans un frugalBuild]]

