1 |
Author: zmedico |
2 |
Date: 2008-07-05 08:52:46 +0000 (Sat, 05 Jul 2008) |
3 |
New Revision: 10939 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Add async support to EbuildBinpkg by making it inherit from EbuildPhase. |
9 |
|
10 |
|
11 |
Modified: main/trunk/pym/_emerge/__init__.py |
12 |
=================================================================== |
13 |
--- main/trunk/pym/_emerge/__init__.py 2008-07-05 08:08:09 UTC (rev 10938) |
14 |
+++ main/trunk/pym/_emerge/__init__.py 2008-07-05 08:52:46 UTC (rev 10939) |
15 |
@@ -1805,8 +1805,13 @@ |
16 |
if retval != os.EX_OK: |
17 |
return retval |
18 |
|
19 |
- build = EbuildBinpkg(pkg=pkg, settings=settings) |
20 |
- retval = build.execute() |
21 |
+ build = EbuildBinpkg(pkg=pkg, |
22 |
+ scheduler=scheduler, settings=settings) |
23 |
+ |
24 |
+ build.start() |
25 |
+ scheduler.schedule(build.reg_id) |
26 |
+ retval = build.wait() |
27 |
+ |
28 |
if retval != os.EX_OK: |
29 |
return retval |
30 |
|
31 |
@@ -2082,19 +2087,15 @@ |
32 |
if returncode == os.EX_OK: |
33 |
returncode = portage._post_src_install_checks(settings) |
34 |
|
35 |
-class EbuildBinpkg(Task): |
36 |
+class EbuildBinpkg(EbuildPhase): |
37 |
""" |
38 |
This assumes that src_install() has successfully completed. |
39 |
""" |
40 |
- __slots__ = ("pkg", "settings") |
41 |
+ __slots__ = ("_binpkg_tmpfile",) |
42 |
|
43 |
- def _get_hash_key(self): |
44 |
- hash_key = getattr(self, "_hash_key", None) |
45 |
- if hash_key is None: |
46 |
- self._hash_key = ("EbuildBinpkg", self.pkg._get_hash_key()) |
47 |
- return self._hash_key |
48 |
- |
49 |
- def execute(self): |
50 |
+ def start(self): |
51 |
+ self.phase = "package" |
52 |
+ self.tree = "porttree" |
53 |
pkg = self.pkg |
54 |
root_config = pkg.root_config |
55 |
portdb = root_config.trees["porttree"].dbapi |
56 |
@@ -2106,30 +2107,24 @@ |
57 |
bintree.prevent_collision(pkg.cpv) |
58 |
binpkg_tmpfile = os.path.join(bintree.pkgdir, |
59 |
pkg.cpv + ".tbz2." + str(os.getpid())) |
60 |
+ self._binpkg_tmpfile = binpkg_tmpfile |
61 |
settings["PORTAGE_BINPKG_TMPFILE"] = binpkg_tmpfile |
62 |
settings.backup_changes("PORTAGE_BINPKG_TMPFILE") |
63 |
|
64 |
- # Earlier phases should already be done, so |
65 |
- # use "noauto" to quietly skip them. |
66 |
- settings.features.append("noauto") |
67 |
- |
68 |
try: |
69 |
- retval = portage.doebuild(ebuild_path, |
70 |
- "package", root_config.root, |
71 |
- settings, debug, mydbapi=portdb, |
72 |
- tree="porttree") |
73 |
+ EbuildPhase.start(self) |
74 |
finally: |
75 |
settings.pop("PORTAGE_BINPKG_TMPFILE", None) |
76 |
- try: |
77 |
- settings.features.remove("noauto") |
78 |
- except ValueError: |
79 |
- pass |
80 |
|
81 |
- if retval == os.EX_OK: |
82 |
+ def _set_returncode(self, wait_retval): |
83 |
+ EbuildPhase._set_returncode(self, wait_retval) |
84 |
+ |
85 |
+ pkg = self.pkg |
86 |
+ bintree = pkg.root_config.trees["bintree"] |
87 |
+ binpkg_tmpfile = self._binpkg_tmpfile |
88 |
+ if self.returncode == os.EX_OK: |
89 |
bintree.inject(pkg.cpv, filename=binpkg_tmpfile) |
90 |
|
91 |
- return retval |
92 |
- |
93 |
class EbuildMerge(SlotObject): |
94 |
|
95 |
__slots__ = ("find_blockers", "logger", "ldpath_mtimes", |
96 |
|
97 |
-- |
98 |
gentoo-commits@l.g.o mailing list |