1 |
commit: dbe8e6593b927f67a4213317c4eab1d10bba88bf |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Nov 17 01:25:21 2011 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Nov 17 01:25:21 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=dbe8e659 |
7 |
|
8 |
pkg_pretend: lock before unpacking binpkg xpak |
9 |
|
10 |
This fixes a regression from the previous commit. |
11 |
|
12 |
--- |
13 |
pym/_emerge/Scheduler.py | 37 ++++++++++++++++++++----------------- |
14 |
1 files changed, 20 insertions(+), 17 deletions(-) |
15 |
|
16 |
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py |
17 |
index d5e801b..cb4aab4 100644 |
18 |
--- a/pym/_emerge/Scheduler.py |
19 |
+++ b/pym/_emerge/Scheduler.py |
20 |
@@ -26,7 +26,7 @@ from portage.output import colorize, create_color_func, red |
21 |
bad = create_color_func("BAD") |
22 |
from portage._sets import SETPREFIX |
23 |
from portage._sets.base import InternalPackageSet |
24 |
-from portage.util import writemsg, writemsg_level |
25 |
+from portage.util import ensure_dirs, writemsg, writemsg_level |
26 |
from portage.package.ebuild.digestcheck import digestcheck |
27 |
from portage.package.ebuild.digestgen import digestgen |
28 |
from portage.package.ebuild.doebuild import _check_temp_dir |
29 |
@@ -920,9 +920,26 @@ class Scheduler(PollScheduler): |
30 |
if rval != os.EX_OK: |
31 |
return rval |
32 |
|
33 |
+ build_dir_path = os.path.join( |
34 |
+ os.path.realpath(settings["PORTAGE_TMPDIR"]), |
35 |
+ "portage", x.category, x.pf) |
36 |
+ existing_buildir = os.path.isdir(build_dir_path) |
37 |
build_dir = None |
38 |
|
39 |
try: |
40 |
+ settings["PORTAGE_BUILDDIR"] = build_dir_path |
41 |
+ build_dir = EbuildBuildDir(scheduler=sched_iface, |
42 |
+ settings=settings) |
43 |
+ build_dir.lock() |
44 |
+ |
45 |
+ # Clean up the existing build dir, in case pkg_pretend |
46 |
+ # checks for available space (bug #390711). |
47 |
+ if existing_buildir: |
48 |
+ clean_phase = EbuildPhase(background=False, |
49 |
+ phase='clean', scheduler=sched_iface, settings=settings) |
50 |
+ clean_phase.start() |
51 |
+ clean_phase.wait() |
52 |
+ |
53 |
if x.built: |
54 |
tree = "bintree" |
55 |
bintree = root_config.trees["bintree"].dbapi.bintree |
56 |
@@ -949,9 +966,8 @@ class Scheduler(PollScheduler): |
57 |
if fetched: |
58 |
bintree.inject(x.cpv, filename=fetched) |
59 |
tbz2_file = bintree.getname(x.cpv) |
60 |
- infloc = os.path.join(settings["PORTAGE_TMPDIR"], |
61 |
- x.category, x.pf, "build-info") |
62 |
- os.makedirs(infloc) |
63 |
+ infloc = os.path.join(build_dir_path, "build-info") |
64 |
+ ensure_dirs(infloc) |
65 |
portage.xpak.tbz2(tbz2_file).unpackinfo(infloc) |
66 |
ebuild_path = os.path.join(infloc, x.pf + ".ebuild") |
67 |
settings.configdict["pkg"]["EMERGE_FROM"] = "binary" |
68 |
@@ -973,19 +989,6 @@ class Scheduler(PollScheduler): |
69 |
"pretend", settings=settings, |
70 |
db=self.trees[settings['EROOT']][tree].dbapi) |
71 |
|
72 |
- existing_buildir = os.path.isdir(settings["PORTAGE_BUILDDIR"]) |
73 |
- build_dir = EbuildBuildDir(scheduler=sched_iface, |
74 |
- settings=settings) |
75 |
- build_dir.lock() |
76 |
- |
77 |
- # Clean up the existing build dir, in case pkg_pretend |
78 |
- # checks for available space (bug #390711). |
79 |
- if existing_buildir: |
80 |
- clean_phase = EbuildPhase(background=False, |
81 |
- phase='clean', scheduler=sched_iface, settings=settings) |
82 |
- clean_phase.start() |
83 |
- clean_phase.wait() |
84 |
- |
85 |
prepare_build_dirs(root_config.root, settings, cleanup=0) |
86 |
|
87 |
vardb = root_config.trees['vartree'].dbapi |