summaryrefslogtreecommitdiffstats
path: root/pym/emerge/__init__.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-05-23 04:47:36 +0000
committerZac Medico <zmedico@gentoo.org>2007-05-23 04:47:36 +0000
commit1f8e2fe1729c68bbe7b173378ce7c9d7bb14f582 (patch)
treeddc8dd6109cb492593a88465a8a4ce826037a64e /pym/emerge/__init__.py
parent9ec3cb8abadd77bdb8c645c92852e681e46a3196 (diff)
downloadportage-1f8e2fe1729c68bbe7b173378ce7c9d7bb14f582.tar.gz
portage-1f8e2fe1729c68bbe7b173378ce7c9d7bb14f582.tar.bz2
portage-1f8e2fe1729c68bbe7b173378ce7c9d7bb14f582.zip
Pass a temporary file name to the package phase in the environment variable PORTAGE_BINPKG_TMPFILE and move the temporary file into place inside binarytree.inject(). This allows binarytree.inject() to perform the move while holding a lock.
svn path=/main/trunk/; revision=6591
Diffstat (limited to 'pym/emerge/__init__.py')
-rw-r--r--pym/emerge/__init__.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py
index 8a8bbfbe8..2cff1ed41 100644
--- a/pym/emerge/__init__.py
+++ b/pym/emerge/__init__.py
@@ -3157,13 +3157,18 @@ class MergeTask(object):
(mergecount, len(mymergelist), pkg_key)
emergelog(xterm_titles, msg, short_msg=short_msg)
self.trees[myroot]["bintree"].prevent_collision(pkg_key)
+ binpkg_tmpfile = os.path.join(pkgsettings["PKGDIR"],
+ pkg_key + ".tbz2." + str(os.getpid()))
+ pkgsettings["PORTAGE_BINPKG_TMPFILE"] = binpkg_tmpfile
+ pkgsettings.backup_changes("PORTAGE_BINPKG_TMPFILE")
retval = portage.doebuild(y, "package", myroot,
pkgsettings, self.edebug, mydbapi=portdb,
tree="porttree")
+ del pkgsettings["PORTAGE_BINPKG_TMPFILE"]
if retval != os.EX_OK:
return retval
bintree = self.trees[myroot]["bintree"]
- bintree.inject(pkg_key)
+ bintree.inject(pkg_key, filename=binpkg_tmpfile)
if "--buildpkgonly" not in self.myopts:
msg = " === (%s of %s) Merging (%s::%s)" % \
(mergecount, len(mymergelist), pkg_key, y)