Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10939 - main/trunk/pym/_emerge
Date: Sat, 05 Jul 2008 08:52:52
Message-Id: E1KF3Vf-0000PY-CX@stork.gentoo.org
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