Merged from trunk -r13193:13198
authorFabian Groffen <grobian@gentoo.org>
Thu, 26 Mar 2009 21:27:57 +0000 (21:27 -0000)
committerFabian Groffen <grobian@gentoo.org>
Thu, 26 Mar 2009 21:27:57 +0000 (21:27 -0000)
   | 13198   | Move checks for /usr/lib/distcc/bin and /usr/lib/ccache/bin  |
   | zmedico | to the python 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/branches/prefix/; revision=13200

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

index b558ff63277435388f0e407972f5c99995e3aad3..281d4a4c77226bb9ba6425e491fd3379716eec4a 100755 (executable)
@@ -1902,26 +1902,15 @@ ebuild_main() {
        if ! hasq $EBUILD_SH_ARGS clean depend help info nofetch ; then
 
                if hasq distcc $FEATURES ; then
-                       if [ -d "${EPREFIX}"/usr/lib/distcc/bin ] ; then
-                               [[ -z ${PATH/*distcc*/} ]] && remove_path_entry distcc
-                               export PATH="${EPREFIX}/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="${EPREFIX}/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 "${EPREFIX}"/usr/lib/ccache/bin ] ; then
-                               export PATH="${EPREFIX}/usr/lib/ccache/bin:$PATH"
-                       elif [ -d "${EPREFIX}"/usr/bin/ccache ] ; then
-                               export PATH="${EPREFIX}/usr/bin/ccache:$PATH"
-                       fi
-
-                       [[ -z $CCACHE_DIR ]] && export CCACHE_DIR="${EPREFIX}"/var/tmp/ccache
+                       export PATH="${EPREFIX}/usr/lib/ccache/bin:$PATH"
 
                        addread "$CCACHE_DIR"
                        addwrite "$CCACHE_DIR"
index 66675ff5dd21e22d0347f255c9dd66eecb2521b0..bc512cebc75923ee38d0d590eea3c91dc51e78ac 100644 (file)
@@ -5398,10 +5398,12 @@ def _prepare_features_dirs(mysettings):
 
        features_dirs = {
                "ccache":{
+                       "path_dir": EPREFIX+"/usr/lib/ccache/bin",
                        "basedir_var":"CCACHE_DIR",
                        "default_dir":os.path.join(mysettings["PORTAGE_TMPDIR"], "ccache"),
                        "always_recurse":False},
                "distcc":{
+                       "path_dir": EPREFIX+"/usr/lib/distcc/bin",
                        "basedir_var":"DISTCC_DIR",
                        "default_dir":os.path.join(mysettings["BUILD_PREFIX"], ".distcc"),
                        "subdirs":("lock", "state"),
@@ -5417,11 +5419,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"]:
@@ -5471,14 +5478,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):