# [ebuild] un ebuild pour 2 softs

## novazur

Bonjour,

J'ai travaillé avec l'autre de Franfest, soft permettant de faire "parler" festival en Français.

A l'aide de ses explications, j'ai pu élaborer une procédure d'installation de franfest, utilisant le festival inclus dans portage.

Maintenant, en retour, je voudrais produire un ebuild permettant de faire la même chose.

Mon problème réside essentiellement dans le fait que je me retrouve avec un ebuild qui doive traiter festival relativement normalement, mais en plus, qui doive aller patcher + configure + make de franfest.

J'avoue que je ne sais pas trop comment m'y prendre pour avoir au final quelque chose de relativement propre et fonctionnel.

Je suis sûr que certains me diront qu'il ne faut pas traiter 2 softs en 1 ebuild, seulement, je ne vois pas comment je pourrais faire pour traiter ça en 2 ebuilds. En effet, franfest doit être inclus dans festival avant compilation.

Pour aider à fixer un peu les choses puisque tout n'a probablement pas été très clair jusque là, voici la procédure que j'utilise actuellement :

```
cd /usr/src

wget http://download.gna.org/lliaphon/franfest/franfest-1.96-beta-rc01.tar.bz2

tar xvjf franfest-1.96-beta-rc01.tar.bz2

cd /usr/src/franfest-1.96-beta-rc01/

# configure festival pour environnement prêt à recevoir franfest

ebuild $(equery which festival) digest clean configure

{ configure franfest en fonction du rép source festival

./configure --prefix=/usrl --with-audiofeedback=n --with-group=users --with-festival=n --with-festivaldirectory=/var/tmp/portage/app-accessibility/festival-1.96_beta/work --with-mbrola=n

# patching pour adapter au contexte gentoo

sed -i 's%^char cfg_path.*$%char cfg_path[] = "/etc/franfest";%' festival/src/modules/franfest/franfest.h

ln -snf /opt/mbrola/fr1/fr1 ./festival/lib/voices/french/fr1_mbrola/fr1

ln -snf /opt/mbrola/fr2/fr2 ./festival/lib/voices/french/fr2_mbrola/fr2

# make franfest

make

# compilation festival

ebuild $(equery which festival) compile

# rectification liens erronés de franfest

ln -snf /opt/mbrola/fr1/fr1 /usr/share/festival/voices/french/fr1_mbrola/fr1

ln -snf /opt/mbrola/fr2/fr2 /usr/share/festival/voices/french/fr2_mbrola/fr2

# installation festival + franfest inclus

ebuild $(equery which festival) merge
```

Si ça vous parle un peu, tant mieux, cela m'aidera à renvoyer l'ascenseur à l'auteur de Franfest, qui pourra ainsi fournir l'ebuild sans avoir à passer plusieurs semaines, comme avec moi, à étudier comme installer franfest sous gentoo.

----------

## Gaby

Je ne connais ni Festival ni Fanfest mais pourquoi considères tu les 2 comme des softs séparés alors que le site que tu pointe le considère comme un patch :

 *Quote:*   

> Franfest est essentiellement un patch de Festival (voir I.5) qui permet de disposer d’une synthèse de parole française.

 

Je ne suis pas un spécialiste des ebuilds mais est ce que le mieux ne serait pas un ebuild pour Festival intégrant le patch Franfest ?

A la limite dans un use, ce serait l'idéal non ?

J'espère ne pas être à coté de la plaque ...

Gaby

----------

## novazur

Oui, bien sur, c'est un patch, mais pour le mettre en oeuvre, il faut faire un configure + make... ce n'est pas fourni sous la forme de patch habituel, malheureusement, sinon ça serait effectivement simple.

Du coup, je ne sais pas comment traiter les econfigure, emake etc...

----------

## Ey

Ce que je ferai c'est un ebuild franfest en partant de l'ebuild de festival, en ajoutant la source de festival et modifiant le unpack si necessaire pour que festival et franfest soient dans des repertoires separes de work, puis en modifiant le compile pour faire le make de franfest avant celui de festival.

Ensuite pour faire les choses proprement, si les 2 packages installent des fichiers identiques dans des repertoires identiques, ajoute une dependance bloquante sur festival dans ton ebuild pour eviter l'install simultanee. DEPEND="!app-accesibility/festival $DEPEND"

----------

## boozo

'alute

y'a un ebuild sur b.g.o pour les versions <.96 qui le traite ainsi donc pourquoi ne pas reprendre le principe sur la base de l'ebuild pour v-96  :Wink: 

```
S="${WORKDIR}/festival"

   local lang

   for lang in ${LINGUAS}; do

      [ fr = ${lang} ] || [ fr_FR = ${lang} ] || continue

      einfo "Configuring Franfest"

      cd ${WORKDIR}/franfest

      einfo "Running autoconf..."

      autoconf || die

      econf \

         --prefix=/usr \

         --with-franfestprefix=/usr/share \

         --with-festivalprefix=/usr/share \

         --with-franfestdirectory=${WORKDIR}/franfest \

         --with-festivaldirectory=${WORKDIR} \

         --with-festivalsources=${S}/src \

         --with-festival=n \

         --with-mbrola=y \

         --with-audiofeedback=n \

         ${excluded_interfaces} || die "Failed Franfest configure"

      einfo "Conpiling Franfest"

      emake  -j1 PROJECT_LIBDEPS="" REQUIRED_LIBDEPS="" LOCAL_LIBDEPS="" OPTIMISE_CXXFLAGS="${CXXFLAGS}" OPTIMISE_CCFLAGS="${CFLAGS}" CC="$(tc-getCC)" CXX="$(tc-getCXX)"|| die "Failed to configure Franfest"

   done   

```

btw, je ne sais pas si il y a eu du nettoyage de code dans festival et/ou franfest depuis mais il était übermoche cet ebuild   :Shocked: 

----------

