From 1d7c35a506b470e4d1fb2ca3e82ab1b824237384 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 12 Apr 2008 09:23:06 +0000 Subject: Make binarytree.prevent_collision() adjust permissions on directories and raise a PermissionDenied error if the required directories is not writable. (trunk r9850) svn path=/main/branches/2.1.2/; revision=9851 --- bin/emerge | 6 ------ pym/portage.py | 10 ++++++++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/bin/emerge b/bin/emerge index 8f12145a7..3420abc55 100755 --- a/bin/emerge +++ b/bin/emerge @@ -4960,12 +4960,6 @@ class MergeTask(object): bintree = self.trees[myroot]["bintree"] if bintree.populated: bintree.inject(pkg_key) - else: - # Copy group permissions for new directories that - # may have been created. - for path in ("All", portage.catsplit(pkg.cpv)[0]): - bintree._ensure_dir( - os.path.join(bintree.pkgdir, path)) if "--buildpkgonly" not in self.myopts: msg = " === (%s of %s) Merging (%s::%s)" % \ (mergecount, len(mymergelist), pkg_key, y) diff --git a/pym/portage.py b/pym/portage.py index 5f829ac0d..aa5234ca7 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -7901,6 +7901,16 @@ class binarytree(object): use for a given cpv. If a collision will occur with an existing package from another category, the existing package will be bumped to ${PKGDIR}/${CATEGORY}/${PF}.tbz2 so that both can coexist.""" + + # Copy group permissions for new directories that + # may have been created. + for path in ("All", catsplit(cpv)[0]): + path = os.path.join(self.pkgdir, path) + self._ensure_dir(path) + if not os.access(path, os.W_OK): + raise portage_exception.PermissionDenied( + "access('%s', W_OK)" % path) + if not self.populated: # Try to avoid the population routine when possible, so that # FEATURES=buildpkg doesn't always force population. -- cgit v1.2.3-1-g7c22