[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gentoo-dev
Subject:    [gentoo-dev] [PATCH] USE aware emerge
From:       Martin Svenningsson <e01msv () efd ! lth ! se>
Date:       2002-12-28 20:03:01
[Download RAW message or body]

Well, semi use aware anyway.

What do you think?


$ ./emerge -p mozilla

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R  ] net-www/mozilla-1.2.1-r4


The following USE flags for this action are:

[enabled] java crypt gtk2 ssl gnome
[disabled] ipv6
[unset] ldap mozsvg mozcalendar mozaccess mozinterfaceinfo mozp3p
mozxmlterm moznoirc moznomail moznocompose moznoxft


------


$ ./emerge -s 'mplayer$'
Searching...
[ Results for search key : mplayer$ ]
[ Applications found : 1 ]

*  media-video/mplayer
      Latest version available: 0.90_rc2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 3,728 kB
      Homepage:    http://www.mplayerhq.hu/
      Description: Media Player for Linux
      Uses:        dga oss jpeg 3dfx sse matrox sdl X svga ggi oggvorbis
3dnow aalib gnome xv opengl truetype dvd gtk gif esd fbcon encode alsa
directfb arts


Where the use variables is color coded:
red: not specified in USE  [unset]
purple: specified not to be used (ie -kde) [disabled]
green: specified and used  [enabled]


Patched against portage-2.0.46-r4.

// Martin

["emerge_semi_use_aware.patch" (TEXT/PLAIN)]

--- emerge.old	2002-12-24 21:14:01.000000000 +0100
+++ emerge	2002-12-28 20:39:27.000000000 +0100
@@ -286,7 +286,7 @@
 					catpack=portage.pkgsplit(match)[0]
 				if full_package:
 					try:
-						desc, homepage = portage.portdb.aux_get(full_package,["DESCRIPTION","HOMEPAGE"])
+						desc, homepage, uses = portage.portdb.aux_get(full_package,["DESCRIPTION","HOMEPAGE","IUSE"])
 					except KeyError:
 						print "emerge: search: aux_get() failed, skipping"
 						continue
@@ -295,6 +295,20 @@
 					else:
 						print green("*")+"  "+white(match)
 					myversion = self.getVersion(full_package, search.VERSION_RELEASE)
+					
+
+					# red: not specified in USE
+					# purple: specified not to be used (ie -kde)
+					# green: specified and used
+
+					myuse = ""
+					for x in string.split(uses, " "):
+						if "-"+x in portage.settings["USE"].split():
+								myuse = myuse + purple(x) + " "
+						elif not x in portage.settings["USE"].split():
+ 							myuse = myuse + red(x) + " "
+						else:
+							myuse = myuse + green(x) + " "
 
 					mysum = [0,0]
 					mycat = match.split("/")[0]
@@ -323,6 +337,7 @@
 					print "     ", darkgreen("Size of downloaded files:"),mysum[0]
 					print "     ", darkgreen("Homepage:   "),homepage
 					print "     ", darkgreen("Description:"),desc
+					print "     ", darkgreen("Uses:       "),myuse
 					print
 		
 	#
@@ -1537,6 +1552,34 @@
 		print "\b\b ...done!"
 	if ("--pretend" in myopts) and not ("--fetchonly" in myopts):
 		mydepgraph.display(mydepgraph.altlist())
+
+		
+		enabled = ""
+		disabled = ""
+		unset = ""
+
+		for x in mydepgraph.altlist():
+			if x[2]:
+				try:
+						uses = portage.portdb.aux_get(x[2],["IUSE"])
+				except KeyError:
+						print "emerge: search: aux_get() failed, skipping"
+						continue
+
+				for y in string.split(uses[0], " "):
+					if "-"+y in portage.settings["USE"].split() and string.find(disabled, y) < 0:
+						disabled = disabled + purple(y) + " "
+					elif not y in portage.settings["USE"].split() and string.find(unset, y) < 0:
+ 						unset = unset + red(y) + " "
+					elif string.find(enabled, y) < 0:
+						enabled = enabled + green(y) + " "
+
+		print darkgreen("\n\nThe following USE flags for this action are:\n")
+
+		print "[enabled]", enabled 
+		print "[disabled]", disabled
+		print "[unset]", unset
+
 	else:
 		mydepgraph.merge(mydepgraph.altlist())
 		if portage.settings["AUTOCLEAN"] and "yes"==portage.settings["AUTOCLEAN"]:


--
gentoo-dev@gentoo.org mailing list

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic