frogdev site francophone sur Gentoo
Vous êtes ici : Patch emerge
Dernière modification : September 22 2007 00:08:20.

Depuis quelques temps j'en avais marre de modifier mes fichiers package.keywords et package.unmask, j'ai donc modifier emerge pour qu'il modifie ces fichiers à ma place et qu'il démasque les ebuilds nécessaires lorsque je veux démasquer un paquet qui a beaucoup de dépendances ou lors des mises à jour. (Je suis en x86 avec des paquets ~x86 et à chaque fois je dois modifier ces fichiers)

Attention l'indentation est importante!!!
J'ai donc créé ce patch :
--- a/bin/emerge 2007-01-27 21:46:58.000000000 +0100
+++ b/bin/emerge 2007-01-27 22:37:40.000000000 +0100
@@ -32,7 +32,7 @@
del os.environ["PORTAGE_LEGACY_GLOBALS"]
from portage import digraph

-import emergehelp, xpak, commands, errno, re, socket, time, types
+import emergehelp, xpak, commands, errno, re, socket, time, types, string
import output
from output import blue, bold, colorize, darkblue, darkgreen, darkred, green, \
 havecolor, nc_len, nocolor, red, teal, turquoise, white, xtermTitle, \
@@ -1951,19 +1951,59 @@
       print "\n!!! "+red("All ebuilds that could satisfy ")+green(xinfo)+red(" have been masked.")
       print "!!! One of the following masked packages is required to complete your request:"
       oldcomment = ""
+       last_packet=""
+       packageMask="0"
+       packageMissing="0"
       for p in alleb:
        mreasons = portage.getmaskingstatus(p,
         settings=pkgsettings, portdb=portdb)
        print "- "+p+" (masked by: "+", ".join(mreasons)+")"
-        comment, filename = portage.getmaskingreason(p,
-         settings=pkgsettings, portdb=portdb, return_location=True)
+        #hack
+        result=str(mreasons)
+        if result.find("~")!= -1:
+         last_packet=p
+        if result.find(".mask")!= -1:
+         last_packet=p
+         packageMask="1"
+        if result.find("missing")!= -1:
+         last_packet=p
+         packageMissing="1"        
+        comment = portage.getmaskingreason(p,
+         settings=pkgsettings, portdb=portdb)
        if comment and comment != oldcomment:
-         print filename+":"
         print comment
         oldcomment = comment
       print
       print "For more information, see MASKED PACKAGES section in the emerge man page or "
       print "refer to the Gentoo Handbook."
+       if last_packet !="":
+        #on peux demasquer un paquet
+        bo_demasque="0"
+        print "Demasquer le paquet "+last_packet+" ? "
+        Reponse=raw_input('(Oui/Non)')
+        if string.upper(Reponse) == "OUI":
+         bo_demasque="1"
+        if bo_demasque=="1":
+         #modification package.keywords
+         print "Mise a jour package.keywords"
+         fichero = open("/etc/portage/package.keywords", 'a')
+         packet = "="+last_packet+" ~x86 \n"
+         fichero.write("#Ajout par hack emerge\n")
+         fichero.write(packet)
+         if packageMissing=="1":
+          packet = "="+last_packet+" ** \n"
+          fichero.write(packet)
+         fichero.flush()
+         fichero.close()
+         if packageMask=="1":          #modification package.keywords
+          print "Mise a jour package.unmask"
+          fichero = open("/etc/portage/package.unmask", 'a')
+          packet = "="+last_packet+"\n"
+          fichero.write("#Ajout par hack emerge\n")
+          fichero.write(packet)
+          fichero.flush()
+          fichero.close()
+         emerge_main()
      else:
       print "\n!!! "+red("There are no packages available to satisfy: ")+green(xinfo)
       print "!!! Either add a suitable binary package or compile from an ebuild."

Pour installer ce patch :
# cd /tmp
# wget http://www.frogdev.info/emerge/last_emerge.diff
# cd /usr/
(Faire une sauvegarde)
# cp /usr/bin/emerge /usr/bin/emerge.sauve
(mise en place du patch)
# patch -p1 < /tmp/last_emerge.diff


Voir les commentairesAjouter un commentaire

Imprimer cette page Imprimer cette page

Liste de diffusion

Valider 


Espace téléchargement

Téléchargement
Livres (pdf)
Howto



Promouvoir et soutenir le logiciel libre
Go Frugalware, Go
Get Firefox

Gentoo

Logo Apache

Logo Mysql

Logo PHP



nobrevet

Read and comment at the BadVista.org blog

L'Association Francophone des Utilisateurs de Linux et des logiciels libres (AFUL)

Logo greenpeace


grenouille

Me contacter / Mes expériences GNU/Linux

- [ Basé sur Itseasy | Thème : Frogdev ] -
Les informations ne sont données qu'à titre indicatif.
© frogdev site francophone sur Gentoo, Licence FDL 2008

[ Page générée en 0.09797 secondes | Compression gZip active ]
Poids XHTML : 19.25 ko (21.55 ko non compressé) - CSS : 5.92 ko
Eléments chargés : 2.75 ko