# [ebuild] Como forzar una USE en una dependencia.

## opotonil

Hola,

Estaba intentando modificar el ebuild de Tucan (https://bugs.gentoo.org/show_bug.cgi?id=261907) para añadirle una USE "gtk" para poder usarlo unicamente en modo CLI sin necesitar instalar la mitad de las X, el problema es que hay que activar la USE "linguas_en" a una de las dependencias para que funcione correctamente.

El ebuild segun lo tengo ahora mismo (la forma de activar la USE esta cogida de la penultima version del enlace anterior):

```

# Copyright 1999-2009 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils

DESCRIPTION="Software designed for automatic management of downloads and uploads at hosting sites like rapidshare or megaupload"

HOMEPAGE="http://tucaneando.com/"

SRC_URI="http://forja.rediris.es/frs/download.php/1470/${P}.tar.gz"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86 ~amd64"

IUSE="gtk"

DEPEND="dev-lang/python

        gtk? ( dev-python/pygtk

               gnome-base/librsvg )

        app-text/tesseract[linguas_en]

        dev-python/imaging"

src_compile() {

        sed -i \

                -e '/^DESTDIR/d' \

                Makefile || die "sed failed"

}

src_install() {

        emake DESTDIR="${D}"/usr install || die "emake install failed"

        dodoc CHANGELOG README || die

        newicon media/tucan.svg "${PN}.svg"

}

```

El digest del ebuild lo pasa sin problemas, pero a la hora de hacer el emerge:

```

# emerge -pv tucan

These are the packages that would be merged, in order:

Calculating dependencies /

!!! Invalid or corrupt dependency specification:

invalid atom: 'app-text/tesseract[linguas_en]'

('ebuild', '/', 'net-misc/tucan-0.3.9', 'merge')

dev-lang/python app-text/tesseract[linguas_en] dev-python/imaging

This package can not be installed. Please notify the 'net-

misc/tucan-0.3.9' package maintainer about this problem.

... done!

```

Gracias y salu2.

----------

## Mustela

Hola opotonil. Todavía no estoy al nivel de modificación de ebuilds, pero, ¿no sería más adecuado usar la variable LINGUAS para poder añadir además varios idiomas en vez de una opción de USE como tal? A ver, que quizá estoy metiendo la gamba ;)

----------

## opotonil

Creo que no me has entendio, no soy demasiado bueno explicandome.

"app-text/tesseract" ya existe en portage y tiene su USE LINGUAS con varios idiomas:

```

# emerge -pv tesseract

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  N    ] app-text/tesseract-2.03  USE="tiff" LINGUAS="es -de -de_FR -en -fr -it -nl -pt -vi" 2,385 kB

Total: 1 package (1 new), Size of downloads: 2,385 kB

```

La cuestion es que para que Tucan funcione correctamente es necesario que "app-text/tesseract", que es una dependencia, tenga activado el soporte para el idioma ingles, segun pone la documentacion "https://forja.rediris.es/svn/cusl3-tucan/trunk/README", de forma que lo que intento es activar la USE "LINGUAS=en" ("linguas_en") del paquete "app-text/tesseract" cuando se instale Tucan. La USE que he añadido al ebuild de Tucan es "gtk".

Salu2.

----------

## Coghan

¿Y no es mejor que le dejes a portage que haga eso?

Crear el archivo /etc/portage/env/app-text/tesseract y añade

```
LINGUAS="en"
```

----------

## opotonil

Esta visto que me explico fatal.

Cuando hablo de activar la USE "linguas_en" simplemente me refiero a que aparezca un mensaje de estos que da portage al emerger indicando que para que cierto paquete funcione es necesario que tal otro paquete tenga activa cierta USE. No tengo Gentoo delante para poder poner uno de estos mensajes de ejemplo. Quien lo instalara tendria que seguir haciendo lo que indica @Coghan pero se le avisaria.

En principio pareceia muy sencillo... de hecho en uno de los ebuild del bug indicado en el primer post parece que lo hacen, aunque no comprobe si funcionaba lo di por echo. Y despues de estar buscando y probando media tarde fastidia quedarse con la duda.

Salu2.

----------

## gringo

 *Quote:*   

> DEPEND="dev-lang/python
> 
>         gtk? ( dev-python/pygtk
> 
>                gnome-base/librsvg )
> ...

 

 *Quote:*   

> invalid atom: 'app-text/tesseract[linguas_en]

 

Creo que si simplemente añades EAPI="2" justo debajo de la cabecera ya debería funcionar como esperas.

Dependencias marcados por USE son parte de la segunda revisión de la EAPI y hay que declararlo como tal hasta donde yo sé.

http://devmanual.gentoo.org/general-concepts/dependencies/index.html

saluetes

----------

## opotonil

Perfecto, eso era. Muchas gracias @Gringo.

```

# emerge -pv tucan

These are the packages that would be merged, in order:

Calculating dependencies... done!

emerge: there are no ebuilds built with USE flags to satisfy "app-text/tesseract[linguas_en]".

!!! One of the following packages is required to complete your request:

- app-text/tesseract-2.03 (Change USE: +linguas_en)

(dependency required by "net-misc/tucan-0.3.9" [ebuild])

(dependency required by "tucan" [argument])

```

----------

## the incredible hurd

O no me he enterado de nada o voy a decir una barbaridad:

¿Con

```
echo "app-text/tesseract linguas_en" >> /etc/portage/package.use
```

no basta?

Tengo

 *Quote:*   

> 
> 
> www-client/mozilla-firefox custom-optimization linguas_es_ES
> 
> 

 

para que sólo meta el español de España, sin todas las variantes argentinas, mejicanas, etc., etc. y me funciona a la perfección.

----------

## ekz

 *the incredible hurd wrote:*   

> O no me he enterado de nada o voy a decir una barbaridad

 

Tu respuesta, al igual que la de Coghan, es válida, pero opotonil buscaba una solución a nivel de ebuild, quizás para redistribuirlo (el ebuild) o algún otro fin.

¡Saludos!

----------

## gringo

releyendo el hilo :

 *Quote:*   

> para añadirle una USE "gtk" para poder usarlo unicamente en modo CLI sin necesitar instalar la mitad de las X, el problema es que hay que activar la USE "linguas_en" a una de las dependencias para que funcione correctamente.

 

entiendo que entonces en caso de !gtk se tiene que cumplir la dependencia linguas_en de app-text/tesseract , no ?

Si es asi, creo que no está reflejado correctamente en el ebuild. Quiero decir, app-text/tesseract con el use linguas_en sólo debería saltar como dependencia en caso de !gtk, ahora mismo está como dependencia incondicional.

saluetes

----------

## opotonil

 *Quote:*   

> 
> 
> Quiero decir, app-text/tesseract con el use linguas_en sólo debería saltar como dependencia en caso de !gtk, ahora mismo está como dependencia incondicional.
> 
> 

 

No, "app-text/tesseract" tiene que tener siempre la USE "linguas_en" por lo visto es el OCR encargado de los captchas. Te cito lo que me comentan en los foros del programa:

 *Quote:*   

> 
> 
> Lo que si se fijo es que si no se compila app-text/tesseract con linguas_en la resolución de captchas no funciona, los servicios con captcha no funcionarán (megaupload, gigasize, easy-share, ...).
> 
> 

 

Por si te interesa este es el post: http://forums.tucaneando.com/viewtopic.php?f=3&t=254

@the incredible hurd y @Coghan como dice @ekz la idea es, una vez probado, subirlo a bugzilla intentando mejorar el ebuild que hay actualmente.

Salu2.

--- EDITADO ---

Probado y subido a Bugzilla (el ingles no es lo mio): https://bugs.gentoo.org/show_bug.cgi?id=261907

----------

