summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-26 21:17:18 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-26 21:17:18 +0000
commit598a46df25a4e0fde644880012ec9b0a28e2bfc0 (patch)
tree1f230a7cf7fccce19b9fb4b4934c01738abbbf05
parent820b027cd89d731b3e1c63c969c05642798e8247 (diff)
downloadportage-598a46df25a4e0fde644880012ec9b0a28e2bfc0.tar.gz
portage-598a46df25a4e0fde644880012ec9b0a28e2bfc0.tar.bz2
portage-598a46df25a4e0fde644880012ec9b0a28e2bfc0.zip
Move checks for /usr/lib/distcc/bin and /usr/lib/ccache/bin 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/trunk/; revision=13198
-rwxr-xr-xbin/ebuild.sh19
-rw-r--r--pym/portage/__init__.py28
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):