summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGary Oberbrunner <garyo@oberbrunner.com>2009-05-12 11:41:34 (GMT)
committerGary Oberbrunner <garyo@oberbrunner.com>2009-05-12 11:41:34 (GMT)
commit261e9d7df97374d3e43543e7313f8327f542a1fe (patch)
tree558fed9b5faf20e9111ddf4b6475acc876877c1f
parent866e405b3f17ade520ab8a13e5a09c342cb26015 (diff)
downloadSCons-261e9d7df97374d3e43543e7313f8327f542a1fe.zip
SCons-261e9d7df97374d3e43543e7313f8327f542a1fe.tar.gz
SCons-261e9d7df97374d3e43543e7313f8327f542a1fe.tar.bz2
Fix issue 2421 by not trying to use os.chown on Windows.
-rw-r--r--src/engine/SCons/dblite.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/engine/SCons/dblite.py b/src/engine/SCons/dblite.py
index e993219..bcb2aa0 100644
--- a/src/engine/SCons/dblite.py
+++ b/src/engine/SCons/dblite.py
@@ -45,7 +45,10 @@ class dblite:
_open = __builtin__.open
_cPickle_dump = cPickle.dump
_os_chmod = os.chmod
- _os_chown = os.chown
+ try:
+ _os_chown = os.chown
+ except AttributeError:
+ _os_chown = None
_os_rename = os.rename
_os_unlink = os.unlink
_shutil_copyfile = shutil.copyfile
@@ -66,7 +69,7 @@ class dblite:
self._mode = mode
self._dict = {}
self._needs_sync = 00000
- if os.geteuid()==0 or os.getuid()==0:
+ if self._os_chown is not None and (os.geteuid()==0 or os.getuid()==0):
# running as root; chown back to current owner/group when done
try:
statinfo = os.stat(self._file_name)
@@ -118,7 +121,7 @@ class dblite:
except OSError: pass
self._os_unlink(self._file_name)
self._os_rename(self._tmp_name, self._file_name)
- if self._chown_to > 0: # don't chown to root or -1
+ if self._os_chown is not None and self._chown_to > 0: # don't chown to root or -1
try:
self._os_chown(self._file_name, self._chown_to, self._chgrp_to)
except OSError: