diff options
-rwxr-xr-x | bin/ebuild.sh | 19 | ||||
-rw-r--r-- | pym/portage/__init__.py | 28 |
2 files changed, 27 insertions, 20 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh index f66de9aea..d36c81e0c 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -1887,26 +1887,15 @@ ebuild_main() { if ! hasq $EBUILD_SH_ARGS clean depend help info nofetch ; then if hasq distcc $FEATURES ; then - if [ -d /usr/lib/distcc/bin ] ; then - [[ -z ${PATH/*distcc*/} ]] && remove_path_entry distcc - export PATH="/usr/lib/distcc/bin:$PATH" - [[ -n $DISTCC_LOG ]] && addwrite "${DISTCC_LOG%/*}" - elif type -P distcc >/dev/null ; then - ! hasq distcc $CC && export CC="distcc $CC" - ! hasq distcc $CXX && export CXX="distcc $CXX" - fi + [[ -z ${PATH/*distcc*/} ]] && remove_path_entry distcc + export PATH="/usr/lib/distcc/bin:$PATH" + [[ -n $DISTCC_LOG ]] && addwrite "${DISTCC_LOG%/*}" fi if hasq ccache $FEATURES ; then [[ -z ${PATH/*ccache*/} ]] && remove_path_entry ccache - if [ -d /usr/lib/ccache/bin ] ; then - export PATH="/usr/lib/ccache/bin:$PATH" - elif [ -d /usr/bin/ccache ] ; then - export PATH="/usr/bin/ccache:$PATH" - fi - - [[ -z $CCACHE_DIR ]] && export CCACHE_DIR=/var/tmp/ccache + export PATH="/usr/lib/ccache/bin:$PATH" addread "$CCACHE_DIR" addwrite "$CCACHE_DIR" diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 131b8d19d..7630c2ff1 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -5348,10 +5348,12 @@ def _prepare_features_dirs(mysettings): features_dirs = { "ccache":{ + "path_dir": "/usr/lib/ccache/bin", "basedir_var":"CCACHE_DIR", "default_dir":os.path.join(mysettings["PORTAGE_TMPDIR"], "ccache"), "always_recurse":False}, "distcc":{ + "path_dir": "/usr/lib/distcc/bin", "basedir_var":"DISTCC_DIR", "default_dir":os.path.join(mysettings["BUILD_PREFIX"], ".distcc"), "subdirs":("lock", "state"), @@ -5367,11 +5369,16 @@ def _prepare_features_dirs(mysettings): "userpriv" not in restrict for myfeature, kwargs in features_dirs.iteritems(): if myfeature in mysettings.features: - basedir = mysettings[kwargs["basedir_var"]] - if basedir == "": + failure = False + basedir = mysettings.get(kwargs["basedir_var"]) + if basedir is None or not basedir.strip(): basedir = kwargs["default_dir"] mysettings[kwargs["basedir_var"]] = basedir try: + path_dir = kwargs["path_dir"] + if not os.path.isdir(path_dir): + raise portage.exception.DirectoryNotFound(path_dir) + mydirs = [mysettings[kwargs["basedir_var"]]] if "subdirs" in kwargs: for subdir in kwargs["subdirs"]: @@ -5421,14 +5428,25 @@ def _prepare_features_dirs(mysettings): filemode=filemode, filemask=modemask, onerror=onerror): raise portage.exception.OperationNotPermitted( "Failed to apply recursive permissions for the portage group.") + + except portage.exception.DirectoryNotFound, e: + failure = True + writemsg("\n!!! Directory does not exist: '%s'\n" % \ + (e,), noiselevel=-1) + writemsg("!!! Disabled FEATURES='%s'\n" % myfeature, + noiselevel=-1) + except portage.exception.PortageException, e: - mysettings.features.remove(myfeature) - mysettings["FEATURES"] = " ".join(mysettings.features) - writemsg("!!! %s\n" % str(e), noiselevel=-1) + failure = True + writemsg("\n!!! %s\n" % str(e), noiselevel=-1) writemsg("!!! Failed resetting perms on %s='%s'\n" % \ (kwargs["basedir_var"], basedir), noiselevel=-1) writemsg("!!! Disabled FEATURES='%s'\n" % myfeature, noiselevel=-1) + + if failure: + mysettings.features.remove(myfeature) + mysettings['FEATURES'] = ' '.join(sorted(mysettings.features)) time.sleep(5) def _prepare_workdir(mysettings): |