Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10938 - in main/trunk/pym: _emerge portage
Date: Sat, 05 Jul 2008 08:08:15
Message-Id: E1KF2oU-0008Lb-5h@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-07-05 08:08:09 +0000 (Sat, 05 Jul 2008)
3 New Revision: 10938
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 main/trunk/pym/portage/__init__.py
8 Log:
9 Use the EbuildPhase class to execute the "clean" phase asynchronously.
10
11
12 Modified: main/trunk/pym/_emerge/__init__.py
13 ===================================================================
14 --- main/trunk/pym/_emerge/__init__.py 2008-07-05 07:36:58 UTC (rev 10937)
15 +++ main/trunk/pym/_emerge/__init__.py 2008-07-05 08:08:09 UTC (rev 10938)
16 @@ -1863,6 +1863,8 @@
17 _phases = ("setup", "unpack", "compile", "test", "install")
18
19 def execute(self):
20 + pkg = self.pkg
21 + scheduler = self.scheduler
22 root_config = self.pkg.root_config
23 tree = "porttree"
24 portdb = root_config.trees[tree].dbapi
25 @@ -1871,9 +1873,15 @@
26 debug = settings.get("PORTAGE_DEBUG") == "1"
27 cleanup = 1
28
29 - retval = portage.doebuild(ebuild_path, "clean",
30 - root_config.root, settings, debug, cleanup=cleanup,
31 - mydbapi=portdb, tree="porttree")
32 + phase = "clean"
33 + ebuild_phase = EbuildPhase(
34 + pkg=pkg, phase=phase, scheduler=scheduler,
35 + settings=settings, tree=tree)
36 +
37 + ebuild_phase.start()
38 + scheduler.schedule(ebuild_phase.reg_id)
39 + retval = ebuild_phase.wait()
40 +
41 if retval != os.EX_OK:
42 return retval
43
44 @@ -1925,8 +1933,16 @@
45 logfile = settings.get("PORTAGE_LOG_FILE")
46 master_fd = None
47 slave_fd = None
48 - fd_pipes = self.fd_pipes.copy()
49 + fd_pipes = None
50 + if self.fd_pipes is not None:
51 + fd_pipes = self.fd_pipes.copy()
52 + else:
53 + fd_pipes = {}
54
55 + fd_pipes.setdefault(0, sys.stdin.fileno())
56 + fd_pipes.setdefault(1, sys.stdout.fileno())
57 + fd_pipes.setdefault(2, sys.stderr.fileno())
58 +
59 # flush any pending output
60 for fd in fd_pipes.itervalues():
61 if fd == sys.stdout.fileno():
62 @@ -1984,9 +2000,6 @@
63 master_fd, slave_fd = os.pipe()
64 fcntl.fcntl(master_fd, fcntl.F_SETFL,
65 fcntl.fcntl(master_fd, fcntl.F_GETFL) | os.O_NONBLOCK)
66 - fd_pipes.setdefault(0, sys.stdin.fileno())
67 - fd_pipes.setdefault(1, sys.stdout.fileno())
68 - fd_pipes.setdefault(2, sys.stderr.fileno())
69 fd_pipes[self._dummy_pipe_fd] = slave_fd
70
71 retval = portage.doebuild(ebuild_path, self.phase,
72 @@ -2051,14 +2064,15 @@
73
74 def _set_returncode(self, wait_retval):
75 SubProcess._set_returncode(self, wait_retval)
76 - msg = portage._doebuild_exit_status_check(
77 - self.phase, self.settings)
78 - if msg:
79 - self.returncode = 1
80 - from textwrap import wrap
81 - from portage.elog.messages import eerror
82 - for l in wrap(msg, 72):
83 - eerror(l, phase=self.phase, key=self.pkg.cpv)
84 + if self.phase != "clean":
85 + msg = portage._doebuild_exit_status_check(
86 + self.phase, self.settings)
87 + if msg:
88 + self.returncode = 1
89 + from textwrap import wrap
90 + from portage.elog.messages import eerror
91 + for l in wrap(msg, 72):
92 + eerror(l, phase=self.phase, key=self.pkg.cpv)
93
94 returncode = self.returncode
95 settings = self.settings
96 @@ -2286,9 +2300,15 @@
97 cleanup = 1
98 mydbapi = root_config.trees[tree].dbapi
99
100 - retval = portage.doebuild(ebuild_path, "clean",
101 - root_config.root, settings, debug, cleanup=cleanup,
102 - mydbapi=mydbapi, tree=tree)
103 + phase = "clean"
104 + ebuild_phase = EbuildPhase(fd_pipes=fd_pipes,
105 + pkg=pkg, phase=phase, scheduler=scheduler,
106 + settings=settings, tree=tree)
107 +
108 + ebuild_phase.start()
109 + scheduler.schedule(ebuild_phase.reg_id)
110 + retval = ebuild_phase.wait()
111 +
112 if retval != os.EX_OK:
113 return retval
114
115
116 Modified: main/trunk/pym/portage/__init__.py
117 ===================================================================
118 --- main/trunk/pym/portage/__init__.py 2008-07-05 07:36:58 UTC (rev 10937)
119 +++ main/trunk/pym/portage/__init__.py 2008-07-05 08:08:09 UTC (rev 10938)
120 @@ -5003,7 +5003,8 @@
121
122 if mydo in clean_phases:
123 retval = spawn(_shell_quote(ebuild_sh_binary) + " clean",
124 - mysettings, debug=debug, free=1, logfile=None)
125 + mysettings, debug=debug, fd_pipes=fd_pipes, free=1,
126 + logfile=None, returnpid=returnpid)
127 return retval
128
129 # get possible slot information from the deps file
130
131 --
132 gentoo-commits@l.g.o mailing list