# [CONTRIB] esearch et overlay(s)[résolu]

## truc

Bonjour, vous l'attendiez tous, voila (je crois bien) le premier post CONTRIB, bref, vous me direz si j'ai eu tord ou pas.. 

première contrib

Je m'explique, app-portage/esearch a un problème: j'ai un overlay dans lequel, j'ai media-sound/mpd/mpd-9999.ebuild

voila ce que j'ai

```
* media-sound/mpd 

     Available versions:  0.11.5 0.11.5-r2 9999[1] 

     Installed:           9999

     Homepage:            http://www.musicpd.org

     Description:         Music Player Daemon (mpd)

[1] /usr/local/overlays/portage

```

Si je fais (ma fonction préférée qui me fais avoir esearch en eix en même temps, car eix n'a pas cette fonction)

```
<--cut-->

[ I] media-sound/mpd (9999):  A development version of Music Player Daemon (mpd)

 Portage [5] mpd-0.11.5

 Portage [6] mpd-0.11.5-r2

 Overlay [7] mpd-9999

<--cut-->

Show Ebuild: 

```

*le -e signifie --ebuild en théorie cf mon deuxième post

donc si je selectionne 7, ça m'ouvre bien l'ebuild /usr/local/overlays/portage/media-sound/mpd/mpd-9999

Par contre, maintenant ce qui est fun c'est que si j'ai un ebuild dans l'overlay qui est à la même version, et bien ça ne fonctionne pas.. pour le voir voici ce qu'on peut faire

```
  echo dsfqfnqm >/usr/local/overlays/portage/media-sound/mpd/mpd-0.11.5-r2.ebuild                                                                                                                                                   
```

 ( je sais un touch aurai suffit)

Maintenant, je le vois bien apparaitre:

```
<--cut-->

[ I] media-sound/mpd (9999):  A development version of Music Player Daemon (mpd)

 Portage [5] mpd-0.11.5

 Portage [6] mpd-0.11.5-r2

 Overlay [7] mpd-0.11.5-r2

 Overlay [8] mpd-9999

<--cut-->

Show Ebuild: 

```

Mais.. si je rentre 7 ça m'ouvre l'ebuild mpd-0.11.5-r2 de l'arbre officiel ( /usr/portage/media-sound/mpd//mpd-0.11.5-r2.ebuild )

Donc l'objet de ce post serait d'essayer de fixer ça, puis de poster le tout sur bugzilla, si on n'y arrive.

Deuxième contrib

J'ai également remqrqué que si on a plusieurs overlays, esearch ne les voient plus, je n'en ai plus qu'un  actuellement mais, ça se vérifie très simplement, rajoutant un overlay, avec ce même media-sound/mpd/mpd-0.11.5-r2.ebuild que tout à l'heure. Et on peut voir que esearch ne va carrément pas chercher dedans ( notre   ./esearch.py --ebuild mpd ne renvoi que les ebuilds officiels)

bon tout ça doit surment pouvoir se regler entre les lignes 32->40 et après la ligne 306, mais déjà, j'ai une question intermediaire, il y a à la ligne :

```

      from os import listdir, getenv, system

        from os.path import isdir

        from portage import settings, pkgcmp, pkgsplit

```

 ça vient d'où ça? les os, os.path et portage? from de ces choses mais elles sont où d'ailleurs?!Last edited by truc on Mon May 08, 2006 2:29 pm; edited 3 times in total

----------

## truc

Bon et comme je viens de remarquer, en fait esearch --ebuild mpd ne fonctionne pas comme il le devrait(me renvoyer la liste des ebuild dispo etC..) , (ça me renvoie un bête esearch mpd à la place, pourtant dans esearch --help et man esearch c'est bien écrit comme ça, bon j'm'y connais pas encore trop en python, mais en jetant un oeil dans le esearch.py, j'ai finalement pondu ce sublissime patch, j'y connais encore trop rien au patch , c'est pourquoi, ça me fait plaisir d'en soumettre un, même si je ne change qu'une lettre.. 

Bon pour faire joujou, j'ai copier esearch-0.7.1.tar.bz2 des distfiles vers $HOME/tmp, maintenant à vous de voir.. comme esearch est déjà installé j'ai déjà la database de construite etc..

bon, untar de l'ensemble, puis on copie ça dans le dossier esearch-0.7.1

```
--- esearch.py  2005-02-17 11:40:35.000000000 +0100

+++ esearch.py.new      2006-04-27 00:41:42.807456336 +0200

@@ -128,7 +128,7 @@

         from output import blue

         from common import version

         outputm = VERBOSE

-    elif arg in ("-e", "--ebuilds"):

+    elif arg in ("-e", "--ebuild"):

         from os import listdir, getenv, system

         from os.path import isdir

         from portage import settings, pkgcmp, pkgsplit
```

puis on se place dedans ce dossier, et 

```
patch esearch.py esearch-ebuild.patch
```

 ( je sais que patch peut avoir des options dus style -p1 etc.. mais pour l'instant tout ça est très vague pour moi.. donc si vous vous sentez d'attaque pour eclaircir tout ça.. sinon c'est pas grave ça viendra..)

Et enfin ensuite on peut vérifier que notre version d'esearch fonction normalement désormais:

```
./esearch.py --ebuild mpd
```

 me renvoi bien ce que je demande (une liste d'ebuild)Last edited by truc on Sat Apr 29, 2006 4:05 pm; edited 1 time in total

----------

## truc

 *truc wrote:*   

> bon tout ça doit surment pouvoir se regler entre les lignes 32->40 et après la ligne 306, mais déjà, j'ai une question intermediaire, il y a à la ligne :
> 
> ```
> 
>       from os import listdir, getenv, system
> ...

 

Je ne connais toujours pas trop python, mais avec le temps je me suis dit que c'était surement des fichiers (sources?) qui viennent avec portage en partie, ce qui expliquerai ces lignes (au début):

```
sys.path.insert(0, "/usr/lib/portage/pym")

sys.path.insert(0, "/usr/lib/esearch")
```

Voila, je me dis que portage, os.path etc. doivent se trouver quelque part par là.

--> tiens, une recherche de /usr/lib/portage/pym (sur le net) m'informe qu'un certain fichier /usr/lib/portage/pym/portage.py existe, je nedois pas être loin.. malheureusement, je ne suis pas chez moi, donc si quelqu'un à un lien ou quoique ce soit, pour que je puisse avoir accès à ces fichiers, ça serait cool:)

-->tout ça me fait penser que, c'est pas la première que j'y pense, ça pourrait être sympa d'avoir toute l'arborescence "system" d'une installation gentoo, quand par exemple (c'est arrivé à preque tout le monde je suis sûr.. ) on efface un ou plusieurs fichiers de conf essentiels. Toute l'installation/arborescence serait en read-only biensur, mais ça serait cool, ça existe déjà peut-être?. Bref, merci

EDIT: j'ai trouvé ça mais c'est très léger...

----------

## truc

iopiop, me revoila  :Wink: 

Bon, c'est (à moitié) un monologue mais bon. c'est pas grave..

On oublie le premier patch, celui qui vient fera tout d'un coup (vu la modif du premier, c'est pas trop grave...

Bon, donc, je ne m'y connais toujours pas en python, j'ai juste bidouillé enregardant un peu comment ça semblait marcher.. Donc, toute remarque, si remarques il y a (on peut rever non?), sera la bienvenue..

Alors, ce patch ne résoud pour l'instant, qu'une partie du problème, cf après

Donc, voici, ce que ce patch fait:

--> enlève le s qui foutait en l'air la recherche d'ebuild avec l'options --ebuild

--> une boucle, pour tous les overlays, et leur donne un numéro:

```
if overlay:

                    repo_num=1

                    for repo in overlay.split():

                        searchEbuilds("%s/%s/" % ( repo, pkg[1]), False, searchdef,repo_num)

                        repo_num=repo_num+1
```

--> comme peut-être vous l'avez remarqué(ça m'étonnerai vu l'interet que suscite ce poste...), modification de la fonction searchEbuilds qui maintenant, affichera le numéro de l'overlay dans lequel le paquet aura été trouvé

--> Enfin, si overlay(s) il y a, esearch se chargera de les afficher (numéro et chemin)

```
--- esearch.py  2005-02-17 11:40:35.000000000 +0100

+++ esearch.py.new      2006-05-04 22:17:18.020736128 +0200

@@ -64,16 +64,16 @@

     if fatal:

         sys.exit(1)

 

-def searchEbuilds(path, portdir = True, searchdef = ""):

+def searchEbuilds(path, portdir = True, searchdef = "", repo_num = ""):

     global ebuilds, output, defebuild

     pv = ""

     pkgs = []

     nr = len(ebuilds) + 1

 

     if portdir:

-        rep = darkgreen("Portage")

+        rep = darkgreen("Portage    ")

     else:

-        rep = red("Overlay")

+        rep = red("Overlay ("+str(repo_num)+")")

 

     if isdir(path):

         list = listdir(path)

@@ -128,7 +128,7 @@

         from output import blue

         from common import version

         outputm = VERBOSE

-    elif arg in ("-e", "--ebuilds"):

+    elif arg in ("-e", "--ebuild"):

         from os import listdir, getenv, system

         from os.path import isdir

         from portage import settings, pkgcmp, pkgsplit

@@ -309,12 +309,19 @@

                 else:

                     searchdef = ""

 

-                searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef)

+                searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef, "")

                 if overlay:

-                    searchEbuilds("%s/%s/" % (overlay, pkg[1]), False, searchdef)

+                   repo_num=1

+                   for repo in overlay.split():

+                       searchEbuilds("%s/%s/" % ( repo, pkg[1]), False, searchdef,repo_num)

+                       repo_num=repo_num+1

+

+

+

+               output.append("\n")

 

-                output.append("\n")

 

+                output.append("\n")

             count += 1

 

     regexlist[i][2] = "".join(output)

@@ -334,6 +341,13 @@

     if outputm == NORMAL:

         print ""

 

+if overlay:

+    repo_num=1

+    for repo in overlay.split():

+         print red("("+str(repo_num)+") : "+repo)

+        repo_num=repo_num+1

+

+

 if outputm == EBUILDS and count != 0:

     if count > 1:

         defebuild = (0, 0)

@@ -342,9 +356,9 @@

         nr = 1

     else:

         if defebuild[0] != 0:

-            print bold("Show Ebuild"), " (" + darkgreen(defebuild[0]) + "): ",

+            print bold("\nShow Ebuild"), " (" + darkgreen(defebuild[0]) + "): ",

         else:

-            print bold("Show Ebuild: "),

+            print bold("\nShow Ebuild: "),

         try:

             nr = sys.stdin.readline()

         except KeyboardInterrupt:

```

esearch va maintenant chercher dans les overlays, si il y en a plusieurs, mais.. il deux paquets existe dans une même version, dans le tree officiel, ou dans (au moins..) deux overlays, on a toujours un problème:

esearch -e sur ce paquet, en selectionnatn cette version, esearch semble nous ouvrir le premier ebuild trouvé.

Si je m'exprime mal, voici, ce qu'on peut faire pour le voir mieu..:

touch /usr/local/overlays/test/media-sound/mpd/mpd-9999.ebuild

maintenant,  ./esearch.py.new -e mpd nous renvoi:

```
<--cut-->

[ I] media-sound/mpd (9999):  A development version of Music Player Daemon (mpd)

 Portage     [5] mpd-0.11.5

 Portage     [6] mpd-0.11.5-r2

 Overlay (1) [7] mpd-9999

 Overlay (2) [8] mpd-0.11.5-r2

 Overlay (2) [9] mpd-9999

<--cut-->

(1) : /usr/local/overlays/portage

(2) : /usr/local/overlays/test

Show Ebuild:
```

(remarquez que je n'ai pas de mpd-9999 dans l'arbre officiel)

Si je mets 2, esearch m'ouvre /usr/local/overlays/portage/media-sound/mpd//mpd-9999.ebuild  soit le premier trouvé car mon overlay "1" se trouve "avant" dans make.conf par rapport à l'overlay "2" (testé en inversant l'ordre dans PORTDIR_OVERLAY et c'est confirmé)

Voila, j'en suis là..

Bonne soiréeLast edited by truc on Thu May 04, 2006 10:16 pm; edited 1 time in total

----------

## boozo

rhôooo la la ! mais faut pas le prendre comme çà voyons !   :Wink: 

c'est juste que les personnes capable d'interagir à ce niveau ne sont pas les plus nombreuses c'est tout ; et puis c'est vrai qu'il faut passer un peu de temps dessus pour pouvoir interagir de façon constructive ; d'où le temps de latence et ton sentiment de solitude... tu codes trop vite c'est tout  :Razz: 

Blagues à part, personnellement je ne suis pas la bonne personne pour critiquer ton code de manière pertinente mais je vais tester ton ebuild incessament ne t'en fait pas pour çà   :Wink:  ne serait-ce que pour te donner un ressenti ou un retour de test supplémentaire

Allez... faut pas le prendre mal et te retirer dans ta coquille ta contrib est qd même un bel effort continue  :Smile: 

----------

## truc

t'inquiètes:), c'était surtout de l'auto dérision, je sais bien, que ça prends du temps, moi même j'ai regardé au début le code d'esearch, j'y captais rien, puis finalement, en y repenssant par moment, et y revenant, c'est viendu;)

Bref, donc, je déprime pas, je comprends vos (absences) de réaction(s).. il s'est passé la même chose pour le post de TGL dans tips and tricks , sur gerer ses overlays  , il a du s'écouler un mois(arpès veirf pile un mois..) avant que j'essaies son script!

Bref, sinon, c'est pas un ebuild, mais juste un patch, je peut tout de suite modifier l'ebuild, pour incorporer ce patch, mais je ne savais pas si c'était là manière à suivre, pour un truc qui n'est encore qu'à l'état d'essai.

pour l'instant, pour ne rien faire de mal,  (j'me doute que toi, boozo, sache déjà maitriser l'art des patch etc.. mais pour les autres, je le précise au cas où, donc dans votre repertoire esearch-0.7.1, (après avoir décompressé l'archive), il vous suffit de copier le patch, et de faire un :

```
patch -p0 < nom_du_patch
```

et -p0 si j'ai tout bien compris, ça ne devrait pas être util ici, mais le patch est la diff de fichier esearch.py et esearch.py.new, et donc, leur chemin, n'étant pas précisés dans le patch, je peut le prendre en entier (p0, je n'enlève rien..) bref c'est à peu près ça je crois. :Smile:  )

EDIT 06/05/2006

allé, hop une mini révision:

```
diff -Naru esearch-0.7.1/esearch.py esearch-0.7.1-tmp/esearch.py

--- esearch-0.7.1/esearch.py    2005-02-17 11:40:35.000000000 +0100

+++ esearch-0.7.1-tmp/esearch.py        2006-05-06 15:59:24.583468808 +0200

@@ -64,16 +64,16 @@

     if fatal:

         sys.exit(1)

 

-def searchEbuilds(path, portdir = True, searchdef = ""):

+def searchEbuilds(path, portdir = True, searchdef = "", repo_num = ""):

     global ebuilds, output, defebuild

     pv = ""

     pkgs = []

     nr = len(ebuilds) + 1

 

     if portdir:

-        rep = darkgreen("Portage")

+        rep = darkgreen("Portage    ")

     else:

-        rep = red("Overlay")

+        rep = red("Overlay ("+str(repo_num)+")")

 

     if isdir(path):

         list = listdir(path)

@@ -128,7 +128,7 @@

         from output import blue

         from common import version

         outputm = VERBOSE

-    elif arg in ("-e", "--ebuilds"):

+    elif arg in ("-e", "--ebuild"):

         from os import listdir, getenv, system

         from os.path import isdir

         from portage import settings, pkgcmp, pkgsplit

@@ -309,12 +309,16 @@

                 else:

                     searchdef = ""

 

-                searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef)

+                searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef, "")

                 if overlay:

-                    searchEbuilds("%s/%s/" % (overlay, pkg[1]), False, searchdef)

+                   repo_num=1

+                   for repo in overlay.split():

+                       searchEbuilds("%s/%s/" % ( repo, pkg[1]), False, searchdef,repo_num)

+                       repo_num += 1

+

 

-                output.append("\n")

 

+                output.append("\n")

             count += 1

 

     regexlist[i][2] = "".join(output)

@@ -334,6 +338,15 @@

     if outputm == NORMAL:

         print ""

 

+

+if outputm == EBUILDS:

+    if overlay:

+        repo_num=1

+        for repo in overlay.split():

+            print red("("+str(repo_num)+") : "), bold(repo)

+            repo_num += 1

+

+

 if outputm == EBUILDS and count != 0:

     if count > 1:

         defebuild = (0, 0)

@@ -342,9 +355,9 @@

         nr = 1

     else:

         if defebuild[0] != 0:

-            print bold("Show Ebuild"), " (" + darkgreen(defebuild[0]) + "): ",

+            print bold("\nShow Ebuild"), " (" + darkgreen(defebuild[0]) + "): ",

         else:

-            print bold("Show Ebuild: "),

+            print bold("\nShow Ebuild: "),

         try:

             nr = sys.stdin.readline()

         except KeyboardInterrupt:

```

Et donc, c'est juste un petit nettoyage, c'est normalement plus propre, dans esearch--0.7.1:

 *pour patcher wrote:*   

> patch -p1 < chemin/vers/esearch-overlays.patch

 

c'est -p1 car j'ai juste changer la manière de faire la diff

sinon je me demande, si il faut faire un patch en considérant les patch déjà écrit ou s'ils ils faut patcher sur la version nature? (de toute façons patch saura gérer en général, mais bon.. Donc je pense, vous donner des nouvelles diff en prenant en compte les patch déjà existant de esearch dans portage.. voilii-voilou..

 :Smile: 

----------

## truc

c'ets bon je l'ai finallement eu! j'ai donc poster sur bugs.gentoo.org

BUGS 132548: esearch fix for multiple overlay, and few other 'bugs'

Et pour ceux qui ne vont jamais fait un tour là bas, je me permets de les reposter ici:) 

```
diff -Naru esearch-0.7.1/esearch.py esearch-0.7.1-tmp/esearch.py

--- esearch-0.7.1/esearch.py   2006-05-07 12:27:59.481566744 +0200

+++ esearch-0.7.1-tmp/esearch.py   2006-05-07 12:37:17.006810024 +0200

@@ -64,16 +64,16 @@

     if fatal:

         sys.exit(1)

 

-def searchEbuilds(path, portdir = True, searchdef = ""):

+def searchEbuilds(path, portdir = True, searchdef = "", repo_num = ""):

     global ebuilds, output, defebuild

     pv = ""

     pkgs = []

     nr = len(ebuilds) + 1

 

     if portdir:

-        rep = darkgreen("Portage")

+        rep = darkgreen("Portage    ")

     else:

-        rep = red("Overlay")

+        rep = red("Overlay "+str(repo_num)+"  ")

 

     if isdir(path):

         list = listdir(path)

@@ -82,7 +82,7 @@

             if file[-7:] == ".ebuild":

                 pv = file[:-7]

                 pkgs.append(pkgsplit(pv))

-                pkgs[-1].append(path + "/" + file)

+                pkgs[-1].append(path + file)

                 if searchdef != "" and pv == searchdef:

                     defebuild = (searchdef, pkgs[-1][3])

         pkgs.sort(pkgcmp)

@@ -91,9 +91,9 @@

             if pkg[2] != "r0":

                 rev = "-" + pkg[2]

             output.append(" " + rep + " [" + bold(str(nr)) + "] " + pkg[0] + "-" + pkg[1] + rev + "\n")

-            ebuilds.append(pkg[3])

+            ebuilds.append(pkg[len(pkg)-1])

             nr += 1

-

+ 

 NORMAL =  1

 COMPACT = 2

 VERBOSE = 3

@@ -128,7 +128,7 @@

         from output import blue

         from common import version

         outputm = VERBOSE

-    elif arg in ("-e", "--ebuilds"):

+    elif arg in ("-e", "--ebuild"):

         from os import listdir, getenv, system

         from os.path import isdir

         from portage import settings, pkgcmp, pkgsplit

@@ -313,12 +313,14 @@

                 else:

                     searchdef = ""

 

-                searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef)

+                searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef, "")

                 if overlay:

-                    searchEbuilds("%s/%s/" % (overlay, pkg[1]), False, searchdef)

+                    repo_num=1

+                    for repo in overlay.split():

+                        searchEbuilds("%s/%s/" % ( repo, pkg[1]), False, searchdef,repo_num)

+                        repo_num += 1

 

                 output.append("\n")

-

             count += 1

 

     regexlist[i][2] = "".join(output)

@@ -338,34 +340,42 @@

     if outputm == NORMAL:

         print ""

 

-if outputm == EBUILDS and count != 0:

-    if count > 1:

-        defebuild = (0, 0)

 

-    if len(ebuilds) == 1:

-        nr = 1

-    else:

-        if defebuild[0] != 0:

-            print bold("Show Ebuild"), " (" + darkgreen(defebuild[0]) + "): ",

+if outputm == EBUILDS:

+    if overlay:

+        repo_num=1

+        for repo in overlay.split():

+            print red("Overlay "+str(repo_num)+" : "+repo)

+            repo_num += 1

+    

+    if count != 0:

+        if count > 1:

+            defebuild = (0, 0)

+

+        if len(ebuilds) == 1:

+            nr = 1

         else:

-            print bold("Show Ebuild: "),

+            if defebuild[0] != 0:

+                print bold("\nShow Ebuild"), " (" + darkgreen(defebuild[0]) + "): ",

+            else:

+                print bold("\nShow Ebuild: "),

+            try:

+                nr = sys.stdin.readline()

+            except KeyboardInterrupt:

+                sys.exit(1)

         try:

-            nr = sys.stdin.readline()

-        except KeyboardInterrupt:

-            sys.exit(1)

-    try:

-        editor = getenv("EDITOR")

-        if editor:

-            system(editor + " " + ebuilds[int(nr) - 1])

-        else:

-            print ""

-            error("Please set EDITOR", False)

-    except IndexError:

-        print ""

-        error("No such ebuild", False)

-    except ValueError:

-        if defebuild[0] != 0:

-            system(editor + " " + defebuild[1])

-        else:

+            editor = getenv("EDITOR")

+            if editor:

+                system(editor + " " + ebuilds[int(nr) - 1])

+            else:

+                print ""

+                error("Please set EDITOR", False)

+        except IndexError:

             print ""

-            error("Please enter a valid number", False)

+            error("No such ebuild", False)

+        except ValueError:

+            if defebuild[0] != 0:

+                system(editor + " " + defebuild[1])

+            else:

+                print ""

+                error("Please enter a valid number", False)

```

Et, le nouvel ebuild associé:

```
# Copyright 1999-2006 Gentoo Foundation

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

# $Header: /var/cvsroot/gentoo-x86/app-portage/esearch/esearch-0.7.1-r2.ebuild,v 1.1 2006/04/24 00:06:32 antarus Exp $

inherit eutils

DESCRIPTION="Replacement for 'emerge --search' with search-index"

HOMEPAGE="http://david-peter.de/esearch.html"

SRC_URI="http://david-peter.de/downloads/${P}.tar.bz2"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc-macos ~ppc64 ~s390 ~sh ~sparc ~x86"

IUSE=""

RDEPEND=">=dev-lang/python-2.2

   >=sys-apps/portage-2.0.50"

pkg_setup() {

   if ! built_with_use dev-lang/python readline ; then

      eerror "Python has to be build with 'readline' support!"

      eerror "To do so: USE=\"readline\" emerge python"

      eerror "Or, add \"readline\" to your USE string in"

      eerror "/etc/make.conf"

      die "Works only with python readline support"

   fi

}

src_compile() {

   epatch ${FILESDIR}/97462-esearch-metadata.patch || die "Failed to patch sources!"

   epatch ${FILESDIR}/97969-ignore-missing-ebuilds.patch || die "Failed to patch sources!"

   epatch ${FILESDIR}/132548-multiple-overlay.patch || die "Failed to patch sources!"

}

src_install() {

   dodir /usr/bin/ /usr/sbin/

   exeinto /usr/lib/esearch

   doexe eupdatedb.py esearch.py esync.py common.py || die "doexe failed"

   dosym /usr/lib/esearch/esearch.py /usr/bin/esearch

   dosym /usr/lib/esearch/eupdatedb.py /usr/sbin/eupdatedb

   dosym /usr/lib/esearch/esync.py /usr/sbin/esync

   doman en/{esearch,eupdatedb,esync}.1

   dodoc ChangeLog "${FILESDIR}/eupdatedb.cron"

   if use linguas_it ; then

      insinto /usr/share/man/it/man1

      doins it/{esearch,eupdatedb,esync}.1

   fi

}

```

Voili-voulou, c'est cool:), j'ai finalement fais les diff sur les sources patchées avec les patch déjà existant, ça sera plus propre je pense..

Je suis toujours preneur de remarques/commentaires.. (je sais je n'ai pas modifié l'entête de l'ebuild.. mais mis à part la version je ne savais pas quoichanger dans cette entête...

Et pour finir, voila ce que donne la simple recherche d'ebuild de tout à l'heure avec des ebuilds créés pour l'occasion (jour de fête inside...)

```
 [ N] mail-filter/spampd (2.30):  spampd is a program used within an e-mail delivery system to scan messages for possible Unsolicited Commercial E-mail content.

 Portage     [1] spampd-2.11-r1

 Portage     [2] spampd-2.30

[ N] media-libs/libmpd (0.12.0):  A library handling connection to a MPD server.

 Portage     [3] libmpd-0.01

 Portage     [4] libmpd-0.12.0

[ I] media-sound/mpd (9999):  A development version of Music Player Daemon (mpd)

 Portage     [5] mpd-0.11.5

 Portage     [6] mpd-0.11.5-r2

 Overlay 1   [7] mpd-0.11.5-r2

 Overlay 1   [8] mpd-9999

 Overlay 2   [9] mpd-0.11.5-r2

 Overlay 2   [10] mpd-9999

[ N] media-sound/mpd-svn (20060321):  A development version of Music Player Daemon (mpd)

 Portage     [11] mpd-svn-20051220

 Portage     [12] mpd-svn-20060321

[ N] media-sound/mpdscribble (0.2.7):  An MPD client that submits information to audioscrobbler.

 Portage     [13] mpdscribble-0.2.6

 Portage     [14] mpdscribble-0.2.7

[ N] media-sound/pympd (0.06.1):  a Rhythmbox-like PyGTK+ client for Music Player Daemon

 Portage     [15] pympd-0.06

 Portage     [16] pympd-0.06.1

[ N] media-sound/qmpdclient (1.0.3):  An easy to use MPD client written in Qt 4.1

 Portage     [17] qmpdclient-1.0.3

[ N] net-misc/pimpd (0.8):  RFC1413-compliant identd server supporting masqueraded connections

 Portage     [18] pimpd-0.8

[ N] sec-policy/selinux-snmpd (20051023):  SELinux policy for snmp daemons

 Portage     [19] selinux-snmpd-20050605

 Portage     [20] selinux-snmpd-20051023

[ N] sys-auth/icmpdn (0.4):  ICMP Domain Name utilities & NSS backend

 Portage     [21] icmpdn-0.4

Overlay 1 : /usr/local/overlays/portage

Overlay 2 : /usr/local/overlays/test

Show Ebuild: 

```

et si je choisi 6,7,8,9 ou 10, j'ai bien l'ebuild que je voulais voir qui s'ouvre:), comme je le disait dans le rapport de bug, y'avais également un "/" en trop que j'ai enlevé, je sais qu'il y a un programme qui converti les "//" en "/" dans les chemins, mais je ne me souviens pas duquel, vous savez?

Sinon, bah ce fut fort agréable.. merci  :Razz: 

----------

## truc

allez, hop, une petite révision, car les utilisateurs (moi  :Very Happy: ) se sont plaint d'avoir l'overlay qui s'affiche même lorsque ça n'est pas nécessaire..:

```
diff -Naru esearch-0.7.1/esearch.py esearch-0.7.1-tmp/esearch.py

--- esearch-0.7.1/esearch.py   2006-05-16 19:12:07.795314560 +0200

+++ esearch-0.7.1-tmp/esearch.py   2006-05-18 23:08:28.363580608 +0200

@@ -64,16 +64,16 @@

     if fatal:

         sys.exit(1)

 

-def searchEbuilds(path, portdir = True, searchdef = ""):

-    global ebuilds, output, defebuild

+def searchEbuilds(path, portdir = True, searchdef = "", repo_num = ""):

+    global ebuilds, output, defebuild, found_in_overlay

     pv = ""

     pkgs = []

     nr = len(ebuilds) + 1

 

     if portdir:

-        rep = darkgreen("Portage")

+        rep = darkgreen("Portage    ")

     else:

-        rep = red("Overlay")

+        rep = red("Overlay "+str(repo_num)+"  ")

 

     if isdir(path):

         list = listdir(path)

@@ -82,18 +82,20 @@

             if file[-7:] == ".ebuild":

                 pv = file[:-7]

                 pkgs.append(pkgsplit(pv))

-                pkgs[-1].append(path + "/" + file)

+                pkgs[-1].append(path + file)

                 if searchdef != "" and pv == searchdef:

                     defebuild = (searchdef, pkgs[-1][3])

+      if not portdir:

+          found_in_overlay = True

         pkgs.sort(pkgcmp)

         for pkg in pkgs:

             rev = ""

             if pkg[2] != "r0":

                 rev = "-" + pkg[2]

             output.append(" " + rep + " [" + bold(str(nr)) + "] " + pkg[0] + "-" + pkg[1] + rev + "\n")

-            ebuilds.append(pkg[3])

+            ebuilds.append(pkg[len(pkg)-1])

             nr += 1

-

+ 

 NORMAL =  1

 COMPACT = 2

 VERBOSE = 3

@@ -105,6 +107,7 @@

 fullname =   False

 pattern =    False

 instonly =   False

+found_in_overlay = False

 

 try:

     opts = getopt(sys.argv[1:], "hSFIcveo:d:n", ["help", "searchdesc", "fullname", "instonly", "compact", "verbose", "ebuild", "own=", "directory=", "nocolor"])

@@ -128,7 +131,7 @@

         from output import blue

         from common import version

         outputm = VERBOSE

-    elif arg in ("-e", "--ebuilds"):

+    elif arg in ("-e", "--ebuild"):

         from os import listdir, getenv, system

         from os.path import isdir

         from portage import settings, pkgcmp, pkgsplit

@@ -313,12 +316,14 @@

                 else:

                     searchdef = ""

 

-                searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef)

+                searchEbuilds("%s/%s/" % (portdir, pkg[1]), True, searchdef, "")

                 if overlay:

-                    searchEbuilds("%s/%s/" % (overlay, pkg[1]), False, searchdef)

+                    repo_num=1

+                    for repo in overlay.split():

+                        searchEbuilds("%s/%s/" % ( repo, pkg[1]), False, searchdef,repo_num)

+                        repo_num += 1

 

                 output.append("\n")

-

             count += 1

 

     regexlist[i][2] = "".join(output)

@@ -338,34 +343,42 @@

     if outputm == NORMAL:

         print ""

 

-if outputm == EBUILDS and count != 0:

-    if count > 1:

-        defebuild = (0, 0)

 

-    if len(ebuilds) == 1:

-        nr = 1

-    else:

-        if defebuild[0] != 0:

-            print bold("Show Ebuild"), " (" + darkgreen(defebuild[0]) + "): ",

+if outputm == EBUILDS:

+    if overlay and found_in_overlay:

+        repo_num=1

+        for repo in overlay.split():

+            print red("Overlay "+str(repo_num)+" : "+repo)

+            repo_num += 1

+    

+    if count != 0:

+        if count > 1:

+            defebuild = (0, 0)

+

+        if len(ebuilds) == 1:

+            nr = 1

         else:

-            print bold("Show Ebuild: "),

+            if defebuild[0] != 0:

+                print bold("\nShow Ebuild"), " (" + darkgreen(defebuild[0]) + "): ",

+            else:

+                print bold("\nShow Ebuild: "),

+            try:

+                nr = sys.stdin.readline()

+            except KeyboardInterrupt:

+                sys.exit(1)

         try:

-            nr = sys.stdin.readline()

-        except KeyboardInterrupt:

-            sys.exit(1)

-    try:

-        editor = getenv("EDITOR")

-        if editor:

-            system(editor + " " + ebuilds[int(nr) - 1])

-        else:

-            print ""

-            error("Please set EDITOR", False)

-    except IndexError:

-        print ""

-        error("No such ebuild", False)

-    except ValueError:

-        if defebuild[0] != 0:

-            system(editor + " " + defebuild[1])

-        else:

+            editor = getenv("EDITOR")

+            if editor:

+                system(editor + " " + ebuilds[int(nr) - 1])

+            else:

+                print ""

+                error("Please set EDITOR", False)

+        except IndexError:

             print ""

-            error("Please enter a valid number", False)

+            error("No such ebuild", False)

+        except ValueError:

+            if defebuild[0] != 0:

+                system(editor + " " + defebuild[1])

+            else:

+                print ""

+                error("Please enter a valid number", False)

```

bref, ça n'interesse vraissemblablement que moi... je n'ai pas non plus de réponse sur bugzilla... loul le looser..  :Razz: 

----------

## Mickael

Salut truc,

 *Quote:*   

> bref, ça n'interesse vraissemblablement que moi... je n'ai pas non plus de réponse sur bugzilla... loul le looser..

 

laisse nous un peu de temps pour digérer et tester mais soit persuadé que ton boulot ne sert pas à  rien.

En tous cas merci.

Cordialement MickTux.

----------

## truc

Finalement, voila ce patch integré, il ne l'était pas jusqu'alors à cause d'un patch, concernant un autre bug non reproductible pour le moment d'ailleurs, qui foutait un peu le bordel

https://bugs.gentoo.org/show_bug.cgi?id=132548

----------

## PabOu

Euh.. et bien, ca doit être un oubli des autres, mais moi je te dis "Bravo et merci pour ta contrib". ;)

----------

## truc

merci, c'est marrant que tu déterres ce topic! c'est en faisant une recherche que tu l'as retrouvé?

Bref, sinon, pour ce que ça interesse, il y a encore quelque chose à modifier pour esearch: il ne prend pas en compte les fichiers (ou repértoire maintenant même) de /etc/portage(je pense tout spécialement à /etc/portage/package.use.

Donc affaire à suivre... je suppose qui faudra importer les fonctions kivontbien de portage, pour pouvoir le faire simplement, mais je ne me suis pas encore profondément penché sur le sujet.

Donc si il vous en venai l'envie, vous êtes les bienvenus  :Smile: 

----------

## PabOu

 *truc wrote:*   

> merci, c'est marrant que tu déterres ce topic! c'est en faisant une recherche que tu l'as retrouvé?

 

Non !

C'est un message que je n'avais pas encore lu.. Alors je l'ai lu et j'y ai répondu.

----------

