Copy Python's shutil.copytree into wscript.
It's broken in Python 2.4.4. One gets this message when trying to run configure: [...] Checking for SYS_clock_gettime : ok Checking for library rt : ok Checking for function clock_gettime : ok Checking for function nanosleep : ok Checking for function ceil : ok ---- deps/udns ---- Traceback (most recent call last): File "/path/to/node/tools/waf", line 148, in ? Scripting.prepare(t, cwd, VERSION, wafdir) File "/path/to/node/tools/.waf-1.5.8-3e327cd9534c48e6762f56fdb1332663/wafadmin/Scripting.py", line 102, in prepare prepare_impl(t,cwd,ver,wafdir) File "/path/to/node/tools/.waf-1.5.8-3e327cd9534c48e6762f56fdb1332663/wafadmin/Scripting.py", line 95, in prepare_impl main() File "/path/to/node/tools/.waf-1.5.8-3e327cd9534c48e6762f56fdb1332663/wafadmin/Scripting.py", line 130, in main fun(ctx) File "/path/to/node/tools/.waf-1.5.8-3e327cd9534c48e6762f56fdb1332663/wafadmin/Scripting.py", line 168, in configure conf.sub_config(['']) File "/path/to/node/tools/.waf-1.5.8-3e327cd9534c48e6762f56fdb1332663/wafadmin/Configure.py", line 100, in sub_config self.recurse(k,name='configure') File "/path/to/node/tools/.waf-1.5.8-3e327cd9534c48e6762f56fdb1332663/wafadmin/Utils.py", line 391, in recurse f(self) File "<string>", line 82, in configure File "<string>", line 48, in conf_subproject File "/usr/lib/python2.4/shutil.py", line 111, in copytree os.mkdir(dst) OSError: [Errno 2] No such file or directory: '/sites/rabidlabs.net/sandboxes/m/public_html/projects/0909.node/node/build/default/deps/udns' The problem is probably this: http://mail.python.org/pipermail/python-bugs-list/2005-January/027118.html As a solution I am copying 2.6's version of the function in.
This commit is contained in:
parent
4ba5b7e24b
commit
18da8ffaee
47
wscript
47
wscript
@ -37,6 +37,49 @@ def mkdir_p(dir):
|
||||
if not os.path.exists (dir):
|
||||
os.makedirs (dir)
|
||||
|
||||
# Copied from Python 2.6 because 2.4.4 at least is broken by not using
|
||||
# mkdirs
|
||||
# http://mail.python.org/pipermail/python-bugs-list/2005-January/027118.html
|
||||
def copytree(src, dst, symlinks=False, ignore=None):
|
||||
names = os.listdir(src)
|
||||
if ignore is not None:
|
||||
ignored_names = ignore(src, names)
|
||||
else:
|
||||
ignored_names = set()
|
||||
|
||||
os.makedirs(dst)
|
||||
errors = []
|
||||
for name in names:
|
||||
if name in ignored_names:
|
||||
continue
|
||||
srcname = os.path.join(src, name)
|
||||
dstname = os.path.join(dst, name)
|
||||
try:
|
||||
if symlinks and os.path.islink(srcname):
|
||||
linkto = os.readlink(srcname)
|
||||
os.symlink(linkto, dstname)
|
||||
elif os.path.isdir(srcname):
|
||||
copytree(srcname, dstname, symlinks, ignore)
|
||||
else:
|
||||
shutil.copy2(srcname, dstname)
|
||||
# XXX What about devices, sockets etc.?
|
||||
except (IOError, os.error), why:
|
||||
errors.append((srcname, dstname, str(why)))
|
||||
# catch the Error from the recursive copytree so that we can
|
||||
# continue with other files
|
||||
except Error, err:
|
||||
errors.extend(err.args[0])
|
||||
try:
|
||||
shutil.copystat(src, dst)
|
||||
except OSError, why:
|
||||
if WindowsError is not None and isinstance(why, WindowsError):
|
||||
# Copying file access times may fail on Windows
|
||||
pass
|
||||
else:
|
||||
errors.extend((src, dst, str(why)))
|
||||
if errors:
|
||||
raise Error, errors
|
||||
|
||||
def conf_subproject (conf, subdir, command=None):
|
||||
print("---- %s ----" % subdir)
|
||||
src = join(conf.srcdir, subdir)
|
||||
@ -45,7 +88,7 @@ def conf_subproject (conf, subdir, command=None):
|
||||
default_tgt = join(conf.blddir, "default", subdir)
|
||||
|
||||
if not os.path.exists(default_tgt):
|
||||
shutil.copytree(src, default_tgt)
|
||||
copytree(src, default_tgt, True)
|
||||
|
||||
if command:
|
||||
if os.system("cd %s && %s" % (default_tgt, command)) != 0:
|
||||
@ -54,7 +97,7 @@ def conf_subproject (conf, subdir, command=None):
|
||||
debug_tgt = join(conf.blddir, "debug", subdir)
|
||||
|
||||
if not os.path.exists(debug_tgt):
|
||||
shutil.copytree(default_tgt, debug_tgt)
|
||||
copytree(default_tgt, debug_tgt, True)
|
||||
|
||||
def configure(conf):
|
||||
conf.check_tool('compiler_cxx')
|
||||
|
Loading…
x
Reference in New Issue
Block a user