Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/
Date: Thu, 17 Nov 2011 01:25:44
Message-Id: dbe8e6593b927f67a4213317c4eab1d10bba88bf.zmedico@gentoo
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