commit:     cd44fea4c8c8154fee74bcc37529c0d5c2e9d789
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat May 26 05:46:36 2018 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat May 26 06:07:55 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=cd44fea4

prepare_build_dirs: convert PermissionError to PermissionDenied (bug 656542)

This supresses display of a big PermissionError traceback for
bin/ebuild, like in https://bugs.gentoo.org/656542#c0, and also
suppresses additional messages that may occur when the unhandled
PermissionError prevents bin/ebuild from cleanly closing the asyncio
event loop.

Bug: https://bugs.gentoo.org/656542

 pym/portage/package/ebuild/prepare_build_dirs.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/pym/portage/package/ebuild/prepare_build_dirs.py 
b/pym/portage/package/ebuild/prepare_build_dirs.py
index 21e2aa87c..e53ccd0fb 100644
--- a/pym/portage/package/ebuild/prepare_build_dirs.py
+++ b/pym/portage/package/ebuild/prepare_build_dirs.py
@@ -19,6 +19,7 @@ from portage.localization import _
 from portage.output import colorize
 from portage.util import apply_recursive_permissions, \
        apply_secpass_permissions, ensure_dirs, normalize_path, writemsg
+from portage.util.install_mask import _raise_exc
 from portage.const import EPREFIX
 
 def prepare_build_dirs(myroot=None, settings=None, cleanup=False):
@@ -50,7 +51,9 @@ def prepare_build_dirs(myroot=None, settings=None, 
cleanup=False):
                                        clean_dir, noiselevel=-1)
                                return 1
                        else:
-                               raise
+                               # Wrap with PermissionDenied if appropriate, so 
that callers
+                               # display a short error message without a 
traceback.
+                               _raise_exc(oe)
 
        def makedirs(dir_path):
                try:

Reply via email to