Move checks for /usr/lib/distcc/bin and /usr/lib/ccache/bin to the python
authorZac Medico <zmedico@gentoo.org>
Thu, 26 Mar 2009 21:17:18 +0000 (21:17 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 26 Mar 2009 21:17:18 +0000 (21:17 -0000)
side and don't add distcc to CC and CXX when /usr/lib/distcc/bin doesn't exist
since that won't necessarily work. Thanks to Jeroen Roovers <jer@g.o> for
reporting the issue with adding distcc to CC.

svn path=/main/trunk/; revision=13198

bin/ebuild.sh
pym/portage/__init__.py

index f66de9aea60713b225f3f473fe6afee56e970a21..d36c81e0cbe43df7066fa29d7c401c42f190bf9c 100755 (executable)
@@ -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"
index 131b8d19d068b3494c5bf7efc3568735fa67c2a3..7630c2ff1943822171b01c443515b4c3d98ddb62 100644 (file)
@@ -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):