Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[CONTRIB] esearch et overlay(s)[résolu]
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Wed Apr 26, 2006 11:14 pm    Post subject: [CONTRIB] esearch et overlay(s)[résolu] Reply with quote

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
eix --exact mpd:
* 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)
esearch -e mpd:
<--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
Code:
  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:
esearch -e mpd:
<--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 :
Code:

      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
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Wed Apr 26, 2006 11:15 pm    Post subject: Reply with quote

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-ebuild.patch:
--- 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
Code:
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:
Code:
./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
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Sat Apr 29, 2006 12:16 pm    Post subject: Re: [CONTRIB] esearch et overlay(s) Reply with quote

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 :
Code:

      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?!


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):
Code:
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...
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Thu May 04, 2006 8:37 pm    Post subject: Reply with quote

iopiop, me revoila ;)


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:
Code:
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)


diff -Naru esearch.py esearch.py.new:
--- 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:
Code:
<--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ée


Last edited by truc on Thu May 04, 2006 10:16 pm; edited 1 time in total
Back to top
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3193

PostPosted: Thu May 04, 2006 9:28 pm    Post subject: Reply with quote

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 :P

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 :)
_________________
" Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! "
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Thu May 04, 2006 10:15 pm    Post subject: Reply with quote

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 :
Code:
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.:) )


EDIT 06/05/2006
allé, hop une mini révision:

esearch-overlays.patch:
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..

:)
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Sun May 07, 2006 11:38 am    Post subject: Reply with quote

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:)
132548-multiple-overlay.patch:
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é:

esearch-0.7.1-r3.ebuild:
# 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...)

esearch -e mpd:
 [ 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 :P
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Thu May 18, 2006 9:20 pm    Post subject: Reply with quote

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

132548-multiple-overlay.patch:
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.. :P
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2387
Location: ~Belfort! - France - EU

PostPosted: Thu May 18, 2006 9:35 pm    Post subject: Reply with quote

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.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Sun Jun 11, 2006 9:30 pm    Post subject: Reply with quote

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
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Thu Jul 06, 2006 5:07 pm    Post subject: Reply with quote

Euh.. et bien, ca doit être un oubli des autres, mais moi je te dis "Bravo et merci pour ta contrib". ;)
_________________
Mangez du poulet !
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Fri Jul 07, 2006 12:30 pm    Post subject: Reply with quote

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 :)
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1088
Location: Hélécine - Belgium

PostPosted: Fri Jul 07, 2006 12:38 pm    Post subject: Reply with quote

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.
_________________
Mangez du poulet !
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum