Previously was dependent on how python was compiled, and this was causing
build errors for some Macintosh Snow Leopard users. The solution is to use
a functionality already in WAF which looks at the output of
echo | gcc -E -dM -
This is the error that was encountered:
: make
Waf: Entering directory `/dcs/06/csugds/node/ry-node-cfe5876/build'
Traceback (most recent call last):
File "tools/waf-light", line 148, in ?
Scripting.prepare(t, cwd, VERSION, wafdir)
File "/dcs/06/csugds/node/ry-node-cfe5876/tools/wafadmin/Scripting.py", line 142, in prepare
prepare_impl(t, cwd, ver, wafdir)
File "/dcs/06/csugds/node/ry-node-cfe5876/tools/wafadmin/Scripting.py", line 132, in prepare_impl
main()
File "/dcs/06/csugds/node/ry-node-cfe5876/tools/wafadmin/Scripting.py", line 185, in main
fun(ctx)
File "/dcs/06/csugds/node/ry-node-cfe5876/tools/wafadmin/Scripting.py", line 382, in build
return build_impl(bld)
File "/dcs/06/csugds/node/ry-node-cfe5876/tools/wafadmin/Scripting.py", line 395, in build_impl
bld.add_subdirs([os.path.split(Utils.g_module.root_path)[0]])
File "/dcs/06/csugds/node/ry-node-cfe5876/tools/wafadmin/Build.py", line 924, in add_subdirs
self.recurse(dirs, 'build')
File "/dcs/06/csugds/node/ry-node-cfe5876/tools/wafadmin/Utils.py", line 599, in recurse
f(self)
File "<string>", line 312, in build
File "/dcs/06/csugds/node/ry-node-cfe5876/tools/wafadmin/TaskGen.py", line 297, in clone
setattr(newobj, x, copy.copy(getattr(self, x)))
File "/usr/lib/python2.4/copy.py", line 108, in copy
return _reconstruct(x, rv, 0)
File "/usr/lib/python2.4/copy.py", line 336, in _reconstruct
y = callable(*args)
File "/usr/lib/python2.4/copy_reg.py", line 92, in __newobj__
return cls.__new__(cls, *args)
TypeError: function() takes at least 2 arguments (0 given)
make: *** [all] Error 1
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.
In Snow Leopard "platform.machine()" returns "i386" while
"platform.architecture()" returns ('64bit',''). Using information from both
we can determine the proper architecture
This reverts commit ea29e137b5 re-enabling the
64bit build on Macintosh.
I don't have access to this OS to fix the issue properly, so for the moment
I'm reverting back to 32bit build on Darwin. We changed to native 64bit in
8ddf930901.
Thanks to Johan Dahlberg and Tim Caswell for reporting and debugging this.
Had to add some waf hackery to override V8's architecture choice. They
probably have a reason for defaulting still to IA32, but all tests are
passing for me, and it makes it easier on users-and I think chrome is using
x64 builds too. So let's go for it!