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):
|
if not os.path.exists (dir):
|
||||||
os.makedirs (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):
|
def conf_subproject (conf, subdir, command=None):
|
||||||
print("---- %s ----" % subdir)
|
print("---- %s ----" % subdir)
|
||||||
src = join(conf.srcdir, subdir)
|
src = join(conf.srcdir, subdir)
|
||||||
@ -45,7 +88,7 @@ def conf_subproject (conf, subdir, command=None):
|
|||||||
default_tgt = join(conf.blddir, "default", subdir)
|
default_tgt = join(conf.blddir, "default", subdir)
|
||||||
|
|
||||||
if not os.path.exists(default_tgt):
|
if not os.path.exists(default_tgt):
|
||||||
shutil.copytree(src, default_tgt)
|
copytree(src, default_tgt, True)
|
||||||
|
|
||||||
if command:
|
if command:
|
||||||
if os.system("cd %s && %s" % (default_tgt, command)) != 0:
|
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)
|
debug_tgt = join(conf.blddir, "debug", subdir)
|
||||||
|
|
||||||
if not os.path.exists(debug_tgt):
|
if not os.path.exists(debug_tgt):
|
||||||
shutil.copytree(default_tgt, debug_tgt)
|
copytree(default_tgt, debug_tgt, True)
|
||||||
|
|
||||||
def configure(conf):
|
def configure(conf):
|
||||||
conf.check_tool('compiler_cxx')
|
conf.check_tool('compiler_cxx')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user