summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/emerge6
-rw-r--r--pym/portage.py10
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.