summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-07-30 07:13:09 +0000
committerZac Medico <zmedico@gentoo.org>2007-07-30 07:13:09 +0000
commitab44fb7115ae2fe87630b494101f2f823e67ddda (patch)
tree5f7b0b670d8932ae913c01ec7a85172929b4729a
parent871238c4ef4591be5b3ef3e3f2ee71941808ab47 (diff)
downloadportage-ab44fb7115ae2fe87630b494101f2f823e67ddda.tar.gz
portage-ab44fb7115ae2fe87630b494101f2f823e67ddda.tar.bz2
portage-ab44fb7115ae2fe87630b494101f2f823e67ddda.zip
For bug #182964, replace os.rename() with portage.movefile() in cases where the parent directory might change. (branches/2.1.2 r6984)
svn path=/main/branches/2.1.2.9/; revision=7513
-rw-r--r--pym/portage.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/pym/portage.py b/pym/portage.py
index 369e0bb4e..8fb456b7a 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -3911,6 +3911,12 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
expandcache={}
+def _movefile(src, dest, **kwargs):
+ """Calls movefile and raises a PortageException if an error occurs."""
+ if movefile(src, dest, **kwargs) is None:
+ raise portage_exception.PortageException(
+ "mv '%s' '%s'" % (src, dest))
+
def movefile(src,dest,newmtime=None,sstat=None,mysettings=None):
"""moves a file from src to dest, preserving all permissions and attributes; mtime will
be preserved even when moving across filesystems. Returns true on success and false on
@@ -5228,7 +5234,7 @@ class vardbapi(dbapi):
if os.path.exists(newpath):
#dest already exists; keep this puppy where it is.
continue
- os.rename(origpath, newpath)
+ _movefile(origpath, newpath, mysettings=self.settings)
# We need to rename the ebuild now.
old_pf = catsplit(mycpv)[1]
@@ -6498,7 +6504,7 @@ class binarytree(object):
if e.errno != errno.EEXIST:
raise
del e
- os.rename(tbz2path, new_path)
+ _movefile(tbz2path, new_path, mysettings=self.settings)
self._remove_symlink(mycpv)
if new_path.split(os.path.sep)[-2] == "All":
self._create_symlink(mynewcpv)
@@ -6656,7 +6662,8 @@ class binarytree(object):
if e.errno != errno.EEXIST:
raise
del e
- os.rename(src_path, os.path.join(self.pkgdir, "All", myfile))
+ dest_path = os.path.join(self.pkgdir, "All", myfile)
+ _movefile(src_path, dest_path, mysettings=self.settings)
self._create_symlink(cpv)
self._pkg_paths[cpv] = os.path.join("All", myfile)
@@ -6674,7 +6681,8 @@ class binarytree(object):
if e.errno != errno.EEXIST:
raise
del e
- os.rename(os.path.join(self.pkgdir, "All", myfile), dest_path)
+ src_path = os.path.join(self.pkgdir, "All", myfile)
+ _movefile(src_path, dest_path, mysettings=self.settings)
self._pkg_paths[cpv] = mypath
def populate(self, getbinpkgs=0,getbinpkgsonly=0):
@@ -7657,7 +7665,7 @@ class dblink:
# We hold both directory locks.
self.dbdir = self.dbpkgdir
self.delete()
- movefile(self.dbtmpdir, self.dbpkgdir, mysettings=self.settings)
+ _movefile(self.dbtmpdir, self.dbpkgdir, mysettings=self.settings)
contents = self.getcontents()
#write out our collection of md5sums