On Fri, 13 Oct 2006 20:00:05 -0400
Alec Warner <[EMAIL PROTECTED]> wrote:

> As for the GLEP itself; I'd like to see some patches, particularly
> for the resolver to show the restriction up front.  Also a patch to
> the ebuild.5 manpage for RESTRICT=interactive prior to seeing the
> glep get approved.

Attached patch added as reference implementation.

Marius

-- 
Public Key at http://www.genone.de/info/gpg-key.pub

In the beginning, there was nothing. And God said, 'Let there be
Light.' And there was still nothing, but you could see a bit better.
--- bin/emerge.org      2006-10-14 03:24:00.000000000 +0200
+++ bin/emerge  2006-10-14 04:13:34.000000000 +0200
@@ -1579,10 +1579,10 @@
                                elif "ebuild" == pkg_type:
                                        self.useFlags[myroot][pkg_key] = 
pkgsettings["USE"].split()
 
-                       fetch=" "
+                       restrict=" "
 
                        if x[0]=="blocks":
-                               addl=""+red("B")+"  "+fetch+"  "
+                               addl=""+red("B")+"  "+restrict+"  "
                                resolved = 
self.trees[x[1]]["vartree"].resolve_key(x[2])
                                print "["+x[0]+" "+addl+"]",red(resolved),
                                block_parents = self.digraph.parent_nodes(" 
".join(x))
@@ -1595,20 +1595,26 @@
                                        print bad("(is blocking %s)") % 
block_parents
                        else:
                                mydbapi = 
self.trees[myroot][self.pkg_tree_map[pkg_type]].dbapi
-                               if x[3] != "nomerge" and \
-                                       "fetch" in portdb.aux_get(
-                                       x[2], ["RESTRICT"])[0].split():
-                                       fetch = red("F")
-                                       if portdb.fetch_check(
-                                               pkg_key, 
self.useFlags[myroot][pkg_key]):
-                                               fetch = green("f")
+                               restrict_list = portdb.aux_get(x[2], 
["RESTRICT"])[0].split()
+                               if x[3] != "nomerge":
+                                       if "fetch" in restrict_list:
+                                               restrict = "F"
+                                               if "interactive" in 
restrict_list:
+                                                       restrict = "P"
+                                               if portdb.fetch_check(
+                                                       pkg_key, 
self.useFlags[myroot][pkg_key]):
+                                                       restrict = 
green(restrict.lower())
+                                               else:
+                                                       restrict = red(restrict)
+                                       elif "interactive" in restrict_list:
+                                               restrict = red("i")
 
                                #we need to use "--emptrytree" testing here 
rather than "empty" param testing because "empty"
                                #param is used for -u, where you still *do* 
want to see when something is being upgraded.
                                myoldbest=""
                                if "--emptytree" not in self.myopts and \
                                        
self.trees[x[1]]["vartree"].exists_specific(x[2]):
-                                       addl="  "+yellow("R")+fetch+"  "
+                                       addl="  "+yellow("R")+restrict+"  "
                                elif "--emptytree" not in self.myopts and \
                                        
self.trees[x[1]]["vartree"].exists_specific_cat(x[2]):
                                        mynewslot = mydbapi.aux_get(pkg_key, 
["SLOT"])[0]
@@ -1618,7 +1624,7 @@
                                                if mynewslot == 
vartree.getslot(inst_pkg)]
                                        if myinslotlist:
                                                
myoldbest=portage.best(myinslotlist)
-                                               addl="   "+fetch
+                                               addl="   "+restrict
                                                if 
portage.pkgcmp(portage.pkgsplit(x[2]), portage.pkgsplit(myoldbest)) < 0:
                                                        # Downgrade in slot
                                                        
addl+=turquoise("U")+blue("D")
@@ -1627,7 +1633,7 @@
                                                        addl+=turquoise("U")+" "
                                        else:
                                                # New slot, mark it new.
-                                               addl=" "+green("NS")+fetch+"  "
+                                               addl=" "+green("NS")+restrict+" 
 "
 
                                        if "--changelog" in self.myopts:
                                                
changelogs.extend(self.calc_changelog(
@@ -1635,7 +1641,7 @@
                                                        
self.trees[x[1]]["vartree"].dep_bestmatch(
                                                        
'/'.join(portage.catpkgsplit(x[2])[:2])), x[2]))
                                else:
-                                       addl=" "+green("N")+" "+fetch+"  "
+                                       addl=" "+green("N")+" "+restrict+"  "
 
                                verboseadd=""
                                
--- man/ebuild.5.org    2006-08-20 14:27:20.434923000 +0200
+++ man/ebuild.5        2006-10-14 04:18:10.000000000 +0200
@@ -335,6 +335,10 @@
 .I primaryuri
 fetch from URL's in \fBSRC_URI\fR before \fBGENTOO_MIRRORS\fR.
 .TP
+.I interactive
+indicate that this ebuild typically requires user interaction (like inserting 
+physical media).
+.TP
 .I strip
 final binaries/libraries will not be stripped of debug symbols.
 .TP
--- man/emerge.1.org    2006-07-15 03:38:27.072219750 +0200
+++ man/emerge.1        2006-10-14 04:27:03.000000000 +0200
@@ -410,6 +430,19 @@
 .B [ebuild    f  ] media\-video/realplayer\-8\-r6
 The realplayer package's files are already downloaded.
 .TP
+.B [ebuild    i  ] games\-fps/unreal\-226
+Unreal requires user interaction during the build process.
+.TP
+.B [ebuild    P  ] games\-strategy/freecraft\-1.18\-r3
+Freecraft requires user interaction during the build process and you have to 
+fetch its sources manually (this is the combination of the first realplayer 
+example and the Unreal example above).
+.TP
+.B [ebuild    p  ] games\-strategy/freecraft\-1.18\-r3
+Freecraft requires user interaction during the build process and has its source
+files already downloaded (this is the combination of the second realplayer 
+example and the Unreal example above).
+.TP
 .B [ebuild     U ] net\-fs/samba\-2.2.8_pre1 [2.2.7a]
 Samba 2.2.7a has already been emerged and can be Updated to version 
 2.2.8_pre1.

Reply via email to